diff options
267 files changed, 16913 insertions, 11096 deletions
diff --git a/.bzrignore b/.bzrignore index 7c4b11b10..dab38cf71 100644 --- a/.bzrignore +++ b/.bzrignore @@ -10,6 +10,8 @@ build/ 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 @@ -9,8 +9,8 @@ endif .PHONY: default default: startup all -.PHONY: headers library clean veryclean all binary program doc test -all headers library clean veryclean binary program doc dirs test: +.PHONY: headers library clean veryclean all binary program doc test update-po +startup all headers library clean veryclean binary program doc dirs test update-po: $(MAKE) -C apt-pkg $@ $(MAKE) -C apt-inst $@ $(MAKE) -C methods $@ @@ -21,6 +21,8 @@ all headers library clean veryclean binary program doc dirs test: $(MAKE) -C po $@ $(MAKE) -C test $@ +update-po: startup + # Some very common aliases .PHONY: maintainer-clean dist-clean distclean pristine sanity maintainer-clean dist-clean distclean pristine sanity: veryclean diff --git a/apt-inst/contrib/arfile.cc b/apt-inst/contrib/arfile.cc index 8018f4d30..2dee1a40d 100644 --- a/apt-inst/contrib/arfile.cc +++ b/apt-inst/contrib/arfile.cc @@ -14,13 +14,17 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/arfile.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> #include <apt-pkg/error.h> #include <stdlib.h> - /*}}}*/ + #include <apti18n.h> + /*}}}*/ struct ARArchive::MemberHeader { @@ -112,7 +116,7 @@ bool ARArchive::LoadHeaders() { unsigned int I = sizeof(Head.Name) - 1; for (; Head.Name[I] == ' ' || Head.Name[I] == '/'; I--); - Memb->Name = string(Head.Name,I+1); + Memb->Name = std::string(Head.Name,I+1); } // Account for the AR header alignment diff --git a/apt-inst/contrib/arfile.h b/apt-inst/contrib/arfile.h index 7f6c68302..0f62a34a0 100644 --- a/apt-inst/contrib/arfile.h +++ b/apt-inst/contrib/arfile.h @@ -17,7 +17,11 @@ #include <string> +#ifndef APT_8_CLEANER_HEADERS #include <apt-pkg/fileutl.h> +#endif + +class FileFd; class ARArchive { @@ -49,12 +53,12 @@ class ARArchive struct ARArchive::Member { // Fields from the header - string Name; + std::string Name; unsigned long MTime; unsigned long UID; unsigned long GID; unsigned long Mode; - unsigned long Size; + unsigned long long Size; // Location of the data. unsigned long Start; diff --git a/apt-inst/contrib/extracttar.cc b/apt-inst/contrib/extracttar.cc index 01b6b3836..12919a7cd 100644 --- a/apt-inst/contrib/extracttar.cc +++ b/apt-inst/contrib/extracttar.cc @@ -16,8 +16,10 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include <apt-pkg/extracttar.h> +#include<config.h> +#include <apt-pkg/dirstream.h> +#include <apt-pkg/extracttar.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> @@ -28,6 +30,7 @@ #include <signal.h> #include <fcntl.h> #include <iostream> + #include <apti18n.h> /*}}}*/ diff --git a/apt-inst/contrib/extracttar.h b/apt-inst/contrib/extracttar.h index 42f8ef534..4b29df314 100644 --- a/apt-inst/contrib/extracttar.h +++ b/apt-inst/contrib/extracttar.h @@ -15,11 +15,16 @@ #define PKGLIB_EXTRACTTAR_H #include <apt-pkg/fileutl.h> -#include <apt-pkg/dirstream.h> -#include <algorithm> +#include <string> +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/dirstream.h> +#include <algorithm> using std::min; +#endif + +class pkgDirStream; class ExtractTar { @@ -38,7 +43,7 @@ class ExtractTar int GZPid; FileFd InFd; bool Eof; - string DecompressProg; + std::string DecompressProg; // Fork and reap gzip bool StartGzip(); @@ -48,7 +53,7 @@ class ExtractTar bool Go(pkgDirStream &Stream); - ExtractTar(FileFd &Fd,unsigned long Max,string DecompressionProgram); + ExtractTar(FileFd &Fd,unsigned long Max,std::string DecompressionProgram); virtual ~ExtractTar(); }; diff --git a/apt-inst/database.cc b/apt-inst/database.cc deleted file mode 100644 index a5020f3d7..000000000 --- a/apt-inst/database.cc +++ /dev/null @@ -1,26 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -// $Id: database.cc,v 1.2 2001/02/20 07:03:16 jgg Exp $ -/* ###################################################################### - - Data Base Abstraction - - ##################################################################### */ - /*}}}*/ -// Include Files /*{{{*/ -#include <apt-pkg/database.h> - /*}}}*/ - -// DataBase::GetMetaTmp - Get the temp dir /*{{{*/ -// --------------------------------------------------------------------- -/* This re-initializes the meta temporary directory if it hasn't yet - been inited for this cycle. The flag is the emptyness of MetaDir */ -bool pkgDataBase::GetMetaTmp(string &Dir) -{ - if (MetaDir.empty() == true) - if (InitMetaTmp(MetaDir) == false) - return false; - Dir = MetaDir; - return true; -} - /*}}}*/ diff --git a/apt-inst/database.h b/apt-inst/database.h deleted file mode 100644 index ef45bc2d6..000000000 --- a/apt-inst/database.h +++ /dev/null @@ -1,52 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -// $Id: database.h,v 1.2 2001/02/20 07:03:16 jgg Exp $ -/* ###################################################################### - - Data Base Abstraction - - This class provides a simple interface to an abstract notion of a - database directory for storing state information about the system. - - The 'Meta' information for a package is the control information and - setup scripts stored inside the archive. GetMetaTmp returns the name of - a directory that is used to store named files containing the control - information. - - The File Listing is the database of installed files. It is loaded - into the memory/persistent cache structure by the ReadFileList method. - - ##################################################################### */ - /*}}}*/ -#ifndef PKGLIB_DATABASE_H -#define PKGLIB_DATABASE_H - -#include <apt-pkg/filelist.h> -#include <apt-pkg/pkgcachegen.h> - -class pkgDataBase -{ - protected: - - pkgCacheGenerator *Cache; - pkgFLCache *FList; - string MetaDir; - virtual bool InitMetaTmp(string &Dir) = 0; - - public: - - // Some manipulators for the cache and generator - inline pkgCache &GetCache() {return Cache->GetCache();}; - inline pkgFLCache &GetFLCache() {return *FList;}; - inline pkgCacheGenerator &GetGenerator() {return *Cache;}; - - bool GetMetaTmp(string &Dir); - virtual bool ReadyFileList(OpProgress &Progress) = 0; - virtual bool ReadyPkgCache(OpProgress &Progress) = 0; - virtual bool LoadChanges() = 0; - - pkgDataBase() : Cache(0), FList(0) {}; - virtual ~pkgDataBase() {delete Cache; delete FList;}; -}; - -#endif diff --git a/apt-inst/deb/debfile.cc b/apt-inst/deb/debfile.cc index a40cd1ae8..ab4037915 100644 --- a/apt-inst/deb/debfile.cc +++ b/apt-inst/deb/debfile.cc @@ -16,6 +16,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/debfile.h> #include <apt-pkg/extracttar.h> #include <apt-pkg/error.h> @@ -87,42 +89,6 @@ const ARArchive::Member *debDebFile::GotoMember(const char *Name) return Member; } /*}}}*/ -// DebFile::ExtractControl - Extract Control information /*{{{*/ -// --------------------------------------------------------------------- -/* Extract the control information into the Database's temporary - directory. */ -bool debDebFile::ExtractControl(pkgDataBase &DB) -{ - // Get the archive member and positition the file - const ARArchive::Member *Member = GotoMember("control.tar.gz"); - if (Member == 0) - return false; - - // Prepare Tar - ControlExtract Extract; - ExtractTar Tar(File,Member->Size,"gzip"); - if (_error->PendingError() == true) - return false; - - // Get into the temporary directory - string Cwd = SafeGetCWD(); - string Tmp; - if (DB.GetMetaTmp(Tmp) == false) - return false; - if (chdir(Tmp.c_str()) != 0) - return _error->Errno("chdir",_("Couldn't change to %s"),Tmp.c_str()); - - // Do extraction - if (Tar.Go(Extract) == false) - return false; - - // Switch out of the tmp directory. - if (chdir(Cwd.c_str()) != 0) - chdir("/"); - - return true; -} - /*}}}*/ // DebFile::ExtractArchive - Extract the archive data itself /*{{{*/ // --------------------------------------------------------------------- /* Simple wrapper around tar.. */ @@ -164,32 +130,6 @@ bool debDebFile::ExtractArchive(pkgDirStream &Stream) return Tar.Go(Stream); } /*}}}*/ -// DebFile::MergeControl - Merge the control information /*{{{*/ -// --------------------------------------------------------------------- -/* This reads the extracted control file into the cache and returns the - version that was parsed. All this really does is select the correct - parser and correct file to parse. */ -pkgCache::VerIterator debDebFile::MergeControl(pkgDataBase &DB) -{ - // Open the control file - string Tmp; - if (DB.GetMetaTmp(Tmp) == false) - return pkgCache::VerIterator(DB.GetCache()); - FileFd Fd(Tmp + "control",FileFd::ReadOnly); - if (_error->PendingError() == true) - return pkgCache::VerIterator(DB.GetCache()); - - // Parse it - debListParser Parse(&Fd); - pkgCache::VerIterator Ver(DB.GetCache()); - if (DB.GetGenerator().MergeList(Parse,&Ver) == false) - return pkgCache::VerIterator(DB.GetCache()); - - if (Ver.end() == true) - _error->Error(_("Failed to locate a valid control file")); - return Ver; -} - /*}}}*/ // DebFile::ControlExtract::DoItem - Control Tar Extraction /*{{{*/ // --------------------------------------------------------------------- diff --git a/apt-inst/deb/debfile.h b/apt-inst/deb/debfile.h index 6b9f8ffc8..d94b74446 100644 --- a/apt-inst/deb/debfile.h +++ b/apt-inst/deb/debfile.h @@ -25,9 +25,11 @@ #include <apt-pkg/arfile.h> -#include <apt-pkg/database.h> #include <apt-pkg/dirstream.h> #include <apt-pkg/tagfile.h> +#include <apt-pkg/pkgcache.h> + +class FileFd; class debDebFile { @@ -39,13 +41,10 @@ class debDebFile bool CheckMember(const char *Name); public: - class ControlExtract; class MemControlExtract; - - bool ExtractControl(pkgDataBase &DB); + bool ExtractArchive(pkgDirStream &Stream); - pkgCache::VerIterator MergeControl(pkgDataBase &DB); const ARArchive::Member *GotoMember(const char *Name); inline FileFd &GetFile() {return File;}; @@ -68,7 +67,7 @@ class debDebFile::MemControlExtract : public pkgDirStream char *Control; pkgTagSection Section; unsigned long Length; - string Member; + std::string Member; // Members from DirStream virtual bool DoItem(Item &Itm,int &Fd); @@ -81,7 +80,7 @@ class debDebFile::MemControlExtract : public pkgDirStream bool TakeControl(const void *Data,unsigned long Size); MemControlExtract() : IsControl(false), Control(0), Length(0), Member("control") {}; - MemControlExtract(string Member) : IsControl(false), Control(0), Length(0), Member(Member) {}; + MemControlExtract(std::string Member) : IsControl(false), Control(0), Length(0), Member(Member) {}; ~MemControlExtract() {delete [] Control;}; }; /*}}}*/ diff --git a/apt-inst/deb/dpkgdb.cc b/apt-inst/deb/dpkgdb.cc deleted file mode 100644 index a75cf59ca..000000000 --- a/apt-inst/deb/dpkgdb.cc +++ /dev/null @@ -1,490 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -// $Id: dpkgdb.cc,v 1.7.2.1 2004/01/16 18:58:50 mdz Exp $ -/* ###################################################################### - - DPKGv1 Database Implemenation - - This class provides parsers and other implementations for the DPKGv1 - database. It reads the diversion file, the list files and the status - file to build both the list of currently installed files and the - currently installed package list. - - ##################################################################### */ - /*}}}*/ -// Include Files /*{{{*/ -#include <apt-pkg/dpkgdb.h> -#include <apt-pkg/configuration.h> -#include <apt-pkg/error.h> -#include <apt-pkg/progress.h> -#include <apt-pkg/tagfile.h> -#include <apt-pkg/strutl.h> - -#include <stdio.h> -#include <errno.h> -#include <sys/stat.h> -#include <sys/mman.h> -#include <fcntl.h> -#include <unistd.h> -#include <ctype.h> -#include <iostream> -#include <apti18n.h> - /*}}}*/ -using namespace std; - -// EraseDir - Erase A Directory /*{{{*/ -// --------------------------------------------------------------------- -/* This is necessary to create a new empty sub directory. The caller should - invoke mkdir after this with the proper permissions and check for - error. Maybe stick this in fileutils */ -static bool EraseDir(const char *Dir) -{ - // First we try a simple RM - if (rmdir(Dir) == 0 || - errno == ENOENT) - return true; - - // A file? Easy enough.. - if (errno == ENOTDIR) - { - if (unlink(Dir) != 0) - return _error->Errno("unlink",_("Failed to remove %s"),Dir); - return true; - } - - // Should not happen - if (errno != ENOTEMPTY) - return _error->Errno("rmdir",_("Failed to remove %s"),Dir); - - // Purge it using rm - pid_t Pid = ExecFork(); - - // Spawn the subprocess - if (Pid == 0) - { - execlp(_config->Find("Dir::Bin::rm","/bin/rm").c_str(), - "rm","-rf","--",Dir,(char *)NULL); - _exit(100); - } - return ExecWait(Pid,_config->Find("dir::bin::rm","/bin/rm").c_str()); -} - /*}}}*/ -// DpkgDB::debDpkgDB - Constructor /*{{{*/ -// --------------------------------------------------------------------- -/* */ -debDpkgDB::debDpkgDB() : CacheMap(0), FileMap(0) -{ - AdminDir = flNotFile(_config->Find("Dir::State::status")); - DiverInode = 0; - DiverTime = 0; -} - /*}}}*/ -// DpkgDB::~debDpkgDB - Destructor /*{{{*/ -// --------------------------------------------------------------------- -/* */ -debDpkgDB::~debDpkgDB() -{ - delete Cache; - Cache = 0; - delete CacheMap; - CacheMap = 0; - - delete FList; - FList = 0; - delete FileMap; - FileMap = 0; -} - /*}}}*/ -// DpkgDB::InitMetaTmp - Get the temp dir for meta information /*{{{*/ -// --------------------------------------------------------------------- -/* This creats+empties the meta temporary directory /var/lib/dpkg/tmp.ci - Only one package at a time can be using the returned meta directory. */ -bool debDpkgDB::InitMetaTmp(string &Dir) -{ - string Tmp = AdminDir + "tmp.ci/"; - if (EraseDir(Tmp.c_str()) == false) - return _error->Error(_("Unable to create %s"),Tmp.c_str()); - if (mkdir(Tmp.c_str(),0755) != 0) - return _error->Errno("mkdir",_("Unable to create %s"),Tmp.c_str()); - - // Verify it is on the same filesystem as the main info directory - dev_t Dev; - struct stat St; - if (stat((AdminDir + "info").c_str(),&St) != 0) - return _error->Errno("stat",_("Failed to stat %sinfo"),AdminDir.c_str()); - Dev = St.st_dev; - if (stat(Tmp.c_str(),&St) != 0) - return _error->Errno("stat",_("Failed to stat %s"),Tmp.c_str()); - if (Dev != St.st_dev) - return _error->Error(_("The info and temp directories need to be on the same filesystem")); - - // Done - Dir = Tmp; - return true; -} - /*}}}*/ -// DpkgDB::ReadyPkgCache - Prepare the cache with the current status /*{{{*/ -// --------------------------------------------------------------------- -/* This reads in the status file into an empty cache. This really needs - to be somehow unified with the high level APT notion of the Database - directory, but there is no clear way on how to do that yet. */ -bool debDpkgDB::ReadyPkgCache(OpProgress &Progress) -{ - if (Cache != 0) - { - Progress.OverallProgress(1,1,1,_("Reading package lists")); - return true; - } - - if (CacheMap != 0) - { - delete CacheMap; - CacheMap = 0; - } - - if (pkgCacheGenerator::MakeOnlyStatusCache(&Progress,&CacheMap) == false) - return false; - Cache->DropProgress(); - - return true; -} - /*}}}*/ -// DpkgDB::ReadFList - Read the File Listings in /*{{{*/ -// --------------------------------------------------------------------- -/* This reads the file listing in from the state directory. This is a - performance critical routine, as it needs to parse about 50k lines of - text spread over a hundred or more files. For an initial cold start - most of the time is spent in reading file inodes and so on, not - actually parsing. */ -bool debDpkgDB::ReadFList(OpProgress &Progress) -{ - // Count the number of packages we need to read information for - unsigned long Total = 0; - pkgCache &Cache = this->Cache->GetCache(); - for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) - { - // Only not installed packages have no files. - if (I->CurrentState == pkgCache::State::NotInstalled) - continue; - Total++; - } - - /* Switch into the admin dir, this prevents useless lookups for the - path components */ - string Cwd = SafeGetCWD(); - if (chdir((AdminDir + "info/").c_str()) != 0) - return _error->Errno("chdir",_("Failed to change to the admin dir %sinfo"),AdminDir.c_str()); - - // Allocate a buffer. Anything larger than this buffer will be mmaped - unsigned long BufSize = 32*1024; - char *Buffer = new char[BufSize]; - - // Begin Loading them - unsigned long Count = 0; - char Name[300]; - for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; I++) - { - /* Only not installed packages have no files. ConfFile packages have - file lists but we don't want to read them in */ - if (I->CurrentState == pkgCache::State::NotInstalled || - I->CurrentState == pkgCache::State::ConfigFiles) - continue; - - // Fetch a package handle to associate with the file - pkgFLCache::PkgIterator FlPkg = FList->GetPkg(I.Name(),0,true); - if (FlPkg.end() == true) - { - _error->Error(_("Internal error getting a package name")); - break; - } - - Progress.OverallProgress(Count,Total,1,_("Reading file listing")); - - // Open the list file - snprintf(Name,sizeof(Name),"%s.list",I.Name()); - int Fd = open(Name,O_RDONLY); - - /* Okay this is very strange and bad.. Best thing is to bail and - instruct the user to look into it. */ - struct stat Stat; - if (Fd == -1 || fstat(Fd,&Stat) != 0) - { - _error->Errno("open",_("Failed to open the list file '%sinfo/%s'. If you " - "cannot restore this file then make it empty " - "and immediately re-install the same version of the package!"), - AdminDir.c_str(),Name); - break; - } - - // Set File to be a memory buffer containing the whole file - char *File; - if ((unsigned)Stat.st_size < BufSize) - { - if (read(Fd,Buffer,Stat.st_size) != Stat.st_size) - { - _error->Errno("read",_("Failed reading the list file %sinfo/%s"), - AdminDir.c_str(),Name); - close(Fd); - break; - } - File = Buffer; - } - else - { - // Use mmap - File = (char *)mmap(0,Stat.st_size,PROT_READ,MAP_PRIVATE,Fd,0); - if (File == (char *)(-1)) - { - _error->Errno("mmap",_("Failed reading the list file %sinfo/%s"), - AdminDir.c_str(),Name); - close(Fd); - break; - } - } - - // Parse it - const char *Start = File; - const char *End = File; - const char *Finish = File + Stat.st_size; - for (; End < Finish; End++) - { - // Not an end of line - if (*End != '\n' && End + 1 < Finish) - continue; - - // Skip blank lines - if (End - Start > 1) - { - pkgFLCache::NodeIterator Node = FList->GetNode(Start,End, - FlPkg.Offset(),true,false); - if (Node.end() == true) - { - _error->Error(_("Internal error getting a node")); - break; - } - } - - // Skip past the end of line - for (; *End == '\n' && End < Finish; End++); - Start = End; - } - - close(Fd); - if ((unsigned)Stat.st_size >= BufSize) - munmap((caddr_t)File,Stat.st_size); - - // Failed - if (End < Finish) - break; - - Count++; - } - - delete [] Buffer; - if (chdir(Cwd.c_str()) != 0) - chdir("/"); - - return !_error->PendingError(); -} - /*}}}*/ -// DpkgDB::ReadDiversions - Load the diversions file /*{{{*/ -// --------------------------------------------------------------------- -/* Read the diversion file in from disk. This is usually invoked by - LoadChanges before performing an operation that uses the FLCache. */ -bool debDpkgDB::ReadDiversions() -{ - struct stat Stat; - if (stat((AdminDir + "diversions").c_str(),&Stat) != 0) - return true; - - if (_error->PendingError() == true) - return false; - - FILE *Fd = fopen((AdminDir + "diversions").c_str(),"r"); - if (Fd == 0) - return _error->Errno("fopen",_("Failed to open the diversions file %sdiversions"),AdminDir.c_str()); - - FList->BeginDiverLoad(); - while (1) - { - char From[300]; - char To[300]; - char Package[100]; - - // Read the three lines in - if (fgets(From,sizeof(From),Fd) == 0) - break; - if (fgets(To,sizeof(To),Fd) == 0 || - fgets(Package,sizeof(Package),Fd) == 0) - { - _error->Error(_("The diversion file is corrupted")); - break; - } - - // Strip the \ns - unsigned long Len = strlen(From); - if (Len < 2 || From[Len-1] != '\n') - _error->Error(_("Invalid line in the diversion file: %s"),From); - else - From[Len-1] = 0; - Len = strlen(To); - if (Len < 2 || To[Len-1] != '\n') - _error->Error(_("Invalid line in the diversion file: %s"),To); - else - To[Len-1] = 0; - Len = strlen(Package); - if (Len < 2 || Package[Len-1] != '\n') - _error->Error(_("Invalid line in the diversion file: %s"),Package); - else - Package[Len-1] = 0; - - // Make sure the lines were parsed OK - if (_error->PendingError() == true) - break; - - // Fetch a package - if (strcmp(Package,":") == 0) - Package[0] = 0; - pkgFLCache::PkgIterator FlPkg = FList->GetPkg(Package,0,true); - if (FlPkg.end() == true) - { - _error->Error(_("Internal error getting a package name")); - break; - } - - // Install the diversion - if (FList->AddDiversion(FlPkg,From,To) == false) - { - _error->Error(_("Internal error adding a diversion")); - break; - } - } - if (_error->PendingError() == false) - FList->FinishDiverLoad(); - - DiverInode = Stat.st_ino; - DiverTime = Stat.st_mtime; - - fclose(Fd); - return !_error->PendingError(); -} - /*}}}*/ -// DpkgDB::ReadFileList - Read the file listing /*{{{*/ -// --------------------------------------------------------------------- -/* Read in the file listing. The file listing is created from three - sources, *.list, Conffile sections and the Diversion table. */ -bool debDpkgDB::ReadyFileList(OpProgress &Progress) -{ - if (Cache == 0) - return _error->Error(_("The pkg cache must be initialized first")); - if (FList != 0) - { - Progress.OverallProgress(1,1,1,_("Reading file listing")); - return true; - } - - // Create the cache and read in the file listing - FileMap = new DynamicMMap(MMap::Public); - FList = new pkgFLCache(*FileMap); - if (_error->PendingError() == true || - ReadFList(Progress) == false || - ReadConfFiles() == false || - ReadDiversions() == false) - { - delete FList; - delete FileMap; - FileMap = 0; - FList = 0; - return false; - } - - cout << "Node: " << FList->HeaderP->NodeCount << ',' << FList->HeaderP->UniqNodes << endl; - cout << "Dir: " << FList->HeaderP->DirCount << endl; - cout << "Package: " << FList->HeaderP->PackageCount << endl; - cout << "HashSize: " << FList->HeaderP->HashSize << endl; - cout << "Size: " << FileMap->Size() << endl; - cout << endl; - - return true; -} - /*}}}*/ -// DpkgDB::ReadConfFiles - Read the conf file sections from the s-file /*{{{*/ -// --------------------------------------------------------------------- -/* Reading the conf files is done by reparsing the status file. This is - actually rather fast so it is no big deal. */ -bool debDpkgDB::ReadConfFiles() -{ - FileFd File(_config->FindFile("Dir::State::status"),FileFd::ReadOnly); - pkgTagFile Tags(&File); - if (_error->PendingError() == true) - return false; - - pkgTagSection Section; - while (1) - { - // Skip to the next section - unsigned long Offset = Tags.Offset(); - if (Tags.Step(Section) == false) - break; - - // Parse the line - const char *Start; - const char *Stop; - if (Section.Find("Conffiles",Start,Stop) == false) - continue; - - const char *PkgStart; - const char *PkgEnd; - if (Section.Find("Package",PkgStart,PkgEnd) == false) - return _error->Error(_("Failed to find a Package: header, offset %lu"),Offset); - - // Snag a package record for it - pkgFLCache::PkgIterator FlPkg = FList->GetPkg(PkgStart,PkgEnd,true); - if (FlPkg.end() == true) - return _error->Error(_("Internal error getting a package name")); - - // Parse the conf file lines - while (1) - { - for (; isspace(*Start) != 0 && Start < Stop; Start++); - if (Start == Stop) - break; - - // Split it into words - const char *End = Start; - for (; isspace(*End) == 0 && End < Stop; End++); - const char *StartMd5 = End; - for (; isspace(*StartMd5) != 0 && StartMd5 < Stop; StartMd5++); - const char *EndMd5 = StartMd5; - for (; isspace(*EndMd5) == 0 && EndMd5 < Stop; EndMd5++); - if (StartMd5 == EndMd5 || Start == End) - return _error->Error(_("Bad ConfFile section in the status file. Offset %lu"),Offset); - - // Insert a new entry - unsigned char MD5[16]; - if (Hex2Num(string(StartMd5,EndMd5-StartMd5),MD5,16) == false) - return _error->Error(_("Error parsing MD5. Offset %lu"),Offset); - - if (FList->AddConfFile(Start,End,FlPkg,MD5) == false) - return false; - Start = EndMd5; - } - } - - return true; -} - /*}}}*/ -// DpkgDB::LoadChanges - Read in any changed state files /*{{{*/ -// --------------------------------------------------------------------- -/* The only file in the dpkg system that can change while packages are - unpacking is the diversions file. */ -bool debDpkgDB::LoadChanges() -{ - struct stat Stat; - if (stat((AdminDir + "diversions").c_str(),&Stat) != 0) - return true; - if (DiverInode == Stat.st_ino && DiverTime == Stat.st_mtime) - return true; - return ReadDiversions(); -} - /*}}}*/ diff --git a/apt-inst/deb/dpkgdb.h b/apt-inst/deb/dpkgdb.h deleted file mode 100644 index 125845f96..000000000 --- a/apt-inst/deb/dpkgdb.h +++ /dev/null @@ -1,50 +0,0 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -// $Id: dpkgdb.h,v 1.2 2001/02/20 07:03:17 jgg Exp $ -/* ###################################################################### - - DPKGv1 Data Base Implemenation - - The DPKGv1 database is typically stored in /var/lib/dpkg/. For - DPKGv1 the 'meta' information is the contents of the .deb control.tar.gz - member prepended by the package name. The meta information is unpacked - in its temporary directory and then migrated into the main list dir - at a checkpoint. - - Journaling is providing by syncronized file writes to the updates sub - directory. - - ##################################################################### */ - /*}}}*/ -#ifndef PKGLIB_DPKGDB_H -#define PKGLIB_DPKGDB_H - - -#include <apt-pkg/database.h> - -class debDpkgDB : public pkgDataBase -{ - protected: - - string AdminDir; - DynamicMMap *CacheMap; - DynamicMMap *FileMap; - unsigned long DiverInode; - signed long DiverTime; - - virtual bool InitMetaTmp(string &Dir); - bool ReadFList(OpProgress &Progress); - bool ReadDiversions(); - bool ReadConfFiles(); - - public: - - virtual bool ReadyFileList(OpProgress &Progress); - virtual bool ReadyPkgCache(OpProgress &Progress); - virtual bool LoadChanges(); - - debDpkgDB(); - virtual ~debDpkgDB(); -}; - -#endif diff --git a/apt-inst/dirstream.cc b/apt-inst/dirstream.cc index 9b6a56848..65d1aa188 100644 --- a/apt-inst/dirstream.cc +++ b/apt-inst/dirstream.cc @@ -11,6 +11,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/dirstream.h> #include <apt-pkg/error.h> @@ -44,15 +46,13 @@ bool pkgDirStream::DoItem(Item &Itm,int &Fd) // fchmod deals with umask and fchown sets the ownership if (fchmod(iFd,Itm.Mode) != 0) { - _error->Errno("fchmod",_("Failed to write file %s"), Itm.Name); close(iFd); - return false; + return _error->Errno("fchmod",_("Failed to write file %s"), Itm.Name); } if (fchown(iFd,Itm.UID,Itm.GID) != 0 && errno != EPERM) { - return _error->Errno("fchown",_("Failed to write file %s"), Itm.Name); close(iFd); - return false; + return _error->Errno("fchown",_("Failed to write file %s"), Itm.Name); } Fd = iFd; return true; diff --git a/apt-inst/extract.cc b/apt-inst/extract.cc index cd8edb27a..29e163028 100644 --- a/apt-inst/extract.cc +++ b/apt-inst/extract.cc @@ -44,9 +44,12 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/extract.h> #include <apt-pkg/error.h> #include <apt-pkg/debversion.h> +#include <apt-pkg/fileutl.h> #include <sys/stat.h> #include <stdio.h> diff --git a/apt-inst/extract.h b/apt-inst/extract.h index 71222983c..7143fa409 100644 --- a/apt-inst/extract.h +++ b/apt-inst/extract.h @@ -33,7 +33,7 @@ class pkgExtract : public pkgDirStream bool HandleOverwrites(pkgFLCache::NodeIterator Nde, bool DiverCheck = false); - bool CheckDirReplace(string Dir,unsigned int Depth = 0); + bool CheckDirReplace(std::string Dir,unsigned int Depth = 0); public: diff --git a/apt-inst/filelist.cc b/apt-inst/filelist.cc index 060aa53d7..879c07855 100644 --- a/apt-inst/filelist.cc +++ b/apt-inst/filelist.cc @@ -32,6 +32,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/filelist.h> #include <apt-pkg/mmap.h> #include <apt-pkg/error.h> diff --git a/apt-inst/filelist.h b/apt-inst/filelist.h index c74a310e4..0405d61df 100644 --- a/apt-inst/filelist.h +++ b/apt-inst/filelist.h @@ -28,9 +28,10 @@ #ifndef PKGLIB_FILELIST_H #define PKGLIB_FILELIST_H +#include <apt-pkg/mmap.h> #include <cstring> -#include <apt-pkg/mmap.h> +#include <string> class pkgFLCache { @@ -48,7 +49,7 @@ class pkgFLCache class DiverIterator; protected: - string CacheFile; + std::string CacheFile; DynamicMMap ⤅ map_ptrloc LastTreeLookup; unsigned long LastLookupSize; diff --git a/apt-inst/makefile b/apt-inst/makefile index 785dc62ba..c716b8c96 100644 --- a/apt-inst/makefile +++ b/apt-inst/makefile @@ -14,7 +14,7 @@ include ../buildlib/libversion.mak # The library name LIBRARY=apt-inst -MAJOR=1.2 +MAJOR=1.4 MINOR=0 SLIBS=$(PTHREADLIB) -lapt-pkg APT_DOMAIN:=libapt-inst$(MAJOR) @@ -23,12 +23,11 @@ APT_DOMAIN:=libapt-inst$(MAJOR) SOURCE = contrib/extracttar.cc contrib/arfile.cc # Source code for the main library -SOURCE+= filelist.cc database.cc dirstream.cc extract.cc \ - deb/dpkgdb.cc deb/debfile.cc +SOURCE+= filelist.cc dirstream.cc extract.cc deb/debfile.cc # Public header files -HEADERS = extracttar.h arfile.h filelist.h database.h extract.h \ - dpkgdb.h dirstream.h debfile.h +HEADERS = extracttar.h arfile.h filelist.h extract.h \ + dirstream.h debfile.h HEADERS := $(addprefix apt-pkg/,$(HEADERS)) include $(LIBRARY_H) diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index eda45d7be..a30e98858 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -13,6 +13,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/acquire-item.h> #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> @@ -23,9 +25,9 @@ #include <apt-pkg/md5.h> #include <apt-pkg/sha1.h> #include <apt-pkg/tagfile.h> +#include <apt-pkg/indexrecords.h> +#include <apt-pkg/metaindex.h> -#include <apti18n.h> - #include <sys/stat.h> #include <unistd.h> #include <errno.h> @@ -33,6 +35,8 @@ #include <sstream> #include <stdio.h> #include <ctime> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -94,7 +98,7 @@ void pkgAcquire::Item::Failed(string Message,pkgAcquire::MethodConfig *Cnf) // --------------------------------------------------------------------- /* Stash status and the file size. Note that setting Complete means sub-phases of the acquire process such as decompresion are operating */ -void pkgAcquire::Item::Start(string /*Message*/,unsigned long Size) +void pkgAcquire::Item::Start(string /*Message*/,unsigned long long Size) { Status = StatFetching; if (FileSize == 0 && Complete == false) @@ -104,7 +108,7 @@ void pkgAcquire::Item::Start(string /*Message*/,unsigned long Size) // Acquire::Item::Done - Item downloaded OK /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgAcquire::Item::Done(string Message,unsigned long Size,string Hash, +void pkgAcquire::Item::Done(string Message,unsigned long long Size,string Hash, pkgAcquire::MethodConfig *Cnf) { // We just downloaded something.. @@ -185,14 +189,14 @@ void pkgAcquire::Item::ReportMirrorFailure(string FailCode) /*}}}*/ // AcqSubIndex::AcqSubIndex - Constructor /*{{{*/ // --------------------------------------------------------------------- -/* Get the Index file first and see if there are languages available - * If so, create a pkgAcqIndexTrans for the found language(s). - */ +/* Get a sub-index file based on checksums from a 'master' file and + possibly query additional files */ pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire *Owner, string const &URI, string const &URIDesc, string const &ShortDesc, HashString const &ExpectedHash) : Item(Owner), ExpectedHash(ExpectedHash) { + /* XXX: Beware: Currently this class does nothing (of value) anymore ! */ Debug = _config->FindB("Debug::pkgAcquire::SubIndex",false); DestFile = _config->FindDir("Dir::State::lists") + "partial/"; @@ -232,20 +236,10 @@ void pkgAcqSubIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{* Status = StatDone; Dequeue(); - // No good Index is provided, so try guessing - std::vector<std::string> langs = APT::Configuration::getLanguages(true); - for (std::vector<std::string>::const_iterator l = langs.begin(); - l != langs.end(); ++l) - { - if (*l == "none") continue; - string const file = "Translation-" + *l; - new pkgAcqIndexTrans(Owner, Desc.URI.substr(0, Desc.URI.rfind('/')+1).append(file), - Desc.Description.erase(Desc.Description.rfind(' ')+1).append(file), - file); - } + // No good Index is provided } /*}}}*/ -void pkgAcqSubIndex::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ +void pkgAcqSubIndex::Done(string Message,unsigned long long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@ -301,38 +295,7 @@ bool pkgAcqSubIndex::ParseIndex(string const &IndexFile) /*{{{*/ indexRecords SubIndexParser; if (FileExists(IndexFile) == false || SubIndexParser.Load(IndexFile) == false) return false; - - std::vector<std::string> lang = APT::Configuration::getLanguages(true); - for (std::vector<std::string>::const_iterator l = lang.begin(); - l != lang.end(); ++l) - { - if (*l == "none") - continue; - - string file = "Translation-" + *l; - indexRecords::checkSum const *Record = SubIndexParser.Lookup(file); - HashString expected; - if (Record == NULL) - { - // FIXME: the Index file provided by debian currently only includes bz2 records - Record = SubIndexParser.Lookup(file + ".bz2"); - if (Record == NULL) - continue; - } - else - { - expected = Record->Hash; - if (expected.empty() == true) - continue; - } - - IndexTarget target; - target.Description = Desc.Description.erase(Desc.Description.rfind(' ')+1).append(file); - target.MetaKey = file; - target.ShortDesc = file; - target.URI = Desc.URI.substr(0, Desc.URI.rfind('/')+1).append(file); - new pkgAcqIndexTrans(Owner, &target, expected, &SubIndexParser); - } + // so something with the downloaded index return true; } /*}}}*/ @@ -434,7 +397,7 @@ bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile) /*{{{*/ 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) @@ -544,7 +507,7 @@ void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{ Dequeue(); } /*}}}*/ -void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ +void pkgAcqDiffIndex::Done(string Message,unsigned long long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@ -665,7 +628,7 @@ bool pkgAcqIndexDiffs::QueueNextDiff() /*{{{*/ 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: " @@ -710,7 +673,7 @@ bool pkgAcqIndexDiffs::QueueNextDiff() /*{{{*/ return true; } /*}}}*/ -void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash, /*{{{*/ +void pkgAcqIndexDiffs::Done(string Message,unsigned long long Size,string Md5Hash, /*{{{*/ pkgAcquire::MethodConfig *Cnf) { if(Debug) @@ -808,6 +771,13 @@ pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner, IndexTarget const *Target, if (CompressionExtension.empty() == false) CompressionExtension.erase(CompressionExtension.end()-1); + // only verify non-optional targets, see acquire-item.h for a FIXME + // to make this more flexible + if (Target->IsOptional()) + Verify = false; + else + Verify = true; + Init(Target->URI, Target->Description, Target->ShortDesc); } /*}}}*/ @@ -881,7 +851,7 @@ void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf) /*{{{*/ to the uncompressed version of the file. If this is so the file is copied into the partial directory. In all other cases the file is decompressed with a gzip uri. */ -void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, +void pkgAcqIndex::Done(string Message,unsigned long long Size,string Hash, pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,Hash,Cfg); @@ -905,6 +875,7 @@ void pkgAcqIndex::Done(string Message,unsigned long Size,string Hash, /* Verify the index file for correctness (all indexes must * have a Package field) (LP: #346386) (Closes: #627642) */ + if (Verify == true) { FileFd fd(DestFile, FileFd::ReadOnly); pkgTagSection sec; @@ -1123,7 +1094,7 @@ string pkgAcqMetaSig::Custom600Headers() return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } -void pkgAcqMetaSig::Done(string Message,unsigned long Size,string MD5, +void pkgAcqMetaSig::Done(string Message,unsigned long long Size,string MD5, pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,MD5,Cfg); @@ -1232,7 +1203,7 @@ string pkgAcqMetaIndex::Custom600Headers() return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); } /*}}}*/ -void pkgAcqMetaIndex::Done(string Message,unsigned long Size,string Hash, /*{{{*/ +void pkgAcqMetaIndex::Done(string Message,unsigned long long Size,string Hash, /*{{{*/ pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,Hash,Cfg); @@ -1373,6 +1344,18 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ return; } #endif + bool transInRelease = false; + { + std::vector<std::string> const keys = MetaIndexParser->MetaKeys(); + for (std::vector<std::string>::const_iterator k = keys.begin(); k != keys.end(); ++k) + // FIXME: Feels wrong to check for hardcoded string here, but what should we do else… + if (k->find("Translation-") != std::string::npos) + { + transInRelease = true; + break; + } + } + for (vector <struct IndexTarget*>::const_iterator Target = IndexTargets->begin(); Target != IndexTargets->end(); ++Target) @@ -1410,8 +1393,15 @@ void pkgAcqMetaIndex::QueueIndexes(bool verify) /*{{{*/ if ((*Target)->IsSubIndex() == true) new pkgAcqSubIndex(Owner, (*Target)->URI, (*Target)->Description, (*Target)->ShortDesc, ExpectedIndexHash); - else - new pkgAcqIndexTrans(Owner, *Target, ExpectedIndexHash, MetaIndexParser); + else if (transInRelease == false || MetaIndexParser->Exists((*Target)->MetaKey) == true) + { + if (_config->FindB("Acquire::PDiffs",true) == true && transInRelease == true && + MetaIndexParser->Exists(string((*Target)->MetaKey).append(".diff/Index")) == true) + new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description, + (*Target)->ShortDesc, ExpectedIndexHash); + else + new pkgAcqIndexTrans(Owner, *Target, ExpectedIndexHash, MetaIndexParser); + } continue; } @@ -1738,6 +1728,8 @@ bool pkgAcqArchive::QueueNext() string PkgFile = Parse.FileName(); if (ForceHash.empty() == false) { + if(stringcasecmp(ForceHash, "sha512") == 0) + ExpectedHash = HashString("SHA512", Parse.SHA512Hash()); if(stringcasecmp(ForceHash, "sha256") == 0) ExpectedHash = HashString("SHA256", Parse.SHA256Hash()); else if (stringcasecmp(ForceHash, "sha1") == 0) @@ -1748,7 +1740,9 @@ bool pkgAcqArchive::QueueNext() else { string Hash; - if ((Hash = Parse.SHA256Hash()).empty() == false) + if ((Hash = Parse.SHA512Hash()).empty() == false) + ExpectedHash = HashString("SHA512", Hash); + else if ((Hash = Parse.SHA256Hash()).empty() == false) ExpectedHash = HashString("SHA256", Hash); else if ((Hash = Parse.SHA1Hash()).empty() == false) ExpectedHash = HashString("SHA1", Hash); @@ -1772,7 +1766,7 @@ bool pkgAcqArchive::QueueNext() if (stat(FinalFile.c_str(),&Buf) == 0) { // Make sure the size matches - if ((unsigned)Buf.st_size == Version->Size) + if ((unsigned long long)Buf.st_size == Version->Size) { Complete = true; Local = true; @@ -1791,7 +1785,7 @@ bool pkgAcqArchive::QueueNext() if (stat(FinalFile.c_str(),&Buf) == 0) { // Make sure the size matches - if ((unsigned)Buf.st_size == Version->Size) + if ((unsigned long long)Buf.st_size == Version->Size) { Complete = true; Local = true; @@ -1811,12 +1805,23 @@ bool pkgAcqArchive::QueueNext() if (stat(DestFile.c_str(),&Buf) == 0) { // Hmm, the partial file is too big, erase it - if ((unsigned)Buf.st_size > Version->Size) + if ((unsigned long long)Buf.st_size > Version->Size) unlink(DestFile.c_str()); else PartialSize = Buf.st_size; } - + + // Disables download of archives - useful if no real installation follows, + // e.g. if we are just interested in proposed installation order + if (_config->FindB("Debug::pkgAcqArchive::NoQueue", false) == true) + { + Complete = true; + Local = true; + Status = StatDone; + StoreFilename = DestFile = FinalFile; + return true; + } + // Create the item Local = false; Desc.URI = Index->ArchiveURI(PkgFile); @@ -1834,7 +1839,7 @@ bool pkgAcqArchive::QueueNext() // AcqArchive::Done - Finished fetching /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgAcqArchive::Done(string Message,unsigned long Size,string CalcHash, +void pkgAcqArchive::Done(string Message,unsigned long long Size,string CalcHash, pkgAcquire::MethodConfig *Cfg) { Item::Done(Message,Size,CalcHash,Cfg); @@ -1945,7 +1950,7 @@ void pkgAcqArchive::Finished() // --------------------------------------------------------------------- /* The file is added to the queue */ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string Hash, - unsigned long Size,string Dsc,string ShortDesc, + unsigned long long Size,string Dsc,string ShortDesc, const string &DestDir, const string &DestFilename, bool IsIndexFile) : Item(Owner), ExpectedHash(Hash), IsIndexFile(IsIndexFile) @@ -1973,7 +1978,7 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string Hash, if (stat(DestFile.c_str(),&Buf) == 0) { // Hmm, the partial file is too big, erase it - if ((unsigned)Buf.st_size > Size) + if ((unsigned long long)Buf.st_size > Size) unlink(DestFile.c_str()); else PartialSize = Buf.st_size; @@ -1985,7 +1990,7 @@ pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string Hash, // AcqFile::Done - Item downloaded OK /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgAcqFile::Done(string Message,unsigned long Size,string CalcHash, +void pkgAcqFile::Done(string Message,unsigned long long Size,string CalcHash, pkgAcquire::MethodConfig *Cnf) { Item::Done(Message,Size,CalcHash,Cnf); @@ -2073,13 +2078,3 @@ string pkgAcqFile::Custom600Headers() return ""; } /*}}}*/ -bool IndexTarget::IsOptional() const { - if (strncmp(ShortDesc.c_str(), "Translation", 11) != 0) - return false; - return true; -} -bool IndexTarget::IsSubIndex() const { - if (ShortDesc != "TranslationIndex") - return false; - return true; -} diff --git a/apt-pkg/acquire-item.h b/apt-pkg/acquire-item.h index f763577ee..51d539450 100644 --- a/apt-pkg/acquire-item.h +++ b/apt-pkg/acquire-item.h @@ -21,13 +21,17 @@ #define PKGLIB_ACQUIRE_ITEM_H #include <apt-pkg/acquire.h> +#include <apt-pkg/hashes.h> +#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> -#include <apt-pkg/hashes.h> -#include <apt-pkg/weakptr.h> +#endif /** \addtogroup acquire * @{ @@ -35,6 +39,10 @@ * \file acquire-item.h */ +class indexRecords; +class pkgRecords; +class pkgSourceList; + /** \brief Represents the process by which a pkgAcquire object should {{{ * retrieve a file or a collection of files. * @@ -74,7 +82,7 @@ class pkgAcquire::Item : public WeakPointable * \param To The new name of #From. If #To exists it will be * overwritten. */ - void Rename(string From,string To); + void Rename(std::string From,std::string To); public: @@ -109,7 +117,7 @@ class pkgAcquire::Item : public WeakPointable /** \brief Contains a textual description of the error encountered * if #Status is #StatError or #StatAuthError. */ - string ErrorText; + std::string ErrorText; /** \brief The size of the object to fetch. */ unsigned long long FileSize; @@ -143,7 +151,7 @@ class pkgAcquire::Item : public WeakPointable * download progress indicator's overall statistics. */ bool Local; - string UsedMirror; + std::string UsedMirror; /** \brief The number of fetch queues into which this item has been * inserted. @@ -158,7 +166,7 @@ class pkgAcquire::Item : public WeakPointable /** \brief The name of the file into which the retrieved object * will be written. */ - string DestFile; + std::string DestFile; /** \brief Invoked by the acquire worker when the object couldn't * be fetched. @@ -173,7 +181,7 @@ class pkgAcquire::Item : public WeakPointable * * \sa pkgAcqMethod */ - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); /** \brief Invoked by the acquire worker when the object was * fetched successfully. @@ -194,7 +202,7 @@ class pkgAcquire::Item : public WeakPointable * * \sa pkgAcqMethod */ - virtual void Done(string Message,unsigned long Size,string Hash, + virtual void Done(std::string Message,unsigned long long Size,std::string Hash, pkgAcquire::MethodConfig *Cnf); /** \brief Invoked when the worker starts to fetch this object. @@ -206,7 +214,7 @@ class pkgAcquire::Item : public WeakPointable * * \sa pkgAcqMethod */ - virtual void Start(string Message,unsigned long Size); + virtual void Start(std::string Message,unsigned long long Size); /** \brief Custom headers to be sent to the fetch process. * @@ -216,18 +224,18 @@ class pkgAcquire::Item : public WeakPointable * line, so they should (if nonempty) have a leading newline and * no trailing newline. */ - virtual string Custom600Headers() {return string();}; + virtual std::string Custom600Headers() {return std::string();}; /** \brief A "descriptive" URI-like string. * * \return a URI that should be used to describe what is being fetched. */ - virtual string DescURI() = 0; + virtual std::string DescURI() = 0; /** \brief Short item description. * * \return a brief description of the object being fetched. */ - virtual string ShortDesc() {return DescURI();} + virtual std::string ShortDesc() {return DescURI();} /** \brief Invoked by the worker when the download is completely done. */ virtual void Finished() {}; @@ -237,7 +245,7 @@ class pkgAcquire::Item : public WeakPointable * \return the HashSum of this object, if applicable; otherwise, an * empty string. */ - virtual string HashSum() {return string();}; + virtual std::string HashSum() {return std::string();}; /** \return the acquire process with which this item is associated. */ pkgAcquire *GetOwner() {return Owner;}; @@ -253,7 +261,7 @@ class pkgAcquire::Item : public WeakPointable * * \param FailCode A short failure string that is send */ - void ReportMirrorFailure(string FailCode); + void ReportMirrorFailure(std::string FailCode); /** \brief Initialize an item. @@ -278,10 +286,10 @@ class pkgAcquire::Item : public WeakPointable /** \brief Information about an index patch (aka diff). */ /*{{{*/ struct DiffInfo { /** The filename of the diff. */ - string file; + std::string file; /** The sha1 hash of the diff. */ - string sha1; + std::string sha1; /** The size of the diff. */ unsigned long size; @@ -308,12 +316,12 @@ class pkgAcqSubIndex : public pkgAcquire::Item public: // Specialized action members - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(std::string Message,unsigned long long Size,std::string Md5Hash, pkgAcquire::MethodConfig *Cnf); - virtual string DescURI() {return Desc.URI;}; - virtual string Custom600Headers(); - virtual bool ParseIndex(string const &IndexFile); + virtual std::string DescURI() {return Desc.URI;}; + virtual std::string Custom600Headers(); + virtual bool ParseIndex(std::string const &IndexFile); /** \brief Create a new pkgAcqSubIndex. * @@ -327,8 +335,8 @@ class pkgAcqSubIndex : public pkgAcquire::Item * * \param ExpectedHash The list file's MD5 signature. */ - pkgAcqSubIndex(pkgAcquire *Owner, string const &URI,string const &URIDesc, - string const &ShortDesc, HashString const &ExpectedHash); + pkgAcqSubIndex(pkgAcquire *Owner, std::string const &URI,std::string const &URIDesc, + std::string const &ShortDesc, HashString const &ExpectedHash); }; /*}}}*/ /** \brief An item that is responsible for fetching an index file of {{{ @@ -352,7 +360,7 @@ class pkgAcqDiffIndex : public pkgAcquire::Item /** \brief The URI of the index file to recreate at our end (either * by downloading it or by applying partial patches). */ - string RealURI; + std::string RealURI; /** \brief The Hash that the real index file should have after * all patches have been applied. @@ -362,20 +370,20 @@ class pkgAcqDiffIndex : public pkgAcquire::Item /** \brief The index file which will be patched to generate the new * file. */ - string CurrentPackagesFile; + std::string CurrentPackagesFile; /** \brief A description of the Packages file (stored in * pkgAcquire::ItemDesc::Description). */ - string Description; + std::string Description; public: // Specialized action members - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(std::string Message,unsigned long long Size,std::string Md5Hash, pkgAcquire::MethodConfig *Cnf); - virtual string DescURI() {return RealURI + "Index";}; - virtual string Custom600Headers(); + virtual std::string DescURI() {return RealURI + "Index";}; + virtual std::string Custom600Headers(); /** \brief Parse the Index file for a set of Packages diffs. * @@ -387,7 +395,7 @@ class pkgAcqDiffIndex : public pkgAcquire::Item * \return \b true if the Index file was successfully parsed, \b * false otherwise. */ - bool ParseDiffIndex(string IndexDiffFile); + bool ParseDiffIndex(std::string IndexDiffFile); /** \brief Create a new pkgAcqDiffIndex. @@ -402,8 +410,8 @@ class pkgAcqDiffIndex : public pkgAcquire::Item * * \param ExpectedHash The list file's MD5 signature. */ - pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesc, HashString ExpectedHash); + pkgAcqDiffIndex(pkgAcquire *Owner,std::string URI,std::string URIDesc, + std::string ShortDesc, HashString ExpectedHash); }; /*}}}*/ /** \brief An item that is responsible for fetching all the patches {{{ @@ -460,7 +468,7 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item /** \brief The URI of the package index file that is being * reconstructed. */ - string RealURI; + std::string RealURI; /** \brief The HashSum of the package index file that is being * reconstructed. @@ -468,7 +476,7 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item HashString ExpectedHash; /** A description of the file being downloaded. */ - string Description; + std::string Description; /** The patches that remain to be downloaded, including the patch * being downloaded right now. This list should be ordered so @@ -478,10 +486,10 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item * dictionary instead of relying on ordering and stripping them * off the front? */ - vector<DiffInfo> available_patches; + std::vector<DiffInfo> available_patches; /** Stop applying patches when reaching that sha1 */ - string ServerSha1; + std::string ServerSha1; /** The current status of this patch. */ enum DiffState @@ -506,11 +514,11 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item * This method will fall back to downloading the whole index file * outright; its arguments are ignored. */ - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Done(std::string Message,unsigned long long Size,std::string Md5Hash, pkgAcquire::MethodConfig *Cnf); - virtual string DescURI() {return RealURI + "Index";}; + virtual std::string DescURI() {return RealURI + "Index";}; /** \brief Create an index diff item. * @@ -534,10 +542,10 @@ class pkgAcqIndexDiffs : public pkgAcquire::Item * should be ordered so that each diff appears before any diff * that depends on it. */ - pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesc, HashString ExpectedHash, - string ServerSha1, - vector<DiffInfo> diffs=vector<DiffInfo>()); + pkgAcqIndexDiffs(pkgAcquire *Owner,std::string URI,std::string URIDesc, + std::string ShortDesc, HashString ExpectedHash, + std::string ServerSha1, + std::vector<DiffInfo> diffs=std::vector<DiffInfo>()); }; /*}}}*/ /** \brief An acquire item that is responsible for fetching an index {{{ @@ -559,6 +567,16 @@ class pkgAcqIndex : public pkgAcquire::Item */ bool Erase; + /** \brief Verify for correctness by checking if a "Package" + * tag is found in the index. This can be set to + * false for optional index targets + * + */ + // FIXME: instead of a bool it should use a verify string that will + // then be used in the pkgAcqIndex::Done method to ensure that + // the downloaded file contains the expected tag + bool Verify; + /** \brief The download request that is currently being * processed. */ @@ -567,7 +585,7 @@ class pkgAcqIndex : public pkgAcquire::Item /** \brief The object that is actually being fetched (minus any * compression-related extensions). */ - string RealURI; + std::string RealURI; /** \brief The expected hashsum of the decompressed index file. */ HashString ExpectedHash; @@ -575,17 +593,17 @@ class pkgAcqIndex : public pkgAcquire::Item /** \brief The compression-related file extensions that are being * added to the downloaded file one by one if first fails (e.g., "gz bz2"). */ - string CompressionExtension; + std::string CompressionExtension; public: // Specialized action members - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(std::string Message,unsigned long long Size,std::string Md5Hash, pkgAcquire::MethodConfig *Cnf); - virtual string Custom600Headers(); - virtual string DescURI() {return Desc.URI;}; - virtual string HashSum() {return ExpectedHash.toStr(); }; + virtual std::string Custom600Headers(); + virtual std::string DescURI() {return Desc.URI;}; + virtual std::string HashSum() {return ExpectedHash.toStr(); }; /** \brief Create a pkgAcqIndex. * @@ -606,12 +624,12 @@ class pkgAcqIndex : public pkgAcquire::Item * default is ".lzma" or ".bz2" (if the needed binaries are present) * fallback is ".gz" or none. */ - pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesc, HashString ExpectedHash, - string compressExt=""); + pkgAcqIndex(pkgAcquire *Owner,std::string URI,std::string URIDesc, + std::string ShortDesc, HashString ExpectedHash, + std::string compressExt=""); pkgAcqIndex(pkgAcquire *Owner, struct IndexTarget const * const Target, HashString const &ExpectedHash, indexRecords const *MetaIndexParser); - void Init(string const &URI, string const &URIDesc, string const &ShortDesc); + void Init(std::string const &URI, std::string const &URIDesc, std::string const &ShortDesc); }; /*}}}*/ /** \brief An acquire item that is responsible for fetching a {{{ @@ -625,8 +643,8 @@ class pkgAcqIndexTrans : public pkgAcqIndex { public: - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual string Custom600Headers(); + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual std::string Custom600Headers(); /** \brief Create a pkgAcqIndexTrans. * @@ -639,37 +657,60 @@ class pkgAcqIndexTrans : public pkgAcqIndex * * \param ShortDesc A brief description of this index file. */ - pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc, - string ShortDesc); + pkgAcqIndexTrans(pkgAcquire *Owner,std::string URI,std::string URIDesc, + std::string ShortDesc); pkgAcqIndexTrans(pkgAcquire *Owner, struct IndexTarget const * const Target, HashString const &ExpectedHash, indexRecords const *MetaIndexParser); }; /*}}}*/ /** \brief Information about an index file. */ /*{{{*/ -struct IndexTarget +class IndexTarget { + public: /** \brief A URI from which the index file can be downloaded. */ - string URI; + std::string URI; /** \brief A description of the index file. */ - string Description; + std::string Description; /** \brief A shorter description of the index file. */ - string ShortDesc; + std::string ShortDesc; /** \brief The key by which this index file should be * looked up within the meta signature file. */ - string MetaKey; - - //FIXME: We should use virtual methods here instead… - bool IsOptional() const; - bool IsSubIndex() const; + std::string MetaKey; + + virtual bool IsOptional() const { + return false; + } + virtual bool IsSubIndex() const { + return false; + } }; /*}}}*/ /** \brief Information about an optional index file. */ /*{{{*/ -struct OptionalIndexTarget : public IndexTarget +class OptionalIndexTarget : public IndexTarget +{ + virtual bool IsOptional() const { + return true; + } +}; + /*}}}*/ +/** \brief Information about an subindex index file. */ /*{{{*/ +class SubIndexTarget : public IndexTarget +{ + virtual bool IsSubIndex() const { + return true; + } +}; + /*}}}*/ +/** \brief Information about an subindex index file. */ /*{{{*/ +class OptionalSubIndexTarget : public OptionalIndexTarget { + virtual bool IsSubIndex() const { + return true; + } }; /*}}}*/ @@ -685,7 +726,7 @@ class pkgAcqMetaSig : public pkgAcquire::Item { protected: /** \brief The last good signature file */ - string LastGoodSig; + std::string LastGoodSig; /** \brief The fetch request that is currently being processed. */ pkgAcquire::ItemDesc Desc; @@ -694,20 +735,20 @@ class pkgAcqMetaSig : public pkgAcquire::Item * never modified; it is used to determine the file that is being * downloaded. */ - string RealURI; + std::string RealURI; /** \brief The URI of the meta-index file to be fetched after the signature. */ - string MetaIndexURI; + std::string MetaIndexURI; /** \brief A "URI-style" description of the meta-index file to be * fetched after the signature. */ - string MetaIndexURIDesc; + std::string MetaIndexURIDesc; /** \brief A brief description of the meta-index file to be fetched * after the signature. */ - string MetaIndexShortDesc; + std::string MetaIndexShortDesc; /** \brief A package-system-specific parser for the meta-index file. */ indexRecords* MetaIndexParser; @@ -717,21 +758,21 @@ class pkgAcqMetaSig : public pkgAcquire::Item * * \todo Why a list of pointers instead of a list of structs? */ - const vector<struct IndexTarget*>* IndexTargets; + const std::vector<struct IndexTarget*>* IndexTargets; public: // Specialized action members - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Md5Hash, + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(std::string Message,unsigned long long Size,std::string Md5Hash, pkgAcquire::MethodConfig *Cnf); - virtual string Custom600Headers(); - virtual string DescURI() {return RealURI; }; + virtual std::string Custom600Headers(); + virtual std::string DescURI() {return RealURI; }; /** \brief Create a new pkgAcqMetaSig. */ - pkgAcqMetaSig(pkgAcquire *Owner,string URI,string URIDesc, string ShortDesc, - string MetaIndexURI, string MetaIndexURIDesc, string MetaIndexShortDesc, - const vector<struct IndexTarget*>* IndexTargets, + pkgAcqMetaSig(pkgAcquire *Owner,std::string URI,std::string URIDesc, std::string ShortDesc, + std::string MetaIndexURI, std::string MetaIndexURIDesc, std::string MetaIndexShortDesc, + const std::vector<struct IndexTarget*>* IndexTargets, indexRecords* MetaIndexParser); }; /*}}}*/ @@ -754,17 +795,17 @@ class pkgAcqMetaIndex : public pkgAcquire::Item /** \brief The URI that is actually being downloaded; never * modified by pkgAcqMetaIndex. */ - string RealURI; + std::string RealURI; /** \brief The file in which the signature for this index was stored. * * If empty, the signature and the md5sums of the individual * indices will not be checked. */ - string SigFile; + std::string SigFile; /** \brief The index files to download. */ - const vector<struct IndexTarget*>* IndexTargets; + const std::vector<struct IndexTarget*>* IndexTargets; /** \brief The parser for the meta-index file. */ indexRecords* MetaIndexParser; @@ -780,7 +821,7 @@ class pkgAcqMetaIndex : public pkgAcquire::Item * * \return \b true if no fatal errors were encountered. */ - bool VerifyVendor(string Message); + bool VerifyVendor(std::string Message); /** \brief Called when a file is finished being retrieved. * @@ -791,7 +832,7 @@ class pkgAcqMetaIndex : public pkgAcquire::Item * \param Message The message block received from the fetch * subprocess. */ - void RetrievalDone(string Message); + void RetrievalDone(std::string Message); /** \brief Called when authentication succeeded. * @@ -802,7 +843,7 @@ class pkgAcqMetaIndex : public pkgAcquire::Item * \param Message The message block received from the fetch * subprocess. */ - void AuthDone(string Message); + void AuthDone(std::string Message); /** \brief Starts downloading the individual index files. * @@ -817,17 +858,17 @@ class pkgAcqMetaIndex : public pkgAcquire::Item public: // Specialized action members - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size, string Hash, + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(std::string Message,unsigned long long Size, std::string Hash, pkgAcquire::MethodConfig *Cnf); - virtual string Custom600Headers(); - virtual string DescURI() {return RealURI; }; + virtual std::string Custom600Headers(); + virtual std::string DescURI() {return RealURI; }; /** \brief Create a new pkgAcqMetaIndex. */ pkgAcqMetaIndex(pkgAcquire *Owner, - string URI,string URIDesc, string ShortDesc, - string SigFile, - const vector<struct IndexTarget*>* IndexTargets, + std::string URI,std::string URIDesc, std::string ShortDesc, + std::string SigFile, + const std::vector<struct IndexTarget*>* IndexTargets, indexRecords* MetaIndexParser); }; /*}}}*/ @@ -835,33 +876,33 @@ class pkgAcqMetaIndex : public pkgAcquire::Item class pkgAcqMetaClearSig : public pkgAcqMetaIndex { /** \brief The URI of the meta-index file for the detached signature */ - string MetaIndexURI; + std::string MetaIndexURI; /** \brief A "URI-style" description of the meta-index file */ - string MetaIndexURIDesc; + std::string MetaIndexURIDesc; /** \brief A brief description of the meta-index file */ - string MetaIndexShortDesc; + std::string MetaIndexShortDesc; /** \brief The URI of the detached meta-signature file if the clearsigned one failed. */ - string MetaSigURI; + std::string MetaSigURI; /** \brief A "URI-style" description of the meta-signature file */ - string MetaSigURIDesc; + std::string MetaSigURIDesc; /** \brief A brief description of the meta-signature file */ - string MetaSigShortDesc; + std::string MetaSigShortDesc; public: - void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual string Custom600Headers(); + void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual std::string Custom600Headers(); /** \brief Create a new pkgAcqMetaClearSig. */ pkgAcqMetaClearSig(pkgAcquire *Owner, - string const &URI, string const &URIDesc, string const &ShortDesc, - string const &MetaIndexURI, string const &MetaIndexURIDesc, string const &MetaIndexShortDesc, - string const &MetaSigURI, string const &MetaSigURIDesc, string const &MetaSigShortDesc, - const vector<struct IndexTarget*>* IndexTargets, + std::string const &URI, std::string const &URIDesc, std::string const &ShortDesc, + std::string const &MetaIndexURI, std::string const &MetaIndexURIDesc, std::string const &MetaIndexShortDesc, + std::string const &MetaSigURI, std::string const &MetaSigURIDesc, std::string const &MetaSigShortDesc, + const std::vector<struct IndexTarget*>* IndexTargets, indexRecords* MetaIndexParser); }; /*}}}*/ @@ -895,7 +936,7 @@ class pkgAcqArchive : public pkgAcquire::Item /** \brief A location in which the actual filename of the package * should be stored. */ - string &StoreFilename; + std::string &StoreFilename; /** \brief The next file for this version to try to download. */ pkgCache::VerFileIterator Vf; @@ -917,13 +958,13 @@ class pkgAcqArchive : public pkgAcquire::Item public: - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string Hash, + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(std::string Message,unsigned long long Size,std::string Hash, pkgAcquire::MethodConfig *Cnf); - virtual string DescURI() {return Desc.URI;}; - virtual string ShortDesc() {return Desc.ShortDesc;}; + virtual std::string DescURI() {return Desc.URI;}; + virtual std::string ShortDesc() {return Desc.ShortDesc;}; virtual void Finished(); - virtual string HashSum() {return ExpectedHash.toStr(); }; + virtual std::string HashSum() {return ExpectedHash.toStr(); }; virtual bool IsTrusted(); /** \brief Create a new pkgAcqArchive. @@ -946,7 +987,7 @@ class pkgAcqArchive : public pkgAcquire::Item */ pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources, pkgRecords *Recs,pkgCache::VerIterator const &Version, - string &StoreFilename); + std::string &StoreFilename); }; /*}}}*/ /** \brief Retrieve an arbitrary file to the current directory. {{{ @@ -974,12 +1015,12 @@ class pkgAcqFile : public pkgAcquire::Item public: // Specialized action members - virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf); - virtual void Done(string Message,unsigned long Size,string CalcHash, + virtual void Failed(std::string Message,pkgAcquire::MethodConfig *Cnf); + virtual void Done(std::string Message,unsigned long long Size,std::string CalcHash, pkgAcquire::MethodConfig *Cnf); - virtual string DescURI() {return Desc.URI;}; - virtual string HashSum() {return ExpectedHash.toStr(); }; - virtual string Custom600Headers(); + virtual std::string DescURI() {return Desc.URI;}; + virtual std::string HashSum() {return ExpectedHash.toStr(); }; + virtual std::string Custom600Headers(); /** \brief Create a new pkgAcqFile object. * @@ -1012,9 +1053,9 @@ class pkgAcqFile : public pkgAcquire::Item * is the absolute name to which the file should be downloaded. */ - pkgAcqFile(pkgAcquire *Owner, string URI, string Hash, unsigned long Size, - string Desc, string ShortDesc, - const string &DestDir="", const string &DestFilename="", + pkgAcqFile(pkgAcquire *Owner, std::string URI, std::string Hash, unsigned long long Size, + std::string Desc, std::string ShortDesc, + const std::string &DestDir="", const std::string &DestFilename="", bool IsIndexFile=false); }; /*}}}*/ diff --git a/apt-pkg/acquire-method.cc b/apt-pkg/acquire-method.cc index 294d78f86..2041fd9e9 100644 --- a/apt-pkg/acquire-method.cc +++ b/apt-pkg/acquire-method.cc @@ -15,6 +15,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/acquire-method.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> @@ -166,6 +168,8 @@ void pkgAcqMethod::URIDone(FetchResult &Res, FetchResult *Alt) std::cout << "SHA1-Hash: " << Res.SHA1Sum << "\n"; if (Res.SHA256Sum.empty() == false) std::cout << "SHA256-Hash: " << Res.SHA256Sum << "\n"; + if (Res.SHA512Sum.empty() == false) + std::cout << "SHA512-Hash: " << Res.SHA512Sum << "\n"; if (UsedMirror.empty() == false) std::cout << "UsedMirror: " << UsedMirror << "\n"; if (Res.GPGVOutput.empty() == false) @@ -199,7 +203,9 @@ void pkgAcqMethod::URIDone(FetchResult &Res, FetchResult *Alt) std::cout << "Alt-SHA1-Hash: " << Alt->SHA1Sum << "\n"; if (Alt->SHA256Sum.empty() == false) std::cout << "Alt-SHA256-Hash: " << Alt->SHA256Sum << "\n"; - + if (Alt->SHA512Sum.empty() == false) + std::cout << "Alt-SHA512-Hash: " << Alt->SHA512Sum << "\n"; + if (Alt->IMSHit == true) std::cout << "Alt-IMS-Hit: true\n"; } @@ -456,5 +462,6 @@ void pkgAcqMethod::FetchResult::TakeHashes(Hashes &Hash) MD5Sum = Hash.MD5.Result(); SHA1Sum = Hash.SHA1.Result(); SHA256Sum = Hash.SHA256.Result(); + SHA512Sum = Hash.SHA512.Result(); } /*}}}*/ diff --git a/apt-pkg/acquire-method.h b/apt-pkg/acquire-method.h index 72efa8065..2dd9ad685 100644 --- a/apt-pkg/acquire-method.h +++ b/apt-pkg/acquire-method.h @@ -20,10 +20,15 @@ #ifndef PKGLIB_ACQUIRE_METHOD_H #define PKGLIB_ACQUIRE_METHOD_H +#include <stdarg.h> + +#include <string> +#include <vector> + +#ifndef APT_8_CLEANER_HEADERS #include <apt-pkg/configuration.h> #include <apt-pkg/strutl.h> - -#include <stdarg.h> +#endif class Hashes; class pkgAcqMethod @@ -34,8 +39,8 @@ class pkgAcqMethod { FetchItem *Next; - string Uri; - string DestFile; + std::string Uri; + std::string DestFile; time_t LastModified; bool IndexFile; bool FailIgnore; @@ -43,40 +48,41 @@ class pkgAcqMethod struct FetchResult { - string MD5Sum; - string SHA1Sum; - string SHA256Sum; - vector<string> GPGVOutput; + std::string MD5Sum; + std::string SHA1Sum; + std::string SHA256Sum; + std::string SHA512Sum; + std::vector<std::string> GPGVOutput; time_t LastModified; bool IMSHit; - string Filename; - unsigned long Size; - unsigned long ResumePoint; + std::string Filename; + unsigned long long Size; + unsigned long long ResumePoint; void TakeHashes(Hashes &Hash); FetchResult(); }; // State - vector<string> Messages; + std::vector<std::string> Messages; FetchItem *Queue; FetchItem *QueueBack; - string FailReason; - string UsedMirror; - string IP; + std::string FailReason; + std::string UsedMirror; + std::string IP; // Handlers for messages - virtual bool Configuration(string Message); + virtual bool Configuration(std::string Message); virtual bool Fetch(FetchItem * /*Item*/) {return true;}; // Outgoing messages void Fail(bool Transient = false); - inline void Fail(const char *Why, bool Transient = false) {Fail(string(Why),Transient);}; - virtual void Fail(string Why, bool Transient = false); + inline void Fail(const char *Why, bool Transient = false) {Fail(std::string(Why),Transient);}; + virtual void Fail(std::string Why, bool Transient = false); virtual void URIStart(FetchResult &Res); virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0); - bool MediaFail(string Required,string Drive); + bool MediaFail(std::string Required,std::string Drive); virtual void Exit() {}; void PrintStatus(char const * const header, const char* Format, va_list &args) const; @@ -90,11 +96,11 @@ class pkgAcqMethod void Log(const char *Format,...); void Status(const char *Format,...); - void Redirect(const string &NewURI); + void Redirect(const std::string &NewURI); int Run(bool Single = false); - inline void SetFailReason(string Msg) {FailReason = Msg;}; - inline void SetIP(string aIP) {IP = aIP;}; + inline void SetFailReason(std::string Msg) {FailReason = Msg;}; + inline void SetIP(std::string aIP) {IP = aIP;}; pkgAcqMethod(const char *Ver,unsigned long Flags = 0); virtual ~pkgAcqMethod() {}; diff --git a/apt-pkg/acquire-worker.cc b/apt-pkg/acquire-worker.cc index 75e03232a..d79b2b16d 100644 --- a/apt-pkg/acquire-worker.cc +++ b/apt-pkg/acquire-worker.cc @@ -12,6 +12,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/acquire-worker.h> #include <apt-pkg/acquire-item.h> #include <apt-pkg/configuration.h> @@ -19,18 +21,18 @@ #include <apt-pkg/fileutl.h> #include <apt-pkg/strutl.h> -#include <apti18n.h> - #include <iostream> #include <sstream> #include <fstream> - + #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <signal.h> #include <stdio.h> #include <errno.h> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -256,9 +258,9 @@ bool pkgAcquire::Worker::RunMessages() CurrentItem = Itm; CurrentSize = 0; - TotalSize = atoi(LookupTag(Message,"Size","0").c_str()); - ResumePoint = atoi(LookupTag(Message,"Resume-Point","0").c_str()); - Itm->Owner->Start(Message,atoi(LookupTag(Message,"Size","0").c_str())); + TotalSize = strtoull(LookupTag(Message,"Size","0").c_str(), NULL, 10); + ResumePoint = strtoull(LookupTag(Message,"Resume-Point","0").c_str(), NULL, 10); + Itm->Owner->Start(Message,strtoull(LookupTag(Message,"Size","0").c_str(), NULL, 10)); // Display update before completion if (Log != 0 && Log->MorePulses == true) @@ -287,9 +289,9 @@ bool pkgAcquire::Worker::RunMessages() Log->Pulse(Owner->GetOwner()); OwnerQ->ItemDone(Itm); - unsigned long const ServerSize = atol(LookupTag(Message,"Size","0").c_str()); + unsigned long long const ServerSize = strtoull(LookupTag(Message,"Size","0").c_str(), NULL, 10); if (TotalSize != 0 && ServerSize != TotalSize) - _error->Warning("Size of file %s is not what the server reported %s %lu", + _error->Warning("Size of file %s is not what the server reported %s %llu", Owner->DestFile.c_str(), LookupTag(Message,"Size","0").c_str(),TotalSize); // see if there is a hash to verify @@ -429,7 +431,23 @@ bool pkgAcquire::Worker::MediaChange(string Message) << Drive << ":" // drive << msg.str() // l10n message << endl; - write(status_fd, status.str().c_str(), status.str().size()); + + std::string const dlstatus = status.str(); + size_t done = 0; + size_t todo = dlstatus.size(); + errno = 0; + int res = 0; + do + { + res = write(status_fd, dlstatus.c_str() + done, todo); + if (res < 0 && errno == EINTR) + continue; + if (res < 0) + break; + done += res; + todo -= res; + } + while (res > 0 && todo > 0); } if (Log == 0 || Log->MediaChange(LookupTag(Message,"Media"), diff --git a/apt-pkg/acquire-worker.h b/apt-pkg/acquire-worker.h index 06283922e..848a6bad7 100644 --- a/apt-pkg/acquire-worker.h +++ b/apt-pkg/acquire-worker.h @@ -44,6 +44,9 @@ */ class pkgAcquire::Worker : public WeakPointable { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + friend class pkgAcquire; protected: @@ -76,7 +79,7 @@ class pkgAcquire::Worker : public WeakPointable * * \todo Doesn't this duplicate Config->Access? */ - string Access; + std::string Access; /** \brief The PID of the subprocess. */ pid_t Process; @@ -115,13 +118,13 @@ class pkgAcquire::Worker : public WeakPointable /** \brief The raw text values of messages received from the * worker, in sequence. */ - vector<string> MessageQueue; + std::vector<std::string> MessageQueue; /** \brief Buffers pending writes to the subprocess. * * \todo Wouldn't a std::dequeue be more appropriate? */ - string OutQueue; + std::string OutQueue; /** \brief Common code for the constructor. * @@ -180,7 +183,7 @@ class pkgAcquire::Worker : public WeakPointable * * \return \b true. */ - bool Capabilities(string Message); + bool Capabilities(std::string Message); /** \brief Send a 601 Configuration message (containing the APT * configuration) to the subprocess. @@ -211,7 +214,7 @@ class pkgAcquire::Worker : public WeakPointable * 603 Media Changed, with the Failed field set to \b true if the * user cancelled the media change). */ - bool MediaChange(string Message); + bool MediaChange(std::string Message); /** \brief Invoked when the worked process dies unexpectedly. * @@ -239,22 +242,22 @@ class pkgAcquire::Worker : public WeakPointable /** \brief The most recent status string received from the * subprocess. */ - string Status; + std::string Status; /** \brief How many bytes of the file have been downloaded. Zero * if the current progress of the file cannot be determined. */ - unsigned long CurrentSize; + unsigned long long CurrentSize; /** \brief The total number of bytes to be downloaded. Zero if the * total size of the final is unknown. */ - unsigned long TotalSize; + unsigned long long TotalSize; /** \brief How much of the file was already downloaded prior to * starting this worker. */ - unsigned long ResumePoint; + unsigned long long ResumePoint; /** \brief Tell the subprocess to download the given item. * @@ -314,7 +317,7 @@ class pkgAcquire::Worker : public WeakPointable * Closes the file descriptors; if MethodConfig::NeedsCleanup is * \b false, also rudely interrupts the worker with a SIGINT. */ - ~Worker(); + virtual ~Worker(); }; /** @} */ diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index ef120d8e9..19bcca8a1 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -13,6 +13,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/acquire.h> #include <apt-pkg/acquire-item.h> #include <apt-pkg/acquire-worker.h> @@ -21,8 +23,6 @@ #include <apt-pkg/strutl.h> #include <apt-pkg/fileutl.h> -#include <apti18n.h> - #include <iostream> #include <sstream> #include <stdio.h> @@ -30,6 +30,8 @@ #include <dirent.h> #include <sys/time.h> #include <errno.h> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -37,9 +39,9 @@ using namespace std; // Acquire::pkgAcquire - Constructor /*{{{*/ // --------------------------------------------------------------------- /* We grab some runtime state from the configuration space */ -pkgAcquire::pkgAcquire() : Queues(0), Workers(0), Configs(0), Log(NULL), ToFetch(0), +pkgAcquire::pkgAcquire() : LockFD(-1), Queues(0), Workers(0), Configs(0), Log(NULL), ToFetch(0), Debug(_config->FindB("Debug::pkgAcquire",false)), - Running(false), LockFD(-1) + Running(false) { string const Mode = _config->Find("Acquire::Queue-Mode","host"); if (strcasecmp(Mode.c_str(),"host") == 0) @@ -47,10 +49,10 @@ pkgAcquire::pkgAcquire() : Queues(0), Workers(0), Configs(0), Log(NULL), ToFetch if (strcasecmp(Mode.c_str(),"access") == 0) QueueMode = QueueAccess; } -pkgAcquire::pkgAcquire(pkgAcquireStatus *Progress) : Queues(0), Workers(0), +pkgAcquire::pkgAcquire(pkgAcquireStatus *Progress) : LockFD(-1), Queues(0), Workers(0), Configs(0), Log(Progress), ToFetch(0), Debug(_config->FindB("Debug::pkgAcquire",false)), - Running(false), LockFD(-1) + Running(false) { string const Mode = _config->Find("Acquire::Queue-Mode","host"); if (strcasecmp(Mode.c_str(),"host") == 0) @@ -764,7 +766,7 @@ void pkgAcquire::Queue::Bump() // AcquireStatus::pkgAcquireStatus - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgAcquireStatus::pkgAcquireStatus() : Update(true), MorePulses(false) +pkgAcquireStatus::pkgAcquireStatus() : d(NULL), Update(true), MorePulses(false) { Start(); } @@ -803,7 +805,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) } // Compute the current completion - unsigned long ResumeSize = 0; + unsigned long long ResumeSize = 0; for (pkgAcquire::Worker *I = Owner->WorkersBegin(); I != 0; I = Owner->WorkerStep(I)) if (I->CurrentItem != 0 && I->CurrentItem->Owner->Complete == false) @@ -842,7 +844,7 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) else CurrentCPS = ((CurrentBytes - ResumeSize) - LastBytes)/Delta; LastBytes = CurrentBytes - ResumeSize; - ElapsedTime = (unsigned long)Delta; + ElapsedTime = (unsigned long long)Delta; Time = NewTime; } @@ -853,8 +855,9 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) char msg[200]; long i = CurrentItems < TotalItems ? CurrentItems + 1 : CurrentItems; - unsigned long ETA = - (unsigned long)((TotalBytes - CurrentBytes) / CurrentCPS); + unsigned long long ETA = 0; + if(CurrentCPS > 0) + ETA = (TotalBytes - CurrentBytes) / CurrentCPS; // only show the ETA if it makes sense if (ETA > 0 && ETA < 172800 /* two days */ ) @@ -869,7 +872,23 @@ bool pkgAcquireStatus::Pulse(pkgAcquire *Owner) << ":" << (CurrentBytes/float(TotalBytes)*100.0) << ":" << msg << endl; - write(fd, status.str().c_str(), status.str().size()); + + std::string const dlstatus = status.str(); + size_t done = 0; + size_t todo = dlstatus.size(); + errno = 0; + int res = 0; + do + { + res = write(fd, dlstatus.c_str() + done, todo); + if (res < 0 && errno == EINTR) + continue; + if (res < 0) + break; + done += res; + todo -= res; + } + while (res > 0 && todo > 0); } return true; @@ -910,13 +929,13 @@ void pkgAcquireStatus::Stop() else CurrentCPS = FetchedBytes/Delta; LastBytes = CurrentBytes; - ElapsedTime = (unsigned int)Delta; + ElapsedTime = (unsigned long long)Delta; } /*}}}*/ // AcquireStatus::Fetched - Called when a byte set has been fetched /*{{{*/ // --------------------------------------------------------------------- /* This is used to get accurate final transfer rate reporting. */ -void pkgAcquireStatus::Fetched(unsigned long Size,unsigned long Resume) +void pkgAcquireStatus::Fetched(unsigned long long Size,unsigned long long Resume) { FetchedBytes += Size - Resume; } diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index 9fe0e8a87..3d5d7a4b7 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -72,13 +72,14 @@ #include <vector> #include <string> -using std::vector; -using std::string; - - #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. {{{ @@ -91,6 +92,12 @@ class pkgAcquireStatus; */ class pkgAcquire { + private: + /** \brief FD of the Lock file we acquire in Setup (if any) */ + int LockFD; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + public: class Item; @@ -101,8 +108,8 @@ class pkgAcquire friend class Item; friend class Queue; - typedef vector<Item *>::iterator ItemIterator; - typedef vector<Item *>::const_iterator ItemCIterator; + typedef std::vector<Item *>::iterator ItemIterator; + typedef std::vector<Item *>::const_iterator ItemCIterator; protected: @@ -111,7 +118,7 @@ class pkgAcquire * This is built monotonically as items are created and only * emptied when the download shuts down. */ - vector<Item *> Items; + std::vector<Item *> Items; /** \brief The head of the list of active queues. * @@ -142,12 +149,7 @@ class pkgAcquire /** \brief The progress indicator for this download. */ pkgAcquireStatus *Log; - /** \brief The total size of the files which are to be fetched. - * - * This is not necessarily the total number of bytes to download - * when, e.g., download resumption and list updates via patches - * are taken into account. - */ + /** \brief The number of files which are to be fetched. */ unsigned long ToFetch; // Configurable parameters for the scheduler @@ -201,7 +203,7 @@ class pkgAcquire * \return the string-name of the queue in which a fetch request * for the given URI should be placed. */ - string QueueName(string URI,MethodConfig const *&Config); + std::string QueueName(std::string URI,MethodConfig const *&Config); /** \brief Build up the set of file descriptors upon which select() should * block. @@ -247,7 +249,7 @@ class pkgAcquire * * \return the method whose name is Access, or \b NULL if no such method exists. */ - MethodConfig *GetConfig(string Access); + MethodConfig *GetConfig(std::string Access); /** \brief Provides information on how a download terminated. */ enum RunResult { @@ -318,7 +320,7 @@ class pkgAcquire * * \return \b true if the directory exists and is readable. */ - bool Clean(string Dir); + bool Clean(std::string Dir); /** \return the total size in bytes of all the items included in * this download. @@ -346,7 +348,7 @@ class pkgAcquire * only one Acquire class is in action at the time or an empty string * if no lock file should be used. */ - bool Setup(pkgAcquireStatus *Progress = NULL, string const &Lock = ""); + bool Setup(pkgAcquireStatus *Progress = NULL, std::string const &Lock = ""); void SetLog(pkgAcquireStatus *Progress) { Log = Progress; } @@ -361,9 +363,6 @@ class pkgAcquire */ virtual ~pkgAcquire(); - private: - /** \brief FD of the Lock file we acquire in Setup (if any) */ - int LockFD; }; /** \brief Represents a single download source from which an item @@ -374,11 +373,11 @@ class pkgAcquire struct pkgAcquire::ItemDesc : public WeakPointable { /** \brief The URI from which to download this item. */ - string URI; + std::string URI; /** brief A description of this item. */ - string Description; + std::string Description; /** brief A shorter description of this item. */ - string ShortDesc; + std::string ShortDesc; /** brief The underlying item which is to be downloaded. */ Item *Owner; }; @@ -393,6 +392,9 @@ class pkgAcquire::Queue friend class pkgAcquire::UriIterator; friend class pkgAcquire::Worker; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + /** \brief The next queue in the pkgAcquire object's list of queues. */ Queue *Next; @@ -419,7 +421,7 @@ class pkgAcquire::Queue }; /** \brief The name of this queue. */ - string Name; + std::string Name; /** \brief The head of the list of items contained in this queue. * @@ -474,13 +476,13 @@ class pkgAcquire::Queue * \return the first item in the queue whose URI is #URI and that * is being downloaded by #Owner. */ - QItem *FindItem(string URI,pkgAcquire::Worker *Owner); + QItem *FindItem(std::string URI,pkgAcquire::Worker *Owner); /** Presumably this should start downloading an item? * * \todo Unimplemented. Implement it or remove? */ - bool ItemStart(QItem *Itm,unsigned long Size); + bool ItemStart(QItem *Itm,unsigned long long Size); /** \brief Remove the given item from this queue and set its state * to pkgAcquire::Item::StatDone. @@ -537,17 +539,20 @@ class pkgAcquire::Queue * \param Name The name of the new queue. * \param Owner The download process that owns the new queue. */ - Queue(string Name,pkgAcquire *Owner); + Queue(std::string Name,pkgAcquire *Owner); /** Shut down all the worker processes associated with this queue * and empty the queue. */ - ~Queue(); + virtual ~Queue(); }; /*}}}*/ /** \brief Iterates over all the URIs being fetched by a pkgAcquire object. {{{*/ class pkgAcquire::UriIterator { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + /** The next queue to iterate over. */ pkgAcquire::Queue *CurQ; /** The item that we currently point at. */ @@ -583,11 +588,15 @@ class pkgAcquire::UriIterator CurQ = CurQ->Next; } } + virtual ~UriIterator() {}; }; /*}}}*/ /** \brief Information about the properties of a single acquire method. {{{*/ struct pkgAcquire::MethodConfig { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + /** \brief The next link on the acquire method list. * * \todo Why not an STL container? @@ -595,10 +604,10 @@ struct pkgAcquire::MethodConfig MethodConfig *Next; /** \brief The name of this acquire method (e.g., http). */ - string Access; + std::string Access; /** \brief The implementation version of this acquire method. */ - string Version; + std::string Version; /** \brief If \b true, only one download queue should be created for this * method. @@ -636,16 +645,20 @@ struct pkgAcquire::MethodConfig * appropriate. */ MethodConfig(); + + /* \brief Destructor, empty currently */ + virtual ~MethodConfig() {}; }; /*}}}*/ /** \brief A monitor object for downloads controlled by the pkgAcquire class. {{{ * * \todo Why protected members? - * - * \todo Should the double members be uint64_t? */ class pkgAcquireStatus { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: /** \brief The last time at which this monitor object was updated. */ @@ -657,34 +670,34 @@ class pkgAcquireStatus /** \brief The number of bytes fetched as of the previous call to * pkgAcquireStatus::Pulse, including local items. */ - double LastBytes; + unsigned long long LastBytes; /** \brief The current rate of download as of the most recent call * to pkgAcquireStatus::Pulse, in bytes per second. */ - double CurrentCPS; + unsigned long long CurrentCPS; /** \brief The number of bytes fetched as of the most recent call * to pkgAcquireStatus::Pulse, including local items. */ - double CurrentBytes; + unsigned long long CurrentBytes; /** \brief The total number of bytes that need to be fetched. * * \warning This member is inaccurate, as new items might be * enqueued while the download is in progress! */ - double TotalBytes; + unsigned long long TotalBytes; /** \brief The total number of bytes accounted for by items that * were successfully fetched. */ - double FetchedBytes; + unsigned long long FetchedBytes; /** \brief The amount of time that has elapsed since the download * started. */ - unsigned long ElapsedTime; + unsigned long long ElapsedTime; /** \brief The total number of items that need to be fetched. * @@ -717,7 +730,7 @@ class pkgAcquireStatus * * \param ResumePoint How much of the file was already fetched. */ - virtual void Fetched(unsigned long Size,unsigned long ResumePoint); + virtual void Fetched(unsigned long long Size,unsigned long long ResumePoint); /** \brief Invoked when the user should be prompted to change the * inserted removable media. @@ -736,7 +749,7 @@ class pkgAcquireStatus * \todo This is a horrible blocking monster; it should be CPSed * with prejudice. */ - virtual bool MediaChange(string Media,string Drive) = 0; + virtual bool MediaChange(std::string Media,std::string Drive) = 0; /** \brief Invoked when an item is confirmed to be up-to-date. diff --git a/apt-pkg/algorithms.cc b/apt-pkg/algorithms.cc index 44cba8d92..8beb2d51c 100644 --- a/apt-pkg/algorithms.cc +++ b/apt-pkg/algorithms.cc @@ -14,18 +14,26 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/algorithms.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/version.h> #include <apt-pkg/sptr.h> #include <apt-pkg/acquire-item.h> - -#include <apti18n.h> +#include <apt-pkg/edsp.h> +#include <apt-pkg/sourcelist.h> +#include <apt-pkg/fileutl.h> +#include <apt-pkg/progress.h> + #include <sys/types.h> #include <cstdlib> #include <algorithm> #include <iostream> +#include <stdio.h> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -327,6 +335,12 @@ bool pkgFixBroken(pkgDepCache &Cache) */ bool pkgDistUpgrade(pkgDepCache &Cache) { + std::string const solver = _config->Find("APT::Solver", "internal"); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, false, true, false, &Prog); + } + pkgDepCache::ActionGroup group(Cache); /* Upgrade all installed packages first without autoinst to help the resolver @@ -379,6 +393,12 @@ bool pkgDistUpgrade(pkgDepCache &Cache) to install packages not marked for install */ bool pkgAllUpgrade(pkgDepCache &Cache) { + std::string const solver = _config->Find("APT::Solver", "internal"); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false, &Prog); + } + pkgDepCache::ActionGroup group(Cache); pkgProblemResolver Fix(&Cache); @@ -451,11 +471,11 @@ bool pkgMinimizeUpgrade(pkgDepCache &Cache) // ProblemResolver::pkgProblemResolver - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgProblemResolver::pkgProblemResolver(pkgDepCache *pCache) : Cache(*pCache) +pkgProblemResolver::pkgProblemResolver(pkgDepCache *pCache) : d(NULL), Cache(*pCache) { // Allocate memory unsigned long Size = Cache.Head().PackageCount; - Scores = new signed short[Size]; + Scores = new int[Size]; Flags = new unsigned char[Size]; memset(Flags,0,sizeof(*Flags)*Size); @@ -495,20 +515,20 @@ void pkgProblemResolver::MakeScores() memset(Scores,0,sizeof(*Scores)*Size); // Important Required Standard Optional Extra - signed short PrioMap[] = { + int PrioMap[] = { 0, - (signed short) _config->FindI("pkgProblemResolver::Scores::Important",3), - (signed short) _config->FindI("pkgProblemResolver::Scores::Required",2), - (signed short) _config->FindI("pkgProblemResolver::Scores::Standard",1), - (signed short) _config->FindI("pkgProblemResolver::Scores::Optional",-1), - (signed short) _config->FindI("pkgProblemResolver::Scores::Extra",-2) + _config->FindI("pkgProblemResolver::Scores::Important",3), + _config->FindI("pkgProblemResolver::Scores::Required",2), + _config->FindI("pkgProblemResolver::Scores::Standard",1), + _config->FindI("pkgProblemResolver::Scores::Optional",-1), + _config->FindI("pkgProblemResolver::Scores::Extra",-2) }; - signed short PrioEssentials = _config->FindI("pkgProblemResolver::Scores::Essentials",100); - signed short PrioInstalledAndNotObsolete = _config->FindI("pkgProblemResolver::Scores::NotObsolete",1); - signed short PrioDepends = _config->FindI("pkgProblemResolver::Scores::Depends",1); - signed short PrioRecommends = _config->FindI("pkgProblemResolver::Scores::Recommends",1); - signed short AddProtected = _config->FindI("pkgProblemResolver::Scores::AddProtected",10000); - signed short AddEssential = _config->FindI("pkgProblemResolver::Scores::AddEssential",5000); + int PrioEssentials = _config->FindI("pkgProblemResolver::Scores::Essentials",100); + int PrioInstalledAndNotObsolete = _config->FindI("pkgProblemResolver::Scores::NotObsolete",1); + int PrioDepends = _config->FindI("pkgProblemResolver::Scores::Depends",1); + int PrioRecommends = _config->FindI("pkgProblemResolver::Scores::Recommends",1); + int AddProtected = _config->FindI("pkgProblemResolver::Scores::AddProtected",10000); + int AddEssential = _config->FindI("pkgProblemResolver::Scores::AddEssential",5000); if (_config->FindB("Debug::pkgProblemResolver::ShowScores",false) == true) clog << "Settings used to calculate pkgProblemResolver::Scores::" << endl @@ -530,13 +550,14 @@ void pkgProblemResolver::MakeScores() if (Cache[I].InstallVer == 0) continue; - signed short &Score = Scores[I->ID]; + int &Score = Scores[I->ID]; /* This is arbitrary, it should be high enough to elevate an essantial package above most other packages but low enough to allow an obsolete essential packages to be removed by a conflicts on a powerfull normal package (ie libc6) */ - if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential + || (I->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) Score += PrioEssentials; // We transform the priority @@ -568,7 +589,7 @@ void pkgProblemResolver::MakeScores() } // Copy the scores to advoid additive looping - SPtrArray<signed short> OldScores = new signed short[Size]; + SPtrArray<int> OldScores = new int[Size]; memcpy(OldScores,Scores,sizeof(*Scores)*Size); /* Now we cause 1 level of dependency inheritance, that is we add the @@ -611,7 +632,8 @@ void pkgProblemResolver::MakeScores() { if ((Flags[I->ID] & Protected) != 0) Scores[I->ID] += AddProtected; - if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + if ((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential || + (I->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) Scores[I->ID] += AddEssential; } } @@ -725,7 +747,20 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) return true; } /*}}}*/ -// ProblemResolver::Resolve - Run the resolution pass /*{{{*/ +// ProblemResolver::Resolve - calls a resolver to fix the situation /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool pkgProblemResolver::Resolve(bool BrokenFix) +{ + std::string const solver = _config->Find("APT::Solver", "internal"); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, false, false, false, &Prog); + } + return ResolveInternal(BrokenFix); +} + /*}}}*/ +// ProblemResolver::ResolveInternal - Run the resolution pass /*{{{*/ // --------------------------------------------------------------------- /* This routines works by calculating a score for each package. The score is derived by considering the package's priority and all reverse @@ -739,12 +774,10 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg) The BrokenFix flag enables a mode where the algorithm tries to upgrade packages to advoid problems. */ -bool pkgProblemResolver::Resolve(bool BrokenFix) +bool pkgProblemResolver::ResolveInternal(bool const BrokenFix) { pkgDepCache::ActionGroup group(Cache); - unsigned long Size = Cache.Head().PackageCount; - // Record which packages are marked for install bool Again = false; do @@ -774,7 +807,9 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) clog << "Starting" << endl; MakeScores(); - + + unsigned long const Size = Cache.Head().PackageCount; + /* We have to order the packages so that the broken fixing pass operates from highest score to lowest. This prevents problems when high score packages cause the removal of lower score packages that @@ -1065,8 +1100,7 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) LEnd->Dep = End; LEnd++; - if (Start->Type != pkgCache::Dep::Conflicts && - Start->Type != pkgCache::Dep::Obsoletes) + if (Start.IsNegative() == false) break; } } @@ -1176,7 +1210,6 @@ bool pkgProblemResolver::Resolve(bool BrokenFix) return true; } /*}}}*/ - // ProblemResolver::BreaksInstOrPolicy - Check if the given pkg is broken/*{{{*/ // --------------------------------------------------------------------- /* This checks if the given package is broken either by a hard dependency @@ -1207,7 +1240,7 @@ bool pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator I) return false; } - + /*}}}*/ // ProblemResolver::ResolveByKeep - Resolve problems using keep /*{{{*/ // --------------------------------------------------------------------- /* This is the work horse of the soft upgrade routine. It is very gental @@ -1215,6 +1248,21 @@ bool pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator I) system was non-broken previously. */ bool pkgProblemResolver::ResolveByKeep() { + std::string const solver = _config->Find("APT::Solver", "internal"); + if (solver != "internal") { + OpTextProgress Prog(*_config); + return EDSP::ResolveExternal(solver.c_str(), Cache, true, false, false, &Prog); + } + return ResolveByKeepInternal(); +} + /*}}}*/ +// ProblemResolver::ResolveByKeepInternal - Resolve problems using keep /*{{{*/ +// --------------------------------------------------------------------- +/* This is the work horse of the soft upgrade routine. It is very gental + in that it does not install or remove any packages. It is assumed that the + system was non-broken previously. */ +bool pkgProblemResolver::ResolveByKeepInternal() +{ pkgDepCache::ActionGroup group(Cache); unsigned long Size = Cache.Head().PackageCount; @@ -1384,6 +1432,13 @@ static int PrioComp(const void *A,const void *B) if ((L.ParentPkg()->Flags & pkgCache::Flag::Essential) != pkgCache::Flag::Essential && (R.ParentPkg()->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) return -1; + + if ((L.ParentPkg()->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important && + (R.ParentPkg()->Flags & pkgCache::Flag::Important) != pkgCache::Flag::Important) + return 1; + if ((L.ParentPkg()->Flags & pkgCache::Flag::Important) != pkgCache::Flag::Important && + (R.ParentPkg()->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) + return -1; if (L->Priority != R->Priority) return R->Priority - L->Priority; @@ -1398,7 +1453,7 @@ void pkgPrioSortList(pkgCache &Cache,pkgCache::Version **List) qsort(List,Count,sizeof(*List),PrioComp); } /*}}}*/ -// CacheFile::ListUpdate - update the cache files /*{{{*/ +// ListUpdate - update the cache files /*{{{*/ // --------------------------------------------------------------------- /* This is a simple wrapper to update the cache. it will fetch stuff * from the network (or any other sources defined in sources.list) diff --git a/apt-pkg/algorithms.h b/apt-pkg/algorithms.h index 99501bed1..37eacf1f8 100644 --- a/apt-pkg/algorithms.h +++ b/apt-pkg/algorithms.h @@ -33,11 +33,15 @@ #include <apt-pkg/packagemanager.h> #include <apt-pkg/depcache.h> -#include <apt-pkg/acquire.h> #include <iostream> +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/acquire.h> using std::ostream; +#endif + +class pkgAcquireStatus; class pkgSimulate : public pkgPackageManager /*{{{*/ { @@ -63,13 +67,13 @@ class pkgSimulate : public pkgPackageManager /*{{{*/ pkgDepCache::ActionGroup group; // The Actuall installation implementation - virtual bool Install(PkgIterator Pkg,string File); + virtual bool Install(PkgIterator Pkg,std::string File); virtual bool Configure(PkgIterator Pkg); virtual bool Remove(PkgIterator Pkg,bool Purge); private: void ShortBreaks(); - void Describe(PkgIterator iPkg,ostream &out,bool Current,bool Candidate); + void Describe(PkgIterator iPkg,std::ostream &out,bool Current,bool Candidate); public: @@ -78,6 +82,9 @@ private: /*}}}*/ class pkgProblemResolver /*{{{*/ { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + pkgDepCache &Cache; typedef pkgCache::PkgIterator PkgIterator; typedef pkgCache::VerIterator VerIterator; @@ -89,7 +96,7 @@ class pkgProblemResolver /*{{{*/ enum Flags {Protected = (1 << 0), PreInstalled = (1 << 1), Upgradable = (1 << 2), ReInstateTried = (1 << 3), ToRemove = (1 << 4)}; - signed short *Scores; + int *Scores; unsigned char *Flags; bool Debug; @@ -105,6 +112,9 @@ class pkgProblemResolver /*{{{*/ void MakeScores(); bool DoUpgrade(pkgCache::PkgIterator Pkg); + + bool ResolveInternal(bool const BrokenFix = false); + bool ResolveByKeepInternal(); protected: bool InstOrNewPolicyBroken(pkgCache::PkgIterator Pkg); diff --git a/apt-pkg/aptconfiguration.cc b/apt-pkg/aptconfiguration.cc index bc385b2dc..4324f0e63 100644 --- a/apt-pkg/aptconfiguration.cc +++ b/apt-pkg/aptconfiguration.cc @@ -8,6 +8,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/configuration.h> #include <apt-pkg/error.h> @@ -18,6 +20,7 @@ #include <sys/types.h> #include <dirent.h> #include <stdio.h> +#include <fcntl.h> #include <algorithm> #include <string> @@ -57,10 +60,10 @@ const Configuration::getCompressionTypes(bool const &Cached) { if ((*o).empty() == true) continue; // ignore types we have no method ready to use - if (_config->Exists(string("Acquire::CompressionTypes::").append(*o)) == false) + if (_config->Exists(std::string("Acquire::CompressionTypes::").append(*o)) == false) continue; // ignore types we have no app ready to use - string const appsetting = string("Dir::Bin::").append(*o); + std::string const appsetting = std::string("Dir::Bin::").append(*o); if (_config->Exists(appsetting) == true) { std::string const app = _config->FindFile(appsetting.c_str(), ""); if (app.empty() == false && FileExists(app) == false) @@ -81,7 +84,7 @@ const Configuration::getCompressionTypes(bool const &Cached) { if (std::find(types.begin(),types.end(),Types->Tag) != types.end()) continue; // ignore types we have no app ready to use - string const appsetting = string("Dir::Bin::").append(Types->Value); + std::string const appsetting = std::string("Dir::Bin::").append(Types->Value); if (appsetting.empty() == false && _config->Exists(appsetting) == true) { std::string const app = _config->FindFile(appsetting.c_str(), ""); if (app.empty() == false && FileExists(app) == false) @@ -93,7 +96,7 @@ const Configuration::getCompressionTypes(bool const &Cached) { // add the special "uncompressed" type if (std::find(types.begin(), types.end(), "uncompressed") == types.end()) { - string const uncompr = _config->FindFile("Dir::Bin::uncompressed", ""); + std::string const uncompr = _config->FindFile("Dir::Bin::uncompressed", ""); if (uncompr.empty() == true || FileExists(uncompr) == true) types.push_back("uncompressed"); } @@ -326,29 +329,79 @@ std::vector<std::string> const Configuration::getArchitectures(bool const &Cache // FIXME: It is a bit unclean to have debian specific code here… if (archs.empty() == true) { archs.push_back(arch); - string dpkgcall = _config->Find("Dir::Bin::dpkg", "dpkg"); - std::vector<string> const dpkgoptions = _config->FindVector("DPkg::options"); - for (std::vector<string>::const_iterator o = dpkgoptions.begin(); - o != dpkgoptions.end(); ++o) - dpkgcall.append(" ").append(*o); - dpkgcall.append(" --print-foreign-architectures 2> /dev/null"); - FILE *dpkg = popen(dpkgcall.c_str(), "r"); + + // Generate the base argument list for dpkg + std::vector<const char *> Args; + string Tmp = _config->Find("Dir::Bin::dpkg","dpkg"); + { + string const dpkgChrootDir = _config->FindDir("DPkg::Chroot-Directory", "/"); + size_t dpkgChrootLen = dpkgChrootDir.length(); + if (dpkgChrootDir != "/" && Tmp.find(dpkgChrootDir) == 0) { + if (dpkgChrootDir[dpkgChrootLen - 1] == '/') + --dpkgChrootLen; + Tmp = Tmp.substr(dpkgChrootLen); + } + } + Args.push_back(Tmp.c_str()); + + // Stick in any custom dpkg options + ::Configuration::Item const *Opts = _config->Tree("DPkg::Options"); + if (Opts != 0) { + Opts = Opts->Child; + for (; Opts != 0; Opts = Opts->Next) + { + if (Opts->Value.empty() == true) + continue; + Args.push_back(Opts->Value.c_str()); + } + } + + Args.push_back("--print-foreign-architectures"); + Args.push_back(NULL); + + int external[2] = {-1, -1}; + if (pipe(external) != 0) + { + _error->WarningE("getArchitecture", "Can't create IPC pipe for dpkg --print-foreign-architectures"); + return archs; + } + + pid_t dpkgMultiArch = ExecFork(); + if (dpkgMultiArch == 0) { + close(external[0]); + std::string const chrootDir = _config->FindDir("DPkg::Chroot-Directory"); + if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0) + _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --print-foreign-architectures", chrootDir.c_str()); + int const nullfd = open("/dev/null", O_RDONLY); + dup2(nullfd, STDIN_FILENO); + dup2(external[1], STDOUT_FILENO); + dup2(nullfd, STDERR_FILENO); + execvp(Args[0], (char**) &Args[0]); + _error->WarningE("getArchitecture", "Can't detect foreign architectures supported by dpkg!"); + _exit(100); + } + close(external[1]); + + FILE *dpkg = fdopen(external[0], "r"); char buf[1024]; if(dpkg != NULL) { - if (fgets(buf, sizeof(buf), dpkg) != NULL) { + while (fgets(buf, sizeof(buf), dpkg) != NULL) { char* arch = strtok(buf, " "); while (arch != NULL) { for (; isspace(*arch) != 0; ++arch); if (arch[0] != '\0') { char const* archend = arch; for (; isspace(*archend) == 0 && *archend != '\0'; ++archend); - archs.push_back(string(arch, (archend - arch))); + string a(arch, (archend - arch)); + if (std::find(archs.begin(), archs.end(), a) == archs.end()) + archs.push_back(a); } arch = strtok(NULL, " "); } } - pclose(dpkg); + fclose(dpkg); } + ExecWait(dpkgMultiArch, "dpkg --print-foreign-architectures", true); return archs; } @@ -441,7 +494,7 @@ Configuration::Compressor::Compressor(char const *name, char const *extension, char const *binary, char const *compressArg, char const *uncompressArg, unsigned short const cost) { - std::string const config = string("APT:Compressor::").append(name).append("::"); + std::string const config = std::string("APT:Compressor::").append(name).append("::"); Name = _config->Find(std::string(config).append("Name"), name); Extension = _config->Find(std::string(config).append("Extension"), extension); Binary = _config->Find(std::string(config).append("Binary"), binary); diff --git a/apt-pkg/cachefile.cc b/apt-pkg/cachefile.cc index a76cfc08e..7c2276185 100644 --- a/apt-pkg/cachefile.cc +++ b/apt-pkg/cachefile.cc @@ -12,6 +12,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/cachefile.h> #include <apt-pkg/error.h> #include <apt-pkg/sourcelist.h> @@ -21,13 +23,14 @@ #include <apt-pkg/pkgsystem.h> #include <apt-pkg/acquire-item.h> #include <apt-pkg/fileutl.h> - +#include <apt-pkg/progress.h> + #include <apti18n.h> /*}}}*/ // CacheFile::CacheFile - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgCacheFile::pkgCacheFile() : Map(NULL), Cache(NULL), DCache(NULL), +pkgCacheFile::pkgCacheFile() : d(NULL), Map(NULL), Cache(NULL), DCache(NULL), SrcList(NULL), Policy(NULL) { } @@ -175,6 +178,40 @@ void pkgCacheFile::RemoveCaches() unlink(pkgcache.c_str()); if (srcpkgcache.empty() == false && RealFileExists(srcpkgcache) == true) unlink(srcpkgcache.c_str()); + if (pkgcache.empty() == false) + { + std::string cachedir = flNotFile(pkgcache); + std::string cachefile = flNotDir(pkgcache); + if (cachedir.empty() != true && cachefile.empty() != true && DirectoryExists(cachedir) == true) + { + cachefile.append("."); + std::vector<std::string> caches = GetListOfFilesInDir(cachedir, false); + for (std::vector<std::string>::const_iterator file = caches.begin(); file != caches.end(); ++file) + { + std::string nuke = flNotDir(*file); + if (strncmp(cachefile.c_str(), nuke.c_str(), cachefile.length()) != 0) + continue; + unlink(file->c_str()); + } + } + } + + if (srcpkgcache.empty() == true) + return; + + std::string cachedir = flNotFile(srcpkgcache); + std::string cachefile = flNotDir(srcpkgcache); + if (cachedir.empty() == true || cachefile.empty() == true || DirectoryExists(cachedir) == false) + return; + cachefile.append("."); + std::vector<std::string> caches = GetListOfFilesInDir(cachedir, false); + for (std::vector<std::string>::const_iterator file = caches.begin(); file != caches.end(); ++file) + { + std::string nuke = flNotDir(*file); + if (strncmp(cachefile.c_str(), nuke.c_str(), cachefile.length()) != 0) + continue; + unlink(file->c_str()); + } } /*}}}*/ // CacheFile::Close - close the cache files /*{{{*/ diff --git a/apt-pkg/cachefile.h b/apt-pkg/cachefile.h index b4f41c6f4..802b12b61 100644 --- a/apt-pkg/cachefile.h +++ b/apt-pkg/cachefile.h @@ -17,14 +17,24 @@ #ifndef PKGLIB_CACHEFILE_H #define PKGLIB_CACHEFILE_H - #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; class pkgCacheFile { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: MMap *Map; diff --git a/apt-pkg/cachefilter.cc b/apt-pkg/cachefilter.cc index 8f0725ea3..9ec3fa699 100644 --- a/apt-pkg/cachefilter.cc +++ b/apt-pkg/cachefilter.cc @@ -4,6 +4,8 @@ Collection of functor classes */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/cachefilter.h> #include <apt-pkg/error.h> #include <apt-pkg/pkgcache.h> @@ -16,7 +18,7 @@ /*}}}*/ namespace APT { namespace CacheFilter { -PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::string const &Pattern) {/*{{{*/ +PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::string const &Pattern) : d(NULL) {/*{{{*/ pattern = new regex_t; int const Res = regcomp(pattern, Pattern.c_str(), REG_EXTENDED | REG_ICASE | REG_NOSUB); if (Res == 0) diff --git a/apt-pkg/cachefilter.h b/apt-pkg/cachefilter.h index e7ab1723f..5d426008b 100644 --- a/apt-pkg/cachefilter.h +++ b/apt-pkg/cachefilter.h @@ -16,6 +16,8 @@ namespace APT { namespace CacheFilter { // PackageNameMatchesRegEx /*{{{*/ class PackageNameMatchesRegEx { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; regex_t* pattern; public: PackageNameMatchesRegEx(std::string const &Pattern); diff --git a/apt-pkg/cacheiterators.h b/apt-pkg/cacheiterators.h index 0c9813c6d..d5e018be9 100644 --- a/apt-pkg/cacheiterators.h +++ b/apt-pkg/cacheiterators.h @@ -32,6 +32,7 @@ #include<iterator> #include<string.h> + // abstract Iterator template /*{{{*/ /* This template provides the very basic iterator methods we need to have for doing some walk-over-the-cache magic */ @@ -111,7 +112,7 @@ class pkgCache::GrpIterator: public Iterator<Group, GrpIterator> { inline const char *Name() const {return S->Name == 0?0:Owner->StrP + S->Name;}; inline PkgIterator PackageList() const; - PkgIterator FindPkg(string Arch = "any") const; + PkgIterator FindPkg(std::string Arch = "any") const; /** \brief find the package with the "best" architecture The best architecture is either the "native" or the first @@ -206,15 +207,10 @@ class pkgCache::VerIterator : public Iterator<Version, VerIterator> { inline const char *VerStr() const {return S->VerStr == 0?0:Owner->StrP + S->VerStr;}; inline const char *Section() const {return S->Section == 0?0:Owner->StrP + S->Section;}; inline const char *Arch() const { - if (S->MultiArch == pkgCache::Version::All || - S->MultiArch == pkgCache::Version::AllForeign || - S->MultiArch == pkgCache::Version::AllAllowed) + if ((S->MultiArch & pkgCache::Version::All) == pkgCache::Version::All) return "all"; return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; }; - __deprecated inline const char *Arch(bool const pseudo) const { - return S->ParentPkg == 0?0:Owner->StrP + ParentPkg()->Arch; - }; inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + S->ParentPkg);}; inline DescIterator DescriptionList() const; @@ -224,10 +220,9 @@ class pkgCache::VerIterator : public Iterator<Version, VerIterator> { inline VerFileIterator FileList() const; bool Downloadable() const; inline const char *PriorityType() const {return Owner->Priority(S->Priority);}; - string RelStr() const; + std::string RelStr() const; bool Automatic() const; - __deprecated bool Pseudo() const; VerFileIterator NewestFile() const; inline VerIterator(pkgCache &Owner,Version *Trg = 0) : Iterator<Version, VerIterator>(Owner, Trg) { @@ -288,6 +283,8 @@ class pkgCache::DepIterator : public Iterator<Dependency, DepIterator> { inline bool Reverse() const {return Type == DepRev;}; bool IsCritical() const; bool IsNegative() const; + bool IsIgnorable(PrvIterator const &Prv) const; + bool IsIgnorable(PkgIterator const &Pkg) const; void GlobOr(DepIterator &Start,DepIterator &End); Version **AllTargets() const; bool SmartTargetPkg(PkgIterator &Result) const; @@ -371,7 +368,7 @@ class pkgCache::PkgFileIterator : public Iterator<PackageFile, PkgFileIterator> inline const char *IndexType() const {return S->IndexType == 0?0:Owner->StrP + S->IndexType;}; bool IsOk(); - string RelStr(); + std::string RelStr(); // Constructors inline PkgFileIterator() : Iterator<PackageFile, PkgFileIterator>() {}; diff --git a/apt-pkg/cacheset.cc b/apt-pkg/cacheset.cc index a1de613e2..b892ab4bf 100644 --- a/apt-pkg/cacheset.cc +++ b/apt-pkg/cacheset.cc @@ -9,22 +9,27 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/aptconfiguration.h> +#include <apt-pkg/cachefile.h> #include <apt-pkg/cachefilter.h> #include <apt-pkg/cacheset.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> #include <apt-pkg/versionmatch.h> - -#include <apti18n.h> +#include <apt-pkg/pkgrecords.h> +#include <apt-pkg/policy.h> #include <vector> #include <regex.h> + +#include <apti18n.h> /*}}}*/ 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) { @@ -33,13 +38,16 @@ PackageSet PackageSet::FromTask(pkgCacheFile &Cache, std::string pattern, CacheS } 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); @@ -49,9 +57,10 @@ PackageSet PackageSet::FromTask(pkgCacheFile &Cache, std::string pattern, CacheS 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) @@ -70,22 +79,33 @@ PackageSet PackageSet::FromTask(pkgCacheFile &Cache, std::string pattern, CacheS 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"; @@ -98,11 +118,11 @@ PackageSet PackageSet::FromRegEx(pkgCacheFile &Cache, std::string pattern, Cache } 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; @@ -118,18 +138,25 @@ PackageSet PackageSet::FromRegEx(pkgCacheFile &Cache, std::string pattern, Cache continue; } - pkgset.insert(Pkg); + pci->insert(Pkg); + helper.showRegExSelection(Pkg, pattern); + found = true; + } + + if (found == false) { + helper.canNotFindRegEx(pci, Cache, pattern); + pci->setConstructor(UNKNOWN); + return false; } - if (pkgset.empty() == true) - return helper.canNotFindRegEx(Cache, pattern); + 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(':'); @@ -155,167 +182,155 @@ pkgCache::PkgIterator PackageSet::FromName(pkgCacheFile &Cache, 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("/="); - if (vertag != string::npos) { + if (vertag != std::string::npos) { ver = pkg.substr(vertag+1); verIsRel = (pkg[vertag] == '/'); pkg.erase(vertag); } 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 == string::npos) { - verset.insert(VersionSet::FromPackage(Cache, P, fallback, helper)); + if (vertag == std::string::npos) { + found |= VersionContainerInterface::FromPackage(vci, Cache, P, fallback, helper); continue; } pkgCache::VerIterator V; @@ -345,75 +360,78 @@ APT::VersionSet VersionSet::FromString(pkgCacheFile &Cache, std::string pkg, 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); @@ -426,13 +444,14 @@ pkgCache::VerIterator VersionSet::getCandidateVer(pkgCacheFile &Cache, } /*}}}*/ // 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) { @@ -442,46 +461,40 @@ pkgCache::PkgIterator CacheSetHelper::canNotFindPkgName(pkgCacheFile &Cache, } /*}}}*/ // 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 /*{{{*/ @@ -508,4 +521,21 @@ pkgCache::VerIterator CacheSetHelper::canNotFindInstalledVer(pkgCacheFile &Cache 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) { +} + /*}}}*/ } diff --git a/apt-pkg/cacheset.h b/apt-pkg/cacheset.h index eb4f04d72..6f0a0e358 100644 --- a/apt-pkg/cacheset.h +++ b/apt-pkg/cacheset.h @@ -14,14 +14,24 @@ #include <list> #include <map> #include <set> +#include <list> #include <string> +#include <iterator> -#include <apt-pkg/cachefile.h> +#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 @@ -32,25 +42,28 @@ class CacheSetHelper { /*{{{*/ 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, string const &pattern) {}; - virtual void showRegExSelection(PackageSet const &pkgset, 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, - 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, @@ -59,7 +72,7 @@ public: /*{{{*/ 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) { @@ -76,53 +89,138 @@ protected: 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; - inline pkgCache::Package const * operator->() const { - return &***this; - }; + 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) {}; + }; + + 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; }; + inline iterator& operator=(iterator const &i) { _iter = i._iter; return *this; }; + inline iterator& operator=(typename Container::iterator const &i) { _iter = i; return *this; }; + 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(); }; + //FIXME: on ABI break, replace the first with the second without bool + void erase(iterator position) { _cont.erase((typename Container::iterator)position); }; + iterator& erase(iterator &position, bool) { return 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 @@ -132,8 +230,12 @@ public: /*{{{*/ \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); } @@ -146,32 +248,43 @@ public: /*{{{*/ \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 @@ -181,20 +294,16 @@ public: /*{{{*/ \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 @@ -206,78 +315,93 @@ public: /*{{{*/ \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(); }; - __deprecated inline const char *Arch(bool const pseudo) 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 string RelStr() const { return (**this).RelStr(); }; - inline bool Automatic() const { return (**this).Automatic(); }; - __deprecated inline bool Pseudo() const { return false; }; - 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 { @@ -297,6 +421,120 @@ public: /*{{{*/ 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; }; + inline iterator& operator=(iterator const &i) { _iter = i._iter; return *this; }; + inline iterator& operator=(typename Container::iterator const &i) { _iter = i; return *this; }; + 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(); }; + //FIXME: on ABI break, replace the first with the second without bool + void erase(iterator position) { _cont.erase((typename Container::iterator)position); }; + iterator& erase(iterator &position, bool) { return 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 @@ -304,26 +542,34 @@ public: /*{{{*/ \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); } @@ -333,57 +579,80 @@ public: /*{{{*/ \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 diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index b8acf0cbe..50c204371 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -1,5 +1,6 @@ /* */ +#include<config.h> #include<apt-pkg/init.h> #include<apt-pkg/error.h> @@ -7,11 +8,11 @@ #include<apt-pkg/strutl.h> #include<apt-pkg/cdrom.h> #include<apt-pkg/aptconfiguration.h> +#include<apt-pkg/configuration.h> +#include<apt-pkg/fileutl.h> #include<sstream> #include<fstream> -#include<config.h> -#include<apti18n.h> #include <sys/stat.h> #include <fcntl.h> #include <dirent.h> @@ -22,6 +23,8 @@ #include "indexcopy.h" +#include<apti18n.h> + using namespace std; // FindPackages - Find the package files on the CDROM /*{{{*/ @@ -55,66 +58,91 @@ bool pkgCdrom::FindPackages(string CD, 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()); @@ -249,30 +277,43 @@ bool pkgCdrom::DropBinaryArch(vector<string> &List) /* 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 @@ -298,7 +339,7 @@ bool pkgCdrom::DropRepeats(vector<string> &List,const char *Name) List.erase(List.begin()+I); } - return true; + return couldFindAllFiles; } /*}}}*/ // ReduceSourceList - Takes the path list and reduces it /*{{{*/ @@ -389,7 +430,8 @@ bool pkgCdrom::WriteDatabase(Configuration &Cnf) Out.close(); - link(DFile.c_str(),string(DFile + '~').c_str()); + if (FileExists(DFile) == true && link(DFile.c_str(),string(DFile + '~').c_str()) != 0) + return _error->Errno("link", "Failed to link %s to %s~", DFile.c_str(), DFile.c_str()); if (rename(NewFile.c_str(),DFile.c_str()) != 0) return _error->Errno("rename","Failed to rename %s.new to %s", DFile.c_str(),DFile.c_str()); @@ -656,7 +698,8 @@ bool pkgCdrom::Add(pkgCdromStatus *log) /*{{{*/ return false; } - chdir(StartDir.c_str()); + if (chdir(StartDir.c_str()) != 0) + return _error->Errno("chdir","Unable to change to %s", StartDir.c_str()); if (_config->FindB("Debug::aptcdrom",false) == true) { @@ -677,7 +720,13 @@ bool pkgCdrom::Add(pkgCdromStatus *log) /*{{{*/ 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(""); @@ -874,9 +923,7 @@ pkgUdevCdromDevices::Dlopen() /*{{{*/ libudev_handle = h; udev_new = (udev* (*)(void)) dlsym(h, "udev_new"); udev_enumerate_add_match_property = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_property"); -#if 0 // FIXME: uncomment on next ABI break udev_enumerate_add_match_sysattr = (int (*)(udev_enumerate*, const char*, const char*))dlsym(h, "udev_enumerate_add_match_sysattr"); -#endif udev_enumerate_scan_devices = (int (*)(udev_enumerate*))dlsym(h, "udev_enumerate_scan_devices"); udev_enumerate_get_list_entry = (udev_list_entry* (*)(udev_enumerate*))dlsym(h, "udev_enumerate_get_list_entry"); udev_device_new_from_syspath = (udev_device* (*)(udev*, const char*))dlsym(h, "udev_device_new_from_syspath"); @@ -890,10 +937,8 @@ pkgUdevCdromDevices::Dlopen() /*{{{*/ return true; } /*}}}*/ - /*{{{*/ -// compatiblity only with the old API/ABI, can be removed on the next -// ABI break +// convenience interface, this will just call ScanForRemovable vector<CdromDevice> pkgUdevCdromDevices::Scan() { @@ -918,10 +963,6 @@ pkgUdevCdromDevices::ScanForRemovable(bool CdromOnly) if (CdromOnly) udev_enumerate_add_match_property(enumerate, "ID_CDROM", "1"); else { -#if 1 // FIXME: remove the next two lines on the next ABI break - int (*udev_enumerate_add_match_sysattr)(struct udev_enumerate *udev_enumerate, const char *property, const char *value); - udev_enumerate_add_match_sysattr = (int (*)(udev_enumerate*, const char*, const char*))dlsym(libudev_handle, "udev_enumerate_add_match_sysattr"); -#endif udev_enumerate_add_match_sysattr(enumerate, "removable", "1"); } diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h index e83c38582..cedfccff7 100644 --- a/apt-pkg/cdrom.h +++ b/apt-pkg/cdrom.h @@ -1,12 +1,16 @@ #ifndef PKGLIB_CDROM_H #define PKGLIB_CDROM_H -#include<apt-pkg/init.h> #include<string> #include<vector> - +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/init.h> using namespace std; +#endif + +class Configuration; +class OpProgress; class pkgCdromStatus /*{{{*/ { @@ -20,12 +24,12 @@ class pkgCdromStatus /*{{{*/ // total steps virtual void SetTotal(int total) { totalSteps = total; }; // update steps, will be called regularly as a "pulse" - virtual void Update(string text="", int current=0) = 0; + virtual void Update(std::string text="", int current=0) = 0; // ask for cdrom insert virtual bool ChangeCdrom() = 0; // ask for cdrom name - virtual bool AskCdromName(string &Name) = 0; + virtual bool AskCdromName(std::string &Name) = 0; // Progress indicator for the Index rewriter virtual OpProgress* GetOpProgress() {return NULL; }; }; @@ -47,22 +51,22 @@ class pkgCdrom /*{{{*/ }; - bool FindPackages(string CD, - vector<string> &List, - vector<string> &SList, - vector<string> &SigList, - vector<string> &TransList, - string &InfoDir, pkgCdromStatus *log, + bool FindPackages(std::string CD, + std::vector<std::string> &List, + std::vector<std::string> &SList, + std::vector<std::string> &SigList, + std::vector<std::string> &TransList, + std::string &InfoDir, pkgCdromStatus *log, unsigned int Depth = 0); - bool DropBinaryArch(vector<string> &List); - bool DropRepeats(vector<string> &List,const char *Name); - void ReduceSourcelist(string CD,vector<string> &List); + bool DropBinaryArch(std::vector<std::string> &List); + bool DropRepeats(std::vector<std::string> &List,const char *Name); + void ReduceSourcelist(std::string CD,std::vector<std::string> &List); bool WriteDatabase(Configuration &Cnf); - bool WriteSourceList(string Name,vector<string> &List,bool Source); - int Score(string Path); + bool WriteSourceList(std::string Name,std::vector<std::string> &List,bool Source); + int Score(std::string Path); public: - bool Ident(string &ident, pkgCdromStatus *log); + bool Ident(std::string &ident, pkgCdromStatus *log); bool Add(pkgCdromStatus *log); }; /*}}}*/ @@ -71,9 +75,9 @@ class pkgCdrom /*{{{*/ // class that uses libudev to find cdrom/removable devices dynamically struct CdromDevice /*{{{*/ { - string DeviceName; + std::string DeviceName; bool Mounted; - string MountPath; + std::string MountPath; }; /*}}}*/ class pkgUdevCdromDevices /*{{{*/ @@ -92,9 +96,7 @@ class pkgUdevCdromDevices /*{{{*/ struct udev_enumerate *(*udev_enumerate_new) (struct udev *udev); struct udev_list_entry *(*udev_list_entry_get_next)(struct udev_list_entry *list_entry); const char* (*udev_device_get_property_value)(struct udev_device *udev_device, const char *key); -#if 0 // FIXME: uncomment on next ABI break int (*udev_enumerate_add_match_sysattr)(struct udev_enumerate *udev_enumerate, const char *property, const char *value); -#endif // end libudev dlopen public: @@ -104,11 +106,11 @@ class pkgUdevCdromDevices /*{{{*/ // try to open bool Dlopen(); - // this is the new interface - vector<CdromDevice> ScanForRemovable(bool CdromOnly); - // FIXME: compat with the old interface/API/ABI only - vector<CdromDevice> Scan(); + // convenience interface, this will just call ScanForRemovable + // with "APT::cdrom::CdromOnly" + std::vector<CdromDevice> Scan(); + std::vector<CdromDevice> ScanForRemovable(bool CdromOnly); }; /*}}}*/ diff --git a/apt-pkg/clean.cc b/apt-pkg/clean.cc index 9850b93b4..9c167eaa5 100644 --- a/apt-pkg/clean.cc +++ b/apt-pkg/clean.cc @@ -8,23 +8,26 @@ ##################################################################### */ /*}}}*/ // Includes /*{{{*/ +#include<config.h> + #include <apt-pkg/clean.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> - -#include <apti18n.h> +#include <apt-pkg/fileutl.h> #include <dirent.h> #include <sys/stat.h> #include <unistd.h> + +#include <apti18n.h> /*}}}*/ // ArchiveCleaner::Go - Perform smart cleanup of the archive /*{{{*/ // --------------------------------------------------------------------- /* Scan the directory for files to erase, we check the version information against our database to see if it is interesting */ -bool pkgArchiveCleaner::Go(string Dir,pkgCache &Cache) +bool pkgArchiveCleaner::Go(std::string Dir,pkgCache &Cache) { bool CleanInstalled = _config->FindB("APT::Clean-Installed",true); @@ -32,7 +35,7 @@ bool pkgArchiveCleaner::Go(string Dir,pkgCache &Cache) if (D == 0) return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str()); - string StartDir = SafeGetCWD(); + std::string StartDir = SafeGetCWD(); if (chdir(Dir.c_str()) != 0) { closedir(D); @@ -51,9 +54,11 @@ bool pkgArchiveCleaner::Go(string Dir,pkgCache &Cache) struct stat St; if (stat(Dir->d_name,&St) != 0) { - chdir(StartDir.c_str()); + _error->Errno("stat",_("Unable to stat %s."),Dir->d_name); closedir(D); - return _error->Errno("stat",_("Unable to stat %s."),Dir->d_name); + if (chdir(StartDir.c_str()) != 0) + return _error->Errno("chdir", _("Unable to change to %s"), StartDir.c_str()); + return false; } // Grab the package name @@ -61,21 +66,21 @@ bool pkgArchiveCleaner::Go(string Dir,pkgCache &Cache) for (; *I != 0 && *I != '_';I++); if (*I != '_') continue; - string Pkg = DeQuoteString(string(Dir->d_name,I-Dir->d_name)); + std::string Pkg = DeQuoteString(std::string(Dir->d_name,I-Dir->d_name)); // Grab the version const char *Start = I + 1; for (I = Start; *I != 0 && *I != '_';I++); if (*I != '_') continue; - string Ver = DeQuoteString(string(Start,I-Start)); + std::string Ver = DeQuoteString(std::string(Start,I-Start)); // Grab the arch Start = I + 1; for (I = Start; *I != 0 && *I != '.' ;I++); if (*I != '.') continue; - string const Arch = DeQuoteString(string(Start,I-Start)); + std::string const Arch = DeQuoteString(std::string(Start,I-Start)); if (APT::Configuration::checkArchitecture(Arch) == false) continue; @@ -112,8 +117,9 @@ bool pkgArchiveCleaner::Go(string Dir,pkgCache &Cache) Erase(Dir->d_name,Pkg,Ver,St); }; - chdir(StartDir.c_str()); closedir(D); - return true; + if (chdir(StartDir.c_str()) != 0) + return _error->Errno("chdir", _("Unable to change to %s"), StartDir.c_str()); + return true; } /*}}}*/ diff --git a/apt-pkg/clean.h b/apt-pkg/clean.h index 2aee2bf54..ad4049e83 100644 --- a/apt-pkg/clean.h +++ b/apt-pkg/clean.h @@ -15,13 +15,16 @@ class pkgArchiveCleaner { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: - virtual void Erase(const char * /*File*/,string /*Pkg*/,string /*Ver*/,struct stat & /*St*/) {}; + virtual void Erase(const char * /*File*/,std::string /*Pkg*/,std::string /*Ver*/,struct stat & /*St*/) {}; public: - bool Go(string Dir,pkgCache &Cache); + bool Go(std::string Dir,pkgCache &Cache); virtual ~pkgArchiveCleaner() {}; }; diff --git a/apt-pkg/contrib/cdromutl.cc b/apt-pkg/contrib/cdromutl.cc index e25caf1a5..187f6bd59 100644 --- a/apt-pkg/contrib/cdromutl.cc +++ b/apt-pkg/contrib/cdromutl.cc @@ -10,6 +10,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/cdromutl.h> #include <apt-pkg/error.h> #include <apt-pkg/md5.h> @@ -17,8 +19,6 @@ #include <apt-pkg/configuration.h> #include <apt-pkg/strutl.h> -#include <apti18n.h> - #include <sys/wait.h> #include <sys/statvfs.h> #include <dirent.h> @@ -26,8 +26,12 @@ #include <sys/stat.h> #include <unistd.h> #include <stdio.h> + +#include <apti18n.h> /*}}}*/ +using std::string; + // IsMounted - Returns true if the mount point is mounted /*{{{*/ // --------------------------------------------------------------------- /* This is a simple algorithm that should always work, we stat the mount point diff --git a/apt-pkg/contrib/cdromutl.h b/apt-pkg/contrib/cdromutl.h index 38ed2996e..e94045b5c 100644 --- a/apt-pkg/contrib/cdromutl.h +++ b/apt-pkg/contrib/cdromutl.h @@ -12,13 +12,15 @@ #include <string> +#ifndef APT_8_CLEANER_HEADERS using std::string; +#endif // mount cdrom, DeviceName (e.g. /dev/sr0) is optional -bool MountCdrom(string Path, string DeviceName=""); -bool UnmountCdrom(string Path); -bool IdentCdrom(string CD,string &Res,unsigned int Version = 2); -bool IsMounted(string &Path); -string FindMountPointForDevice(const char *device); +bool MountCdrom(std::string Path, std::string DeviceName=""); +bool UnmountCdrom(std::string Path); +bool IdentCdrom(std::string CD,std::string &Res,unsigned int Version = 2); +bool IsMounted(std::string &Path); +std::string FindMountPointForDevice(const char *device); #endif diff --git a/apt-pkg/contrib/cmndline.cc b/apt-pkg/contrib/cmndline.cc index f7359c36e..159f330a1 100644 --- a/apt-pkg/contrib/cmndline.cc +++ b/apt-pkg/contrib/cmndline.cc @@ -11,11 +11,14 @@ ##################################################################### */ /*}}}*/ // Include files /*{{{*/ +#include<config.h> + +#include <apt-pkg/configuration.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> -#include <apti18n.h> +#include <apti18n.h> /*}}}*/ using namespace std; diff --git a/apt-pkg/contrib/cmndline.h b/apt-pkg/contrib/cmndline.h index 7c0c71aa7..9f505fd41 100644 --- a/apt-pkg/contrib/cmndline.h +++ b/apt-pkg/contrib/cmndline.h @@ -44,9 +44,11 @@ #ifndef PKGLIB_CMNDLINE_H #define PKGLIB_CMNDLINE_H - - +#ifndef APT_8_CLEANER_HEADERS #include <apt-pkg/configuration.h> +#endif + +class Configuration; class CommandLine { diff --git a/apt-pkg/contrib/configuration.cc b/apt-pkg/contrib/configuration.cc index 2db191ba2..36866a35a 100644 --- a/apt-pkg/contrib/configuration.cc +++ b/apt-pkg/contrib/configuration.cc @@ -15,16 +15,19 @@ ##################################################################### */ /*}}}*/ // Include files /*{{{*/ +#include <config.h> + #include <apt-pkg/configuration.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> #include <apt-pkg/fileutl.h> -#include <apti18n.h> #include <vector> #include <fstream> #include <iostream> +#include <apti18n.h> + using namespace std; /*}}}*/ @@ -182,8 +185,14 @@ string Configuration::FindFile(const char *Name,const char *Default) const } string val = Itm->Value; - while (Itm->Parent != 0 && Itm->Parent->Value.empty() == false) - { + while (Itm->Parent != 0) + { + if (Itm->Parent->Value.empty() == true) + { + Itm = Itm->Parent; + continue; + } + // Absolute if (val.length() >= 1 && val[0] == '/') break; diff --git a/apt-pkg/contrib/configuration.h b/apt-pkg/contrib/configuration.h index 2844ec097..4c2e75041 100644 --- a/apt-pkg/contrib/configuration.h +++ b/apt-pkg/contrib/configuration.h @@ -34,7 +34,9 @@ #include <vector> #include <iostream> +#ifndef APT_8_CLEANER_HEADERS using std::string; +#endif class Configuration { @@ -42,13 +44,13 @@ class Configuration struct Item { - string Value; - string Tag; + std::string Value; + std::string Tag; Item *Parent; Item *Child; Item *Next; - string FullTag(const Item *Stop = 0) const; + std::string FullTag(const Item *Stop = 0) const; Item() : Parent(0), Child(0), Next(0) {}; }; @@ -67,35 +69,35 @@ class Configuration public: - string Find(const char *Name,const char *Default = 0) const; - string Find(string const &Name,const char *Default = 0) const {return Find(Name.c_str(),Default);}; - string Find(string const &Name, string const &Default) const {return Find(Name.c_str(),Default.c_str());}; - string FindFile(const char *Name,const char *Default = 0) const; - string FindDir(const char *Name,const char *Default = 0) const; - std::vector<string> FindVector(const char *Name) const; - std::vector<string> FindVector(string const &Name) const { return FindVector(Name.c_str()); }; + std::string Find(const char *Name,const char *Default = 0) const; + std::string Find(std::string const &Name,const char *Default = 0) const {return Find(Name.c_str(),Default);}; + std::string Find(std::string const &Name, std::string const &Default) const {return Find(Name.c_str(),Default.c_str());}; + std::string FindFile(const char *Name,const char *Default = 0) const; + std::string FindDir(const char *Name,const char *Default = 0) const; + std::vector<std::string> FindVector(const char *Name) const; + std::vector<std::string> FindVector(std::string const &Name) const { return FindVector(Name.c_str()); }; int FindI(const char *Name,int const &Default = 0) const; - int FindI(string const &Name,int const &Default = 0) const {return FindI(Name.c_str(),Default);}; + int FindI(std::string const &Name,int const &Default = 0) const {return FindI(Name.c_str(),Default);}; bool FindB(const char *Name,bool const &Default = false) const; - bool FindB(string const &Name,bool const &Default = false) const {return FindB(Name.c_str(),Default);}; - string FindAny(const char *Name,const char *Default = 0) const; + bool FindB(std::string const &Name,bool const &Default = false) const {return FindB(Name.c_str(),Default);}; + std::string FindAny(const char *Name,const char *Default = 0) const; - inline void Set(const string &Name,const string &Value) {Set(Name.c_str(),Value);}; - void CndSet(const char *Name,const string &Value); + inline void Set(const std::string &Name,const std::string &Value) {Set(Name.c_str(),Value);}; + void CndSet(const char *Name,const std::string &Value); void CndSet(const char *Name,const int Value); - void Set(const char *Name,const string &Value); + void Set(const char *Name,const std::string &Value); void Set(const char *Name,const int &Value); - inline bool Exists(const string &Name) const {return Exists(Name.c_str());}; + inline bool Exists(const std::string &Name) const {return Exists(Name.c_str());}; bool Exists(const char *Name) const; bool ExistsAny(const char *Name) const; // clear a whole tree - void Clear(const string &Name); + void Clear(const std::string &Name); // remove a certain value from a list (e.g. the list of "APT::Keep-Fds") - void Clear(string const &List, string const &Value); - void Clear(string const &List, int const &Value); + void Clear(std::string const &List, std::string const &Value); + void Clear(std::string const &List, int const &Value); inline const Item *Tree(const char *Name) const {return Lookup(Name);}; @@ -127,11 +129,11 @@ class Configuration extern Configuration *_config; -bool ReadConfigFile(Configuration &Conf,const string &FName, +bool ReadConfigFile(Configuration &Conf,const std::string &FName, bool const &AsSectional = false, unsigned const &Depth = 0); -bool ReadConfigDir(Configuration &Conf,const string &Dir, +bool ReadConfigDir(Configuration &Conf,const std::string &Dir, bool const &AsSectional = false, unsigned const &Depth = 0); diff --git a/apt-pkg/contrib/crc-16.cc b/apt-pkg/contrib/crc-16.cc index b300ed67e..4058821f9 100644 --- a/apt-pkg/contrib/crc-16.cc +++ b/apt-pkg/contrib/crc-16.cc @@ -15,6 +15,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/crc-16.h> /*}}}*/ @@ -63,7 +65,7 @@ static unsigned short const crc16_table[256] = /* Recompute the FCS with one more character appended. */ #define CalcFCS(fcs, c) (((fcs) >> 8) ^ crc16_table[((fcs) ^ (c)) & 0xff]) unsigned short AddCRC16(unsigned short fcs, void const *Buf, - unsigned long len) + unsigned long long len) { unsigned char const *buf = (unsigned char const *)Buf; while (len--) diff --git a/apt-pkg/contrib/crc-16.h b/apt-pkg/contrib/crc-16.h index f30678bac..702de40b2 100644 --- a/apt-pkg/contrib/crc-16.h +++ b/apt-pkg/contrib/crc-16.h @@ -12,6 +12,6 @@ #define INIT_FCS 0xffff unsigned short AddCRC16(unsigned short fcs, void const *buf, - unsigned long len); + unsigned long long len); #endif diff --git a/apt-pkg/contrib/error.cc b/apt-pkg/contrib/error.cc index edb290f34..122e2c809 100644 --- a/apt-pkg/contrib/error.cc +++ b/apt-pkg/contrib/error.cc @@ -13,6 +13,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/error.h> #include <iostream> @@ -24,8 +26,7 @@ #include <string> #include <cstring> -#include "config.h" - /*}}}*/ + /*}}}*/ // Global Error Object /*{{{*/ /* If the implementation supports posix threads then the accessor function diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 85dc6f600..1808489d7 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -18,14 +18,15 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> #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 <apti18n.h> - #include <cstdlib> #include <cstring> #include <cstdio> @@ -43,14 +44,42 @@ #include <set> #include <algorithm> -#include <config.h> +// 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 + +#include <apti18n.h> /*}}}*/ 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 /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -132,10 +161,10 @@ bool CopyFile(FileFd &From,FileFd &To) // Buffered copy between fds SPtrArray<unsigned char> Buf = new unsigned char[64000]; - unsigned long Size = From.Size(); + unsigned long long Size = From.Size(); while (Size != 0) { - unsigned long ToRead = Size; + unsigned long long ToRead = Size; if (Size > 64000) ToRead = 64000; @@ -358,6 +387,13 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c { if (RealFileExists(File.c_str()) == false) { + // do not show ignoration warnings for directories + if ( +#ifdef _DIRENT_HAVE_D_TYPE + Ent->d_type == DT_DIR || +#endif + DirectoryExists(File.c_str()) == true) + continue; if (SilentIgnore.Match(Ent->d_name) == false) _error->Notice(_("Ignoring '%s' in directory '%s' as it is not a regular file"), Ent->d_name, Dir.c_str()); continue; @@ -429,6 +465,80 @@ std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> c std::sort(List.begin(),List.end()); return List; } +std::vector<string> GetListOfFilesInDir(string const &Dir, bool SortList) +{ + bool const Debug = _config->FindB("Debug::GetListOfFilesInDir", false); + if (Debug == true) + std::clog << "Accept in " << Dir << " all regular files" << std::endl; + + std::vector<string> List; + + if (DirectoryExists(Dir.c_str()) == false) + { + _error->Error(_("List of files can't be created as '%s' is not a directory"), Dir.c_str()); + return List; + } + + DIR *D = opendir(Dir.c_str()); + if (D == 0) + { + _error->Errno("opendir",_("Unable to read %s"),Dir.c_str()); + return List; + } + + for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) + { + // skip "hidden" files + if (Ent->d_name[0] == '.') + continue; + + // Make sure it is a file and not something else + string const File = flCombine(Dir,Ent->d_name); +#ifdef _DIRENT_HAVE_D_TYPE + if (Ent->d_type != DT_REG) +#endif + { + if (RealFileExists(File.c_str()) == false) + { + if (Debug == true) + std::clog << "Bad file: " << Ent->d_name << " → it is not a real file" << std::endl; + continue; + } + } + + // Skip bad filenames ala run-parts + const char *C = Ent->d_name; + for (; *C != 0; ++C) + if (isalpha(*C) == 0 && isdigit(*C) == 0 + && *C != '_' && *C != '-' && *C != '.') + break; + + // we don't reach the end of the name -> bad character included + if (*C != 0) + { + if (Debug == true) + std::clog << "Bad file: " << Ent->d_name << " → bad character »" << *C << "« in filename" << std::endl; + continue; + } + + // skip filenames which end with a period. These are never valid + if (*(C - 1) == '.') + { + if (Debug == true) + std::clog << "Bad file: " << Ent->d_name << " → Period as last character" << std::endl; + continue; + } + + if (Debug == true) + std::clog << "Accept file: " << Ent->d_name << " in " << Dir << std::endl; + List.push_back(File); + } + closedir(D); + + if (SortList == true) + std::sort(List.begin(),List.end()); + return List; +} /*}}}*/ // SafeGetCWD - This is a safer getcwd that returns a dynamic string /*{{{*/ // --------------------------------------------------------------------- @@ -717,83 +827,291 @@ bool ExecWait(pid_t Pid,const char *Name,bool Reap) // 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()); + } - case WriteAny: - iFd = open(FileName.c_str(),O_RDWR | O_CREAT,Perms); - break; + 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 WriteTemp: + 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()); + + 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 < 0) - return _error->Errno("open",_("Could not open file %s"),FileName.c_str()); - this->FileName = FileName; + 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()); + } + 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; + + // compat with the old API + if (Mode == ReadOnlyGzip && Compress == None) + Compress = Gzip; + + 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); + this->FileName = ""; + if (OpenInternDescriptor(Mode, compressor) == false) + { + if (AutoClose) + close (iFd); + return _error->Errno("gzdopen",_("Could not open file descriptor %d"), Fd); + } + 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); } - this->FileName = ""; + if (Comp == true) + close(Pipe[0]); + else + close(Pipe[1]); + if (Comp == true || FileName.empty() == true) + close(d->compressed_fd); + return true; } /*}}}*/ @@ -810,29 +1128,42 @@ FileFd::~FileFd() // --------------------------------------------------------------------- /* We are carefull to handle interruption by a signal while reading gracefully. */ -bool FileFd::Read(void *To,unsigned long Size,unsigned long *Actual) +bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual) { int Res; 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; + if (Res < 0) { + if (errno == EINTR) + continue; Flags |= Fail; +#if APT_USE_ZLIB + if (d->gz != NULL) + { + int err; + char const * const errmsg = gzerror(d->gz, &err); + if (err != Z_ERRNO) + return _error->Error("gzread: %s (%d: %s)", _("Read error"), err, errmsg); + } +#endif return _error->Errno("read",_("Read error")); } To = (char *)To + Res; Size -= Res; + d->seekpos += Res; if (Actual != 0) *Actual += Res; } @@ -849,21 +1180,52 @@ bool FileFd::Read(void *To,unsigned long Size,unsigned long *Actual) } Flags |= Fail; - return _error->Error(_("read, still have %lu to read but none left"),Size); + 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 /*{{{*/ // --------------------------------------------------------------------- /* */ -bool FileFd::Write(const void *From,unsigned long Size) +bool FileFd::Write(const void *From,unsigned long long Size) { int Res; 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; @@ -875,6 +1237,7 @@ bool FileFd::Write(const void *From,unsigned long Size) From = (char *)From + Res; Size -= Res; + d->seekpos += Res; } while (Res > 0 && Size > 0); @@ -882,53 +1245,108 @@ bool FileFd::Write(const void *From,unsigned long Size) return true; Flags |= Fail; - return _error->Error(_("write, still have %lu to write but couldn't"),Size); + return _error->Error(_("write, still have %llu to write but couldn't"), Size); } /*}}}*/ // FileFd::Seek - Seek in the file /*{{{*/ // --------------------------------------------------------------------- /* */ -bool FileFd::Seek(unsigned long To) +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 %lu",To); + return _error->Error("Unable to seek to %llu", To); } - + + d->seekpos = To; return true; } /*}}}*/ // FileFd::Skip - Seek in the file /*{{{*/ // --------------------------------------------------------------------- /* */ -bool FileFd::Skip(unsigned long Over) +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 %lu",Over); + return _error->Error("Unable to seek ahead %llu",Over); } - + d->seekpos = res; + return true; } /*}}}*/ // FileFd::Truncate - Truncate the file /*{{{*/ // --------------------------------------------------------------------- /* */ -bool FileFd::Truncate(unsigned long To) +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()); @@ -936,7 +1354,7 @@ bool FileFd::Truncate(unsigned long To) if (ftruncate(iFd,To) != 0) { Flags |= Fail; - return _error->Error("Unable to truncate to %lu",To); + return _error->Error("Unable to truncate to %llu",To); } return true; @@ -945,46 +1363,81 @@ bool FileFd::Truncate(unsigned long To) // FileFd::Tell - Current seek position /*{{{*/ // --------------------------------------------------------------------- /* */ -unsigned long FileFd::Tell() +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; } /*}}}*/ // FileFd::FileSize - Return the size of the file /*{{{*/ // --------------------------------------------------------------------- /* */ -unsigned long FileFd::FileSize() +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; } /*}}}*/ // FileFd::Size - Return the size of the content in the file /*{{{*/ // --------------------------------------------------------------------- /* */ -unsigned long FileFd::Size() +unsigned long long FileFd::Size() { - unsigned long size = FileSize(); + 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) { + off_t const oldPos = lseek(iFd,0,SEEK_CUR); /* 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 */ - off_t orig_pos = lseek(iFd, 0, SEEK_CUR); + // FIXME: Size for gz-files is limited by 32bit… no largefile support if (lseek(iFd, -4, SEEK_END) < 0) return _error->Errno("lseek","Unable to seek to end of gzipped file"); size = 0L; @@ -998,28 +1451,63 @@ unsigned long FileFd::Size() size = tmp_size; #endif - if (lseek(iFd, orig_pos, SEEK_SET) < 0) + if (lseek(iFd, oldPos, 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); - // gzdopen() on empty files always fails with "buffer error" here, ignore that +#if APT_USE_ZLIB + if (d != NULL && d->gz != NULL) { + int const e = gzclose(d->gz); + // gzdclose() 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()); } @@ -1029,16 +1517,23 @@ bool FileFd::Close() 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; } @@ -1055,3 +1550,5 @@ bool FileFd::Sync() return true; } /*}}}*/ + +gzFile FileFd::gzFd() { return (gzFile) d->gz; } diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index a1b177f38..1ca41cb7d 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -22,82 +22,142 @@ #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 -using std::string; - +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; - string FileName; - string TemporaryFileName; - gzFile gz; + std::string FileName; + std::string TemporaryFileName; 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 Size,bool AllowEof) + inline bool Read(void *To,unsigned long long Size,bool AllowEof) { - unsigned long Jnk; + unsigned long long Jnk; if (AllowEof) return Read(To,Size,&Jnk); return Read(To,Size); } - bool Read(void *To,unsigned long Size,unsigned long *Actual = 0); - bool Write(const void *From,unsigned long Size); - bool Seek(unsigned long To); - bool Skip(unsigned long To); - bool Truncate(unsigned long To); - unsigned long Tell(); - unsigned long Size(); - unsigned long FileSize(); - bool Open(string FileName,OpenMode Mode,unsigned long Perms = 0666); - bool OpenDescriptor(int Fd, OpenMode Mode, bool AutoClose=false); + 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); + bool Truncate(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. + This shouldn't happen all to often for the indexes, but deb's might be… + And as the auto-conversation converts a 'unsigned long *' to a 'bool' + instead of 'unsigned long long *' we need to provide this explicitely - + otherwise applications magically start to fail… */ + __deprecated bool Read(void *To,unsigned long long Size,unsigned long *Actual) + { + unsigned long long R; + bool const T = Read(To, Size, &R); + *Actual = R; + return T; + } + + 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;}; + inline void Fd(int fd) { OpenDescriptor(fd, ReadWrite);}; + __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 string &Name() {return FileName;}; + inline bool IsCompressed() {return (Flags & Compressed) == Compressed;}; + inline std::string &Name() {return FileName;}; - FileFd(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, 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,Perms); + 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); bool CopyFile(FileFd &From,FileFd &To); -int GetLock(string File,bool Errors = true); -bool FileExists(string File); -bool RealFileExists(string File); -bool DirectoryExists(string const &Path) __attrib_const; -bool CreateDirectory(string const &Parent, string const &Path); -time_t GetModificationTime(string const &Path); +int GetLock(std::string File,bool Errors = true); +bool FileExists(std::string File); +bool RealFileExists(std::string File); +bool DirectoryExists(std::string const &Path) __attrib_const; +bool CreateDirectory(std::string const &Parent, std::string const &Path); +time_t GetModificationTime(std::string const &Path); /** \brief Ensure the existence of the given Path * @@ -105,13 +165,14 @@ time_t GetModificationTime(string const &Path); * /apt/ will be removed before CreateDirectory call. * \param Path which should exist after (successful) call */ -bool CreateAPTDirectoryIfNeeded(string const &Parent, string const &Path); +bool CreateAPTDirectoryIfNeeded(std::string const &Parent, std::string const &Path); -std::vector<string> GetListOfFilesInDir(string const &Dir, string const &Ext, +std::vector<std::string> GetListOfFilesInDir(std::string const &Dir, std::string const &Ext, bool const &SortList, bool const &AllowNoExt=false); -std::vector<string> GetListOfFilesInDir(string const &Dir, std::vector<string> const &Ext, +std::vector<std::string> GetListOfFilesInDir(std::string const &Dir, std::vector<std::string> const &Ext, bool const &SortList); -string SafeGetCWD(); +std::vector<std::string> GetListOfFilesInDir(std::string const &Dir, bool SortList); +std::string SafeGetCWD(); void SetCloseExec(int Fd,bool Close); void SetNonBlock(int Fd,bool Block); bool WaitFd(int Fd,bool write = false,unsigned long timeout = 0); @@ -119,10 +180,10 @@ pid_t ExecFork(); bool ExecWait(pid_t Pid,const char *Name,bool Reap = false); // File string manipulators -string flNotDir(string File); -string flNotFile(string File); -string flNoLink(string File); -string flExtension(string File); -string flCombine(string Dir,string File); +std::string flNotDir(std::string File); +std::string flNotFile(std::string File); +std::string flNoLink(std::string File); +std::string flExtension(std::string File); +std::string flCombine(std::string Dir,std::string File); #endif diff --git a/apt-pkg/contrib/hashes.cc b/apt-pkg/contrib/hashes.cc index 985d89d90..e1a431823 100644 --- a/apt-pkg/contrib/hashes.cc +++ b/apt-pkg/contrib/hashes.cc @@ -11,39 +11,41 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/hashes.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/configuration.h> #include <apt-pkg/macros.h> -#include <unistd.h> +#include <unistd.h> #include <string> #include <iostream> /*}}}*/ const char* HashString::_SupportedHashes[] = { - "SHA256", "SHA1", "MD5Sum", NULL + "SHA512", "SHA256", "SHA1", "MD5Sum", NULL }; HashString::HashString() { } -HashString::HashString(string Type, string Hash) : Type(Type), Hash(Hash) +HashString::HashString(std::string Type, std::string Hash) : Type(Type), Hash(Hash) { } -HashString::HashString(string StringedHash) /*{{{*/ +HashString::HashString(std::string StringedHash) /*{{{*/ { // legacy: md5sum without "MD5Sum:" prefix - if (StringedHash.find(":") == string::npos && StringedHash.size() == 32) + if (StringedHash.find(":") == std::string::npos && StringedHash.size() == 32) { Type = "MD5Sum"; Hash = StringedHash; return; } - string::size_type pos = StringedHash.find(":"); + std::string::size_type pos = StringedHash.find(":"); Type = StringedHash.substr(0,pos); Hash = StringedHash.substr(pos+1, StringedHash.size() - pos); @@ -51,29 +53,34 @@ HashString::HashString(string StringedHash) /*{{{*/ std::clog << "HashString(string): " << Type << " : " << Hash << std::endl; } /*}}}*/ -bool HashString::VerifyFile(string filename) const /*{{{*/ +bool HashString::VerifyFile(std::string filename) const /*{{{*/ { - FileFd fd; - MD5Summation MD5; - SHA1Summation SHA1; - SHA256Summation SHA256; - string fileHash; + std::string fileHash; FileFd Fd(filename, FileFd::ReadOnly); - if(Type == "MD5Sum") + if(Type == "MD5Sum") { - MD5.AddFD(Fd.Fd(), Fd.Size()); - fileHash = (string)MD5.Result(); - } + MD5Summation MD5; + MD5.AddFD(Fd); + fileHash = (std::string)MD5.Result(); + } else if (Type == "SHA1") { - SHA1.AddFD(Fd.Fd(), Fd.Size()); - fileHash = (string)SHA1.Result(); - } - else if (Type == "SHA256") + SHA1Summation SHA1; + SHA1.AddFD(Fd); + fileHash = (std::string)SHA1.Result(); + } + else if (Type == "SHA256") { - SHA256.AddFD(Fd.Fd(), Fd.Size()); - fileHash = (string)SHA256.Result(); + SHA256Summation SHA256; + SHA256.AddFD(Fd); + fileHash = (std::string)SHA256.Result(); + } + else if (Type == "SHA512") + { + SHA512Summation SHA512; + SHA512.AddFD(Fd); + fileHash = (std::string)SHA512.Result(); } Fd.Close(); @@ -93,34 +100,70 @@ bool HashString::empty() const return (Type.empty() || Hash.empty()); } -string HashString::toStr() const +std::string HashString::toStr() const { - return Type+string(":")+Hash; + return Type + std::string(":") + Hash; } // Hashes::AddFD - Add the contents of the FD /*{{{*/ // --------------------------------------------------------------------- /* */ -bool Hashes::AddFD(int Fd,unsigned long Size) +bool Hashes::AddFD(int const Fd,unsigned long long Size, bool const addMD5, + bool const addSHA1, bool const addSHA256, bool const addSHA512) { unsigned char Buf[64*64]; - int Res = 0; + ssize_t Res = 0; int ToEOF = (Size == 0); while (Size != 0 || ToEOF) { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); + unsigned long long n = sizeof(Buf); + if (!ToEOF) n = std::min(Size, n); Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; + if (Res < 0 || (!ToEOF && Res != (ssize_t) n)) // error, or short read + return false; if (ToEOF && Res == 0) // EOF - break; + break; Size -= Res; - MD5.Add(Buf,Res); - SHA1.Add(Buf,Res); - SHA256.Add(Buf,Res); + if (addMD5 == true) + MD5.Add(Buf,Res); + if (addSHA1 == true) + SHA1.Add(Buf,Res); + if (addSHA256 == true) + SHA256.Add(Buf,Res); + if (addSHA512 == true) + 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; } /*}}}*/ - diff --git a/apt-pkg/contrib/hashes.h b/apt-pkg/contrib/hashes.h index 264f7fe90..0c0b6c6a7 100644 --- a/apt-pkg/contrib/hashes.h +++ b/apt-pkg/contrib/hashes.h @@ -16,37 +16,41 @@ #include <apt-pkg/md5.h> #include <apt-pkg/sha1.h> -#include <apt-pkg/sha256.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 { protected: - string Type; - string Hash; + std::string Type; + std::string Hash; static const char * _SupportedHashes[10]; public: - HashString(string Type, string Hash); - HashString(string StringedHashString); // init from str as "type:hash" + HashString(std::string Type, std::string Hash); + HashString(std::string StringedHashString); // init from str as "type:hash" HashString(); // get hash type used - string HashType() { return Type; }; + std::string HashType() { return Type; }; // verify the given filename against the currently loaded hash - bool VerifyFile(string filename) const; + bool VerifyFile(std::string filename) const; // helper - string toStr() const; // convert to str as "type:hash" + std::string toStr() const; // convert to str as "type:hash" bool empty() const; // return the list of hashes we support @@ -60,13 +64,21 @@ class Hashes MD5Summation MD5; SHA1Summation SHA1; SHA256Summation SHA256; + SHA512Summation SHA512; - inline bool Add(const unsigned char *Data,unsigned long Size) + inline bool Add(const unsigned char *Data,unsigned long long Size) { - return MD5.Add(Data,Size) && SHA1.Add(Data,Size) && SHA256.Add(Data,Size); + return MD5.Add(Data,Size) && SHA1.Add(Data,Size) && SHA256.Add(Data,Size) && SHA512.Add(Data,Size); }; inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); + inline bool AddFD(int const Fd,unsigned long long Size = 0) + { 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);}; }; diff --git a/apt-pkg/contrib/hashsum.cc b/apt-pkg/contrib/hashsum.cc new file mode 100644 index 000000000..289e43aa4 --- /dev/null +++ b/apt-pkg/contrib/hashsum.cc @@ -0,0 +1,50 @@ +// Cryptographic API Base +#include <config.h> + +#include <unistd.h> +#include "hashsum_template.h" + +// Summation::AddFD - Add content of file into the checksum /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool SummationImplementation::AddFD(int const Fd, unsigned long long Size) { + unsigned char Buf[64 * 64]; + ssize_t Res = 0; + int ToEOF = (Size == 0); + while (Size != 0 || ToEOF) + { + unsigned long long n = sizeof(Buf); + if (!ToEOF) n = std::min(Size, n); + Res = read(Fd, Buf, n); + if (Res < 0 || (!ToEOF && Res != (ssize_t) n)) // error, or short read + return false; + if (ToEOF && Res == 0) // EOF + break; + Size -= Res; + 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; +} + /*}}}*/ diff --git a/apt-pkg/contrib/hashsum_template.h b/apt-pkg/contrib/hashsum_template.h new file mode 100644 index 000000000..9bf160b2b --- /dev/null +++ b/apt-pkg/contrib/hashsum_template.h @@ -0,0 +1,118 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: hashsum_template.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ +/* ###################################################################### + + HashSumValueTemplate - Generic Storage for a hash value + + ##################################################################### */ + /*}}}*/ +#ifndef APTPKG_HASHSUM_TEMPLATE_H +#define APTPKG_HASHSUM_TEMPLATE_H + +#include <apt-pkg/fileutl.h> + +#include <string> +#include <cstring> +#include <algorithm> +#include <stdint.h> + +#include <apt-pkg/strutl.h> + +#ifndef APT_8_CLEANER_HEADERS +using std::string; +using std::min; +#endif + +template<int N> +class HashSumValue +{ + unsigned char Sum[N/8]; + + public: + + // Accessors + bool operator ==(const HashSumValue &rhs) const + { + return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; + }; + bool operator !=(const HashSumValue &rhs) const + { + return memcmp(Sum,rhs.Sum,sizeof(Sum)) != 0; + }; + + std::string Value() const + { + char Conv[16] = + { '0','1','2','3','4','5','6','7','8','9','a','b', + 'c','d','e','f' + }; + char Result[((N/8)*2)+1]; + Result[(N/8)*2] = 0; + + // Convert each char into two letters + int J = 0; + int I = 0; + for (; I != (N/8)*2; J++,I += 2) + { + Result[I] = Conv[Sum[J] >> 4]; + Result[I + 1] = Conv[Sum[J] & 0xF]; + } + return std::string(Result); + }; + + inline void Value(unsigned char S[N/8]) + { + for (int I = 0; I != sizeof(Sum); I++) + S[I] = Sum[I]; + }; + + inline operator std::string() const + { + return Value(); + }; + + bool Set(std::string Str) + { + return Hex2Num(Str,Sum,sizeof(Sum)); + }; + + inline void Set(unsigned char S[N/8]) + { + for (int I = 0; I != sizeof(Sum); I++) + Sum[I] = S[I]; + }; + + HashSumValue(std::string Str) + { + memset(Sum,0,sizeof(Sum)); + Set(Str); + } + HashSumValue() + { + memset(Sum,0,sizeof(Sum)); + } +}; + +class SummationImplementation +{ + public: + virtual bool Add(const unsigned char *inbuf, unsigned long long inlen) = 0; + inline bool Add(const char *inbuf, unsigned long long const inlen) + { return Add((unsigned char *)inbuf, inlen); }; + + inline bool Add(const unsigned char *Data) + { return Add(Data, strlen((const char *)Data)); }; + inline bool Add(const char *Data) + { return Add((const unsigned char *)Data, strlen((const char *)Data)); }; + + inline bool Add(const unsigned char *Beg, const unsigned char *End) + { return Add(Beg, End - Beg); }; + inline bool Add(const char *Beg, const char *End) + { 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 diff --git a/apt-pkg/contrib/md5.cc b/apt-pkg/contrib/md5.cc index c0fa8493d..4351aeb22 100644 --- a/apt-pkg/contrib/md5.cc +++ b/apt-pkg/contrib/md5.cc @@ -35,6 +35,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/md5.h> #include <apt-pkg/strutl.h> #include <apt-pkg/macros.h> @@ -43,7 +45,6 @@ #include <unistd.h> #include <netinet/in.h> // For htonl #include <inttypes.h> -#include <config.h> /*}}}*/ // byteSwap - Swap bytes in a buffer /*{{{*/ @@ -165,61 +166,6 @@ static void MD5Transform(uint32_t buf[4], uint32_t const in[16]) buf[3] += d; } /*}}}*/ -// MD5SumValue::MD5SumValue - Constructs the summation from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a MD5 is a 32 character hex number */ -MD5SumValue::MD5SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - /*}}}*/ -// MD5SumValue::MD5SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -MD5SumValue::MD5SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - /*}}}*/ -// MD5SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool MD5SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - /*}}}*/ -// MD5SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string MD5SumValue::Value() const -{ - char Conv[16] = {'0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f'}; - char Result[33]; - Result[32] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 32; J++, I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - /*}}}*/ -// MD5SumValue::operator == - Comparitor /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool MD5SumValue::operator ==(const MD5SumValue &rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ // MD5Summation::MD5Summation - Initialize the summer /*{{{*/ // --------------------------------------------------------------------- /* This assigns the deep magic initial values */ @@ -241,7 +187,7 @@ MD5Summation::MD5Summation() // MD5Summation::Add - 'Add' a data set to the hash /*{{{*/ // --------------------------------------------------------------------- /* */ -bool MD5Summation::Add(const unsigned char *data,unsigned long len) +bool MD5Summation::Add(const unsigned char *data,unsigned long long len) { if (Done == true) return false; @@ -286,29 +232,6 @@ bool MD5Summation::Add(const unsigned char *data,unsigned long len) return true; } /*}}}*/ -// MD5Summation::AddFD - Add the contents of a FD to the hash /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool MD5Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64*64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ // MD5Summation::Result - Returns the value of the sum /*{{{*/ // --------------------------------------------------------------------- /* Because this must add in the last bytes of the series it prevents anyone @@ -353,7 +276,7 @@ MD5SumValue MD5Summation::Result() } MD5SumValue V; - memcpy(V.Sum,buf,16); + V.Set((unsigned char *)buf); return V; } /*}}}*/ diff --git a/apt-pkg/contrib/md5.h b/apt-pkg/contrib/md5.h index 96c8975b4..25631b166 100644 --- a/apt-pkg/contrib/md5.h +++ b/apt-pkg/contrib/md5.h @@ -29,48 +29,29 @@ #include <algorithm> #include <stdint.h> +#include "hashsum_template.h" + +#ifndef APT_8_CLEANER_HEADERS using std::string; using std::min; +#endif -class MD5Summation; - -class MD5SumValue -{ - friend class MD5Summation; - unsigned char Sum[4*4]; - - public: - - // Accessors - bool operator ==(const MD5SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[16]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[16]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; - - MD5SumValue(string Str); - MD5SumValue(); -}; +typedef HashSumValue<128> MD5SumValue; -class MD5Summation +class MD5Summation : public SummationImplementation { uint32_t Buf[4]; unsigned char Bytes[2*4]; unsigned char In[16*4]; bool Done; - + public: - bool Add(const unsigned char *Data,unsigned long Size); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; + bool Add(const unsigned char *inbuf, unsigned long long inlen); + using SummationImplementation::Add; + MD5SumValue Result(); - + MD5Summation(); }; diff --git a/apt-pkg/contrib/mmap.cc b/apt-pkg/contrib/mmap.cc index 19381ae47..160718ea5 100644 --- a/apt-pkg/contrib/mmap.cc +++ b/apt-pkg/contrib/mmap.cc @@ -17,10 +17,11 @@ /*}}}*/ // Include Files /*{{{*/ #define _BSD_SOURCE +#include <config.h> + #include <apt-pkg/mmap.h> #include <apt-pkg/error.h> - -#include <apti18n.h> +#include <apt-pkg/fileutl.h> #include <sys/mman.h> #include <sys/stat.h> @@ -28,9 +29,10 @@ #include <fcntl.h> #include <stdlib.h> #include <errno.h> - #include <cstring> - /*}}}*/ + +#include <apti18n.h> + /*}}}*/ // MMap::MMap - Constructor /*{{{*/ // --------------------------------------------------------------------- @@ -64,7 +66,7 @@ MMap::~MMap() bool MMap::Map(FileFd &Fd) { iSize = Fd.Size(); - + // Set the permissions. int Prot = PROT_READ; int Map = MAP_SHARED; @@ -75,7 +77,18 @@ bool MMap::Map(FileFd &Fd) 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 _error->Error("Compressed file %s can't be read into mmap", Fd.Name().c_str()); + return true; + } + // Map it. Base = mmap(0,iSize,Prot,Map,Fd.Fd(),0); if (Base == (void *)-1) @@ -84,6 +97,13 @@ bool MMap::Map(FileFd &Fd) { // 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()); @@ -94,7 +114,7 @@ bool MMap::Map(FileFd &Fd) return false; } else - return _error->Errno("mmap",_("Couldn't make mmap of %lu bytes"), + return _error->Errno("mmap",_("Couldn't make mmap of %llu bytes"), iSize); } @@ -165,7 +185,7 @@ bool MMap::Sync(unsigned long Start,unsigned long Stop) return true; #ifdef _POSIX_SYNCHRONIZED_IO - unsigned long PSize = sysconf(_SC_PAGESIZE); + unsigned long long PSize = sysconf(_SC_PAGESIZE); if ((Flags & ReadOnly) != ReadOnly) { if (SyncToFd != 0) @@ -176,7 +196,7 @@ bool MMap::Sync(unsigned long Start,unsigned long Stop) } else { - if (msync((char *)Base+(int)(Start/PSize)*PSize,Stop - Start,MS_SYNC) < 0) + if (msync((char *)Base+(unsigned long long)(Start/PSize)*PSize,Stop - Start,MS_SYNC) < 0) return _error->Errno("msync", _("Unable to synchronize mmap")); } } @@ -196,7 +216,7 @@ DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long const &Work if (_error->PendingError() == true) return; - unsigned long EndOfFile = Fd->Size(); + unsigned long long EndOfFile = Fd->Size(); if (EndOfFile > WorkSpace) WorkSpace = EndOfFile; else if(WorkSpace > 0) @@ -284,7 +304,7 @@ DynamicMMap::~DynamicMMap() return; } - unsigned long EndOfFile = iSize; + unsigned long long EndOfFile = iSize; iSize = WorkSpace; Close(false); if(ftruncate(Fd->Fd(),EndOfFile) < 0) @@ -294,9 +314,9 @@ DynamicMMap::~DynamicMMap() // DynamicMMap::RawAllocate - Allocate a raw chunk of unaligned space /*{{{*/ // --------------------------------------------------------------------- /* This allocates a block of memory aligned to the given size */ -unsigned long DynamicMMap::RawAllocate(unsigned long Size,unsigned long Aln) +unsigned long DynamicMMap::RawAllocate(unsigned long long Size,unsigned long Aln) { - unsigned long Result = iSize; + unsigned long long Result = iSize; if (Aln != 0) Result += Aln - (iSize%Aln); @@ -411,7 +431,7 @@ bool DynamicMMap::Grow() { if (GrowFactor <= 0) return _error->Error(_("Unable to increase size of the MMap as automatic growing is disabled by user.")); - unsigned long const newSize = WorkSpace + GrowFactor; + unsigned long long const newSize = WorkSpace + GrowFactor; if(Fd != 0) { Fd->Seek(newSize - 1); diff --git a/apt-pkg/contrib/mmap.h b/apt-pkg/contrib/mmap.h index 2bf2c1540..6bd4a2d86 100644 --- a/apt-pkg/contrib/mmap.h +++ b/apt-pkg/contrib/mmap.h @@ -27,9 +27,13 @@ #include <string> -#include <apt-pkg/fileutl.h> +#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 types are too small. Where ever possible 'unsigned long' should be used @@ -41,7 +45,7 @@ class MMap protected: unsigned long Flags; - unsigned long iSize; + unsigned long long iSize; void *Base; // In case mmap can not be used, we keep a dup of the file @@ -60,8 +64,8 @@ class MMap // Simple accessors inline operator void *() {return Base;}; inline void *Data() {return Base;}; - inline unsigned long Size() {return iSize;}; - inline void AddSize(unsigned long const size) {iSize += size;}; + inline unsigned long long Size() {return iSize;}; + inline void AddSize(unsigned long long const size) {iSize += size;}; inline bool validData() const { return Base != (void *)-1 && Base != 0; }; // File manipulators @@ -99,10 +103,10 @@ class DynamicMMap : public MMap public: // Allocation - unsigned long RawAllocate(unsigned long Size,unsigned long Aln = 0); + unsigned long RawAllocate(unsigned long long Size,unsigned long Aln = 0); unsigned long Allocate(unsigned long ItemSize); unsigned long WriteString(const char *String,unsigned long Len = (unsigned long)-1); - inline unsigned long WriteString(const string &S) {return WriteString(S.c_str(),S.length());}; + inline unsigned long WriteString(const std::string &S) {return WriteString(S.c_str(),S.length());}; void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;}; DynamicMMap(FileFd &F,unsigned long Flags,unsigned long const &WorkSpace = 2*1024*1024, diff --git a/apt-pkg/contrib/netrc.cc b/apt-pkg/contrib/netrc.cc index 9ff5796c5..56e59d84b 100644 --- a/apt-pkg/contrib/netrc.cc +++ b/apt-pkg/contrib/netrc.cc @@ -11,9 +11,12 @@ ##################################################################### */ /*}}}*/ +#include <config.h> #include <apt-pkg/configuration.h> +#include <apt-pkg/strutl.h> #include <apt-pkg/fileutl.h> + #include <iostream> #include <stdio.h> #include <stdlib.h> @@ -23,6 +26,7 @@ #include "netrc.h" +using std::string; /* Get user and password from .netrc when given a machine name */ @@ -64,8 +68,7 @@ int parsenetrc (char *host, char *login, char *password, char *netrcfile = NULL) if (!home) return -1; - asprintf (&netrcfile, "%s%s%s", home, DIR_CHAR, NETRC); - if(!netrcfile) + if (asprintf (&netrcfile, "%s%s%s", home, DIR_CHAR, NETRC) == -1 || netrcfile == NULL) return -1; else netrc_alloc = true; diff --git a/apt-pkg/contrib/netrc.h b/apt-pkg/contrib/netrc.h index 02a5eb09f..5931d4a42 100644 --- a/apt-pkg/contrib/netrc.h +++ b/apt-pkg/contrib/netrc.h @@ -14,16 +14,22 @@ #ifndef NETRC_H #define NETRC_H +#include <string> + +#ifndef APT_8_CLEANER_HEADERS #include <apt-pkg/strutl.h> +#endif #define DOT_CHAR "." #define DIR_CHAR "/" +class URI; + // Assume: password[0]=0, host[0] != 0. // If login[0] = 0, search for login and password within a machine section // in the netrc. // If login[0] != 0, search for password within machine and login. int parsenetrc (char *host, char *login, char *password, char *filename); -void maybe_add_auth (URI &Uri, string NetRCFile); +void maybe_add_auth (URI &Uri, std::string NetRCFile); #endif diff --git a/apt-pkg/contrib/progress.cc b/apt-pkg/contrib/progress.cc index 45e81edcb..317048845 100644 --- a/apt-pkg/contrib/progress.cc +++ b/apt-pkg/contrib/progress.cc @@ -8,15 +8,17 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/progress.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> -#include <apti18n.h> - #include <iostream> #include <stdio.h> #include <cstring> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -35,7 +37,7 @@ OpProgress::OpProgress() : Current(0), Total(0), Size(0), SubTotal(1), /* Current is the Base Overall progress in units of Total. Cur is the sub progress in units of SubTotal. Size is a scaling factor that says what percent of Total SubTotal is. */ -void OpProgress::Progress(unsigned long Cur) +void OpProgress::Progress(unsigned long long Cur) { if (Total == 0 || Size == 0 || SubTotal == 0) Percent = 0; @@ -47,8 +49,8 @@ void OpProgress::Progress(unsigned long Cur) // OpProgress::OverallProgress - Set the overall progress /*{{{*/ // --------------------------------------------------------------------- /* */ -void OpProgress::OverallProgress(unsigned long Current, unsigned long Total, - unsigned long Size,const string &Op) +void OpProgress::OverallProgress(unsigned long long Current, unsigned long long Total, + unsigned long long Size,const string &Op) { this->Current = Current; this->Total = Total; @@ -65,27 +67,18 @@ void OpProgress::OverallProgress(unsigned long Current, unsigned long Total, // OpProgress::SubProgress - Set the sub progress state /*{{{*/ // --------------------------------------------------------------------- /* */ -void OpProgress::SubProgress(unsigned long SubTotal,const string &Op) -{ - this->SubTotal = SubTotal; - SubOp = Op; - if (Total == 0) - Percent = 0; - else - Percent = Current*100.0/Total; - Update(); -} - /*}}}*/ -// OpProgress::SubProgress - Set the sub progress state /*{{{*/ -// --------------------------------------------------------------------- -/* */ -void OpProgress::SubProgress(unsigned long SubTotal) +void OpProgress::SubProgress(unsigned long long SubTotal,const string &Op, + float const Percent) { this->SubTotal = SubTotal; - if (Total == 0) - Percent = 0; + if (Op.empty() == false) + SubOp = Op; + if (Total == 0 || Percent == 0) + this->Percent = 0; + else if (Percent != -1) + this->Percent = this->Current += (Size*Percent)/SubTotal; else - Percent = Current*100.0/Total; + this->Percent = Current*100.0/Total; Update(); } /*}}}*/ diff --git a/apt-pkg/contrib/progress.h b/apt-pkg/contrib/progress.h index 7dd004f7e..3a6943aee 100644 --- a/apt-pkg/contrib/progress.h +++ b/apt-pkg/contrib/progress.h @@ -25,26 +25,28 @@ #include <string> #include <sys/time.h> +#ifndef APT_8_CLEANER_HEADERS using std::string; +#endif class Configuration; class OpProgress { - unsigned long Current; - unsigned long Total; - unsigned long Size; - unsigned long SubTotal; + unsigned long long Current; + unsigned long long Total; + unsigned long long Size; + unsigned long long SubTotal; float LastPercent; // Change reduction code struct timeval LastTime; - string LastOp; - string LastSubOp; + std::string LastOp; + std::string LastSubOp; protected: - string Op; - string SubOp; + std::string Op; + std::string SubOp; float Percent; bool MajorChange; @@ -54,11 +56,10 @@ class OpProgress public: - void Progress(unsigned long Current); - void SubProgress(unsigned long SubTotal); - void SubProgress(unsigned long SubTotal,const string &Op); - void OverallProgress(unsigned long Current,unsigned long Total, - unsigned long Size,const string &Op); + void Progress(unsigned long long Current); + void SubProgress(unsigned long long SubTotal, const std::string &Op = "", float const Percent = -1); + void OverallProgress(unsigned long long Current,unsigned long long Total, + unsigned long long Size,const std::string &Op); virtual void Done() {}; OpProgress(); @@ -68,8 +69,8 @@ class OpProgress class OpTextProgress : public OpProgress { protected: - - string OldOp; + + std::string OldOp; bool NoUpdate; bool NoDisplay; unsigned long LastLen; diff --git a/apt-pkg/contrib/sha1.cc b/apt-pkg/contrib/sha1.cc index abc2aaf9f..b5a6a2440 100644 --- a/apt-pkg/contrib/sha1.cc +++ b/apt-pkg/contrib/sha1.cc @@ -29,6 +29,8 @@ */ /*}}} */ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/sha1.h> #include <apt-pkg/strutl.h> #include <apt-pkg/macros.h> @@ -36,7 +38,6 @@ #include <string.h> #include <unistd.h> #include <inttypes.h> -#include <config.h> /*}}}*/ // SHA1Transform - Alters an existing SHA-1 hash /*{{{*/ @@ -177,67 +178,6 @@ static void SHA1Transform(uint32_t state[5],uint8_t const buffer[64]) } /*}}}*/ -// SHA1SumValue::SHA1SumValue - Constructs the summation from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a SHA1 is a 40 character hex number */ -SHA1SumValue::SHA1SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - - /*}}} */ -// SHA1SumValue::SHA1SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -SHA1SumValue::SHA1SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - - /*}}} */ -// SHA1SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool SHA1SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - - /*}}} */ -// SHA1SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string SHA1SumValue::Value() const -{ - char Conv[16] = - { '0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f' - }; - char Result[41]; - Result[40] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 40; J++,I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - - /*}}} */ -// SHA1SumValue::operator == - Comparator /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool SHA1SumValue::operator == (const SHA1SumValue & rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ // SHA1Summation::SHA1Summation - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -289,18 +229,20 @@ SHA1SumValue SHA1Summation::Result() // Transfer over the result SHA1SumValue Value; + unsigned char res[20]; for (unsigned i = 0; i < 20; i++) { - Value.Sum[i] = (unsigned char) + res[i] = (unsigned char) ((state[i >> 2] >> ((3 - (i & 3)) * 8)) & 255); } + Value.Set(res); return Value; } /*}}}*/ // SHA1Summation::Add - Adds content of buffer into the checksum /*{{{*/ // --------------------------------------------------------------------- /* May not be called after Result() is called */ -bool SHA1Summation::Add(const unsigned char *data,unsigned long len) +bool SHA1Summation::Add(const unsigned char *data,unsigned long long len) { if (Done) return false; @@ -331,26 +273,3 @@ bool SHA1Summation::Add(const unsigned char *data,unsigned long len) return true; } /*}}}*/ -// SHA1Summation::AddFD - Add content of file into the checksum /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool SHA1Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64 * 64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ diff --git a/apt-pkg/contrib/sha1.h b/apt-pkg/contrib/sha1.h index 8ddd889f1..a8d55eb13 100644 --- a/apt-pkg/contrib/sha1.h +++ b/apt-pkg/contrib/sha1.h @@ -18,33 +18,16 @@ #include <cstring> #include <algorithm> +#include "hashsum_template.h" + +#ifndef APT_8_CLEANER_HEADERS using std::string; using std::min; +#endif -class SHA1Summation; - -class SHA1SumValue -{ - friend class SHA1Summation; - unsigned char Sum[20]; - - public: - - // Accessors - bool operator ==(const SHA1SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[20]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[20]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; - - SHA1SumValue(string Str); - SHA1SumValue(); -}; +typedef HashSumValue<160> SHA1SumValue; -class SHA1Summation +class SHA1Summation : public SummationImplementation { /* assumes 64-bit alignment just in case */ unsigned char Buffer[64] __attribute__((aligned(8))); @@ -53,12 +36,9 @@ class SHA1Summation bool Done; public: + bool Add(const unsigned char *inbuf, unsigned long long inlen); + using SummationImplementation::Add; - bool Add(const unsigned char *inbuf,unsigned long inlen); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; SHA1SumValue Result(); SHA1Summation(); diff --git a/apt-pkg/contrib/sha2.h b/apt-pkg/contrib/sha2.h new file mode 100644 index 000000000..51c921dbd --- /dev/null +++ b/apt-pkg/contrib/sha2.h @@ -0,0 +1,103 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: sha512.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ +/* ###################################################################### + + SHA{512,256}SumValue - Storage for a SHA-{512,256} hash. + SHA{512,256}Summation - SHA-{512,256} Secure Hash Algorithm. + + This is a C++ interface to a set of SHA{512,256}Sum functions, that mirrors + the equivalent MD5 & SHA1 classes. + + ##################################################################### */ + /*}}}*/ +#ifndef APTPKG_SHA2_H +#define APTPKG_SHA2_H + +#include <string> +#include <cstring> +#include <algorithm> +#include <stdint.h> + +#include "sha2_internal.h" +#include "hashsum_template.h" + +typedef HashSumValue<512> SHA512SumValue; +typedef HashSumValue<256> SHA256SumValue; + +class SHA2SummationBase : public SummationImplementation +{ + protected: + bool Done; + public: + bool Add(const unsigned char *inbuf, unsigned long long len) = 0; + + void Result(); +}; + +class SHA256Summation : public SHA2SummationBase +{ + SHA256_CTX ctx; + unsigned char Sum[32]; + + public: + bool Add(const unsigned char *inbuf, unsigned long long len) + { + if (Done) + return false; + SHA256_Update(&ctx, inbuf, len); + return true; + }; + using SummationImplementation::Add; + + SHA256SumValue Result() + { + if (!Done) { + SHA256_Final(Sum, &ctx); + Done = true; + } + SHA256SumValue res; + res.Set(Sum); + return res; + }; + SHA256Summation() + { + SHA256_Init(&ctx); + Done = false; + }; +}; + +class SHA512Summation : public SHA2SummationBase +{ + SHA512_CTX ctx; + unsigned char Sum[64]; + + public: + bool Add(const unsigned char *inbuf, unsigned long long len) + { + if (Done) + return false; + SHA512_Update(&ctx, inbuf, len); + return true; + }; + using SummationImplementation::Add; + + SHA512SumValue Result() + { + if (!Done) { + SHA512_Final(Sum, &ctx); + Done = true; + } + SHA512SumValue res; + res.Set(Sum); + return res; + }; + SHA512Summation() + { + SHA512_Init(&ctx); + Done = false; + }; +}; + + +#endif diff --git a/apt-pkg/contrib/sha256.cc b/apt-pkg/contrib/sha256.cc deleted file mode 100644 index e380c13ae..000000000 --- a/apt-pkg/contrib/sha256.cc +++ /dev/null @@ -1,424 +0,0 @@ -/* - * Cryptographic API. {{{ - * - * SHA-256, as specified in - * http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf - * - * SHA-256 code by Jean-Luc Cooke <jlcooke@certainkey.com>. - * - * Copyright (c) Jean-Luc Cooke <jlcooke@certainkey.com> - * Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk> - * Copyright (c) 2002 James Morris <jmorris@intercode.com.au> - * - * Ported from the Linux kernel to Apt by Anthony Towns <ajt@debian.org> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the Free - * Software Foundation; either version 2 of the License, or (at your option) - * any later version. - * - */ /*}}}*/ - -#ifdef __GNUG__ -#pragma implementation "apt-pkg/sha256.h" -#endif - - -#define SHA256_DIGEST_SIZE 32 -#define SHA256_HMAC_BLOCK_SIZE 64 - -#define ror32(value,bits) (((value) >> (bits)) | ((value) << (32 - (bits)))) - -#include <apt-pkg/sha256.h> -#include <apt-pkg/strutl.h> -#include <string.h> -#include <unistd.h> -#include <stdint.h> -#include <stdlib.h> -#include <stdio.h> -#include <arpa/inet.h> - -typedef uint32_t u32; -typedef uint8_t u8; - -static inline u32 Ch(u32 x, u32 y, u32 z) -{ - return z ^ (x & (y ^ z)); -} - -static inline u32 Maj(u32 x, u32 y, u32 z) -{ - return (x & y) | (z & (x | y)); -} - -#define e0(x) (ror32(x, 2) ^ ror32(x,13) ^ ror32(x,22)) -#define e1(x) (ror32(x, 6) ^ ror32(x,11) ^ ror32(x,25)) -#define s0(x) (ror32(x, 7) ^ ror32(x,18) ^ (x >> 3)) -#define s1(x) (ror32(x,17) ^ ror32(x,19) ^ (x >> 10)) - -#define H0 0x6a09e667 -#define H1 0xbb67ae85 -#define H2 0x3c6ef372 -#define H3 0xa54ff53a -#define H4 0x510e527f -#define H5 0x9b05688c -#define H6 0x1f83d9ab -#define H7 0x5be0cd19 - -static inline void LOAD_OP(int I, u32 *W, const u8 *input) /*{{{*/ -{ - W[I] = ( ((u32) input[I * 4 + 0] << 24) - | ((u32) input[I * 4 + 1] << 16) - | ((u32) input[I * 4 + 2] << 8) - | ((u32) input[I * 4 + 3])); -} - /*}}}*/ -static inline void BLEND_OP(int I, u32 *W) -{ - W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16]; -} - -static void sha256_transform(u32 *state, const u8 *input) /*{{{*/ -{ - u32 a, b, c, d, e, f, g, h, t1, t2; - u32 W[64]; - int i; - - /* load the input */ - for (i = 0; i < 16; i++) - LOAD_OP(i, W, input); - - /* now blend */ - for (i = 16; i < 64; i++) - BLEND_OP(i, W); - - /* load the state into our registers */ - a=state[0]; b=state[1]; c=state[2]; d=state[3]; - e=state[4]; f=state[5]; g=state[6]; h=state[7]; - - /* now iterate */ - t1 = h + e1(e) + Ch(e,f,g) + 0x428a2f98 + W[ 0]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x71374491 + W[ 1]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0xb5c0fbcf + W[ 2]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0xe9b5dba5 + W[ 3]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x3956c25b + W[ 4]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x59f111f1 + W[ 5]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x923f82a4 + W[ 6]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0xab1c5ed5 + W[ 7]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0xd807aa98 + W[ 8]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x12835b01 + W[ 9]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x243185be + W[10]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x550c7dc3 + W[11]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x72be5d74 + W[12]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x80deb1fe + W[13]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x9bdc06a7 + W[14]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0xc19bf174 + W[15]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0xe49b69c1 + W[16]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0xefbe4786 + W[17]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x0fc19dc6 + W[18]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x240ca1cc + W[19]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x2de92c6f + W[20]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x4a7484aa + W[21]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x5cb0a9dc + W[22]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x76f988da + W[23]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x983e5152 + W[24]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0xa831c66d + W[25]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0xb00327c8 + W[26]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0xbf597fc7 + W[27]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0xc6e00bf3 + W[28]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0xd5a79147 + W[29]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x06ca6351 + W[30]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x14292967 + W[31]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x27b70a85 + W[32]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x2e1b2138 + W[33]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x4d2c6dfc + W[34]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x53380d13 + W[35]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x650a7354 + W[36]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x766a0abb + W[37]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x81c2c92e + W[38]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x92722c85 + W[39]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0xa2bfe8a1 + W[40]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0xa81a664b + W[41]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0xc24b8b70 + W[42]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0xc76c51a3 + W[43]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0xd192e819 + W[44]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0xd6990624 + W[45]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0xf40e3585 + W[46]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x106aa070 + W[47]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x19a4c116 + W[48]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x1e376c08 + W[49]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x2748774c + W[50]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x34b0bcb5 + W[51]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x391c0cb3 + W[52]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0x4ed8aa4a + W[53]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0x5b9cca4f + W[54]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0x682e6ff3 + W[55]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - t1 = h + e1(e) + Ch(e,f,g) + 0x748f82ee + W[56]; - t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2; - t1 = g + e1(d) + Ch(d,e,f) + 0x78a5636f + W[57]; - t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2; - t1 = f + e1(c) + Ch(c,d,e) + 0x84c87814 + W[58]; - t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2; - t1 = e + e1(b) + Ch(b,c,d) + 0x8cc70208 + W[59]; - t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2; - t1 = d + e1(a) + Ch(a,b,c) + 0x90befffa + W[60]; - t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2; - t1 = c + e1(h) + Ch(h,a,b) + 0xa4506ceb + W[61]; - t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2; - t1 = b + e1(g) + Ch(g,h,a) + 0xbef9a3f7 + W[62]; - t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2; - t1 = a + e1(f) + Ch(f,g,h) + 0xc67178f2 + W[63]; - t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2; - - state[0] += a; state[1] += b; state[2] += c; state[3] += d; - state[4] += e; state[5] += f; state[6] += g; state[7] += h; - - /* clear any sensitive info... */ - a = b = c = d = e = f = g = h = t1 = t2 = 0; - memset(W, 0, 64 * sizeof(u32)); -} - /*}}}*/ -SHA256Summation::SHA256Summation() /*{{{*/ -{ - Sum.state[0] = H0; - Sum.state[1] = H1; - Sum.state[2] = H2; - Sum.state[3] = H3; - Sum.state[4] = H4; - Sum.state[5] = H5; - Sum.state[6] = H6; - Sum.state[7] = H7; - Sum.count[0] = Sum.count[1] = 0; - memset(Sum.buf, 0, sizeof(Sum.buf)); - Done = false; -} - /*}}}*/ -bool SHA256Summation::Add(const u8 *data, unsigned long len) /*{{{*/ -{ - struct sha256_ctx *sctx = ∑ - unsigned int i, index, part_len; - - if (Done) return false; - - /* Compute number of bytes mod 128 */ - index = (unsigned int)((sctx->count[0] >> 3) & 0x3f); - - /* Update number of bits */ - if ((sctx->count[0] += (len << 3)) < (len << 3)) { - sctx->count[1]++; - sctx->count[1] += (len >> 29); - } - - part_len = 64 - index; - - /* Transform as many times as possible. */ - if (len >= part_len) { - memcpy(&sctx->buf[index], data, part_len); - sha256_transform(sctx->state, sctx->buf); - - for (i = part_len; i + 63 < len; i += 64) - sha256_transform(sctx->state, &data[i]); - index = 0; - } else { - i = 0; - } - - /* Buffer remaining input */ - memcpy(&sctx->buf[index], &data[i], len-i); - - return true; -} - /*}}}*/ -SHA256SumValue SHA256Summation::Result() /*{{{*/ -{ - struct sha256_ctx *sctx = ∑ - if (!Done) { - u8 bits[8]; - unsigned int index, pad_len, t; - static const u8 padding[64] = { 0x80, }; - - /* Save number of bits */ - t = sctx->count[0]; - bits[7] = t; t >>= 8; - bits[6] = t; t >>= 8; - bits[5] = t; t >>= 8; - bits[4] = t; - t = sctx->count[1]; - bits[3] = t; t >>= 8; - bits[2] = t; t >>= 8; - bits[1] = t; t >>= 8; - bits[0] = t; - - /* Pad out to 56 mod 64. */ - index = (sctx->count[0] >> 3) & 0x3f; - pad_len = (index < 56) ? (56 - index) : ((64+56) - index); - Add(padding, pad_len); - - /* Append length (before padding) */ - Add(bits, 8); - } - - Done = true; - - /* Store state in digest */ - - SHA256SumValue res; - u8 *out = res.Sum; - - int i, j; - unsigned int t; - for (i = j = 0; i < 8; i++, j += 4) { - t = sctx->state[i]; - out[j+3] = t; t >>= 8; - out[j+2] = t; t >>= 8; - out[j+1] = t; t >>= 8; - out[j ] = t; - } - - return res; -} - /*}}}*/ -// SHA256SumValue::SHA256SumValue - Constructs the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* The string form of a SHA256 is a 64 character hex number */ -SHA256SumValue::SHA256SumValue(string Str) -{ - memset(Sum,0,sizeof(Sum)); - Set(Str); -} - /*}}}*/ -// SHA256SumValue::SHA256SumValue - Default constructor /*{{{*/ -// --------------------------------------------------------------------- -/* Sets the value to 0 */ -SHA256SumValue::SHA256SumValue() -{ - memset(Sum,0,sizeof(Sum)); -} - /*}}}*/ -// SHA256SumValue::Set - Set the sum from a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the hex string into a set of chars */ -bool SHA256SumValue::Set(string Str) -{ - return Hex2Num(Str,Sum,sizeof(Sum)); -} - /*}}}*/ -// SHA256SumValue::Value - Convert the number into a string /*{{{*/ -// --------------------------------------------------------------------- -/* Converts the set of chars into a hex string in lower case */ -string SHA256SumValue::Value() const -{ - char Conv[16] = - { '0','1','2','3','4','5','6','7','8','9','a','b', - 'c','d','e','f' - }; - char Result[65]; - Result[64] = 0; - - // Convert each char into two letters - int J = 0; - int I = 0; - for (; I != 64; J++,I += 2) - { - Result[I] = Conv[Sum[J] >> 4]; - Result[I + 1] = Conv[Sum[J] & 0xF]; - } - - return string(Result); -} - /*}}}*/ -// SHA256SumValue::operator == - Comparator /*{{{*/ -// --------------------------------------------------------------------- -/* Call memcmp on the buffer */ -bool SHA256SumValue::operator == (const SHA256SumValue & rhs) const -{ - return memcmp(Sum,rhs.Sum,sizeof(Sum)) == 0; -} - /*}}}*/ -// SHA256Summation::AddFD - Add content of file into the checksum /*{{{*/ -// --------------------------------------------------------------------- -/* */ -bool SHA256Summation::AddFD(int Fd,unsigned long Size) -{ - unsigned char Buf[64 * 64]; - int Res = 0; - int ToEOF = (Size == 0); - while (Size != 0 || ToEOF) - { - unsigned n = sizeof(Buf); - if (!ToEOF) n = min(Size,(unsigned long)n); - Res = read(Fd,Buf,n); - if (Res < 0 || (!ToEOF && (unsigned) Res != n)) // error, or short read - return false; - if (ToEOF && Res == 0) // EOF - break; - Size -= Res; - Add(Buf,Res); - } - return true; -} - /*}}}*/ - diff --git a/apt-pkg/contrib/sha256.h b/apt-pkg/contrib/sha256.h index 5934b5641..15146c948 100644 --- a/apt-pkg/contrib/sha256.h +++ b/apt-pkg/contrib/sha256.h @@ -1,72 +1,8 @@ -// -*- mode: cpp; mode: fold -*- -// Description /*{{{*/ -// $Id: sha1.h,v 1.3 2001/05/07 05:05:47 jgg Exp $ -/* ###################################################################### - - SHA256SumValue - Storage for a SHA-256 hash. - SHA256Summation - SHA-256 Secure Hash Algorithm. - - This is a C++ interface to a set of SHA256Sum functions, that mirrors - the equivalent MD5 & SHA1 classes. - - ##################################################################### */ - /*}}}*/ #ifndef APTPKG_SHA256_H #define APTPKG_SHA256_H -#include <string> -#include <cstring> -#include <algorithm> -#include <stdint.h> - -using std::string; -using std::min; - -class SHA256Summation; - -class SHA256SumValue -{ - friend class SHA256Summation; - unsigned char Sum[32]; - - public: - - // Accessors - bool operator ==(const SHA256SumValue &rhs) const; - string Value() const; - inline void Value(unsigned char S[32]) - {for (int I = 0; I != sizeof(Sum); I++) S[I] = Sum[I];}; - inline operator string() const {return Value();}; - bool Set(string Str); - inline void Set(unsigned char S[32]) - {for (int I = 0; I != sizeof(Sum); I++) Sum[I] = S[I];}; - - SHA256SumValue(string Str); - SHA256SumValue(); -}; - -struct sha256_ctx { - uint32_t count[2]; - uint32_t state[8]; - uint8_t buf[128]; -}; - -class SHA256Summation -{ - struct sha256_ctx Sum; - - bool Done; - - public: +#include "sha2.h" - bool Add(const unsigned char *inbuf,unsigned long inlen); - inline bool Add(const char *Data) {return Add((unsigned char *)Data,strlen(Data));}; - bool AddFD(int Fd,unsigned long Size); - inline bool Add(const unsigned char *Beg,const unsigned char *End) - {return Add(Beg,End-Beg);}; - SHA256SumValue Result(); - - SHA256Summation(); -}; +#warning "This header is deprecated, please include sha2.h instead" #endif diff --git a/apt-pkg/contrib/sha2_internal.cc b/apt-pkg/contrib/sha2_internal.cc new file mode 100644 index 000000000..6d27e8f2b --- /dev/null +++ b/apt-pkg/contrib/sha2_internal.cc @@ -0,0 +1,1076 @@ +/* + * FILE: sha2.c + * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: sha2.c,v 1.1 2001/11/08 00:01:51 adg Exp adg $ + */ +#include <config.h> + +#include <string.h> /* memcpy()/memset() or bcopy()/bzero() */ +#include <assert.h> /* assert() */ +#include "sha2_internal.h" + +/* + * ASSERT NOTE: + * Some sanity checking code is included using assert(). On my FreeBSD + * system, this additional code can be removed by compiling with NDEBUG + * defined. Check your own systems manpage on assert() to see how to + * compile WITHOUT the sanity checking code on your system. + * + * UNROLLED TRANSFORM LOOP NOTE: + * You can define SHA2_UNROLL_TRANSFORM to use the unrolled transform + * loop version for the hash transform rounds (defined using macros + * later in this file). Either define on the command line, for example: + * + * cc -DSHA2_UNROLL_TRANSFORM -o sha2 sha2.c sha2prog.c + * + * or define below: + * + * #define SHA2_UNROLL_TRANSFORM + * + */ + + +/*** SHA-256/384/512 Machine Architecture Definitions *****************/ +/* + * BYTE_ORDER NOTE: + * + * Please make sure that your system defines BYTE_ORDER. If your + * architecture is little-endian, make sure it also defines + * LITTLE_ENDIAN and that the two (BYTE_ORDER and LITTLE_ENDIAN) are + * equivilent. + * + * If your system does not define the above, then you can do so by + * hand like this: + * + * #define LITTLE_ENDIAN 1234 + * #define BIG_ENDIAN 4321 + * + * And for little-endian machines, add: + * + * #define BYTE_ORDER LITTLE_ENDIAN + * + * Or for big-endian machines: + * + * #define BYTE_ORDER BIG_ENDIAN + * + * The FreeBSD machine this was written on defines BYTE_ORDER + * appropriately by including <sys/types.h> (which in turn includes + * <machine/endian.h> where the appropriate definitions are actually + * made). + */ +#if !defined(BYTE_ORDER) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN) +#error Define BYTE_ORDER to be equal to either LITTLE_ENDIAN or BIG_ENDIAN +#endif + +/* + * Define the followingsha2_* types to types of the correct length on + * the native archtecture. Most BSD systems and Linux define u_intXX_t + * types. Machines with very recent ANSI C headers, can use the + * uintXX_t definintions from inttypes.h by defining SHA2_USE_INTTYPES_H + * during compile or in the sha.h header file. + * + * Machines that support neither u_intXX_t nor inttypes.h's uintXX_t + * will need to define these three typedefs below (and the appropriate + * ones in sha.h too) by hand according to their system architecture. + * + * Thank you, Jun-ichiro itojun Hagino, for suggesting using u_intXX_t + * types and pointing out recent ANSI C support for uintXX_t in inttypes.h. + */ +#ifdef SHA2_USE_INTTYPES_H + +typedef uint8_t sha2_byte; /* Exactly 1 byte */ +typedef uint32_t sha2_word32; /* Exactly 4 bytes */ +typedef uint64_t sha2_word64; /* Exactly 8 bytes */ + +#else /* SHA2_USE_INTTYPES_H */ + +typedef u_int8_t sha2_byte; /* Exactly 1 byte */ +typedef u_int32_t sha2_word32; /* Exactly 4 bytes */ +typedef u_int64_t sha2_word64; /* Exactly 8 bytes */ + +#endif /* SHA2_USE_INTTYPES_H */ + + +/*** SHA-256/384/512 Various Length Definitions ***********************/ +/* NOTE: Most of these are in sha2.h */ +#define SHA256_SHORT_BLOCK_LENGTH (SHA256_BLOCK_LENGTH - 8) +#define SHA384_SHORT_BLOCK_LENGTH (SHA384_BLOCK_LENGTH - 16) +#define SHA512_SHORT_BLOCK_LENGTH (SHA512_BLOCK_LENGTH - 16) + + +/*** ENDIAN REVERSAL MACROS *******************************************/ +#if BYTE_ORDER == LITTLE_ENDIAN +#define REVERSE32(w,x) { \ + sha2_word32 tmp = (w); \ + tmp = (tmp >> 16) | (tmp << 16); \ + (x) = ((tmp & 0xff00ff00UL) >> 8) | ((tmp & 0x00ff00ffUL) << 8); \ +} +#define REVERSE64(w,x) { \ + sha2_word64 tmp = (w); \ + tmp = (tmp >> 32) | (tmp << 32); \ + tmp = ((tmp & 0xff00ff00ff00ff00ULL) >> 8) | \ + ((tmp & 0x00ff00ff00ff00ffULL) << 8); \ + (x) = ((tmp & 0xffff0000ffff0000ULL) >> 16) | \ + ((tmp & 0x0000ffff0000ffffULL) << 16); \ +} +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +/* + * Macro for incrementally adding the unsigned 64-bit integer n to the + * unsigned 128-bit integer (represented using a two-element array of + * 64-bit words): + */ +#define ADDINC128(w,n) { \ + (w)[0] += (sha2_word64)(n); \ + if ((w)[0] < (n)) { \ + (w)[1]++; \ + } \ +} + +/* + * Macros for copying blocks of memory and for zeroing out ranges + * of memory. Using these macros makes it easy to switch from + * using memset()/memcpy() and using bzero()/bcopy(). + * + * Please define either SHA2_USE_MEMSET_MEMCPY or define + * SHA2_USE_BZERO_BCOPY depending on which function set you + * choose to use: + */ +#if !defined(SHA2_USE_MEMSET_MEMCPY) && !defined(SHA2_USE_BZERO_BCOPY) +/* Default to memset()/memcpy() if no option is specified */ +#define SHA2_USE_MEMSET_MEMCPY 1 +#endif +#if defined(SHA2_USE_MEMSET_MEMCPY) && defined(SHA2_USE_BZERO_BCOPY) +/* Abort with an error if BOTH options are defined */ +#error Define either SHA2_USE_MEMSET_MEMCPY or SHA2_USE_BZERO_BCOPY, not both! +#endif + +#ifdef SHA2_USE_MEMSET_MEMCPY +#define MEMSET_BZERO(p,l) memset((p), 0, (l)) +#define MEMCPY_BCOPY(d,s,l) memcpy((d), (s), (l)) +#endif +#ifdef SHA2_USE_BZERO_BCOPY +#define MEMSET_BZERO(p,l) bzero((p), (l)) +#define MEMCPY_BCOPY(d,s,l) bcopy((s), (d), (l)) +#endif + + +/*** THE SIX LOGICAL FUNCTIONS ****************************************/ +/* + * Bit shifting and rotation (used by the six SHA-XYZ logical functions: + * + * NOTE: The naming of R and S appears backwards here (R is a SHIFT and + * S is a ROTATION) because the SHA-256/384/512 description document + * (see http://csrc.nist.gov/cryptval/shs/sha256-384-512.pdf) uses this + * same "backwards" definition. + */ +/* Shift-right (used in SHA-256, SHA-384, and SHA-512): */ +#define R(b,x) ((x) >> (b)) +/* 32-bit Rotate-right (used in SHA-256): */ +#define S32(b,x) (((x) >> (b)) | ((x) << (32 - (b)))) +/* 64-bit Rotate-right (used in SHA-384 and SHA-512): */ +#define S64(b,x) (((x) >> (b)) | ((x) << (64 - (b)))) + +/* Two of six logical functions used in SHA-256, SHA-384, and SHA-512: */ +#define Ch(x,y,z) (((x) & (y)) ^ ((~(x)) & (z))) +#define Maj(x,y,z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z))) + +/* Four of six logical functions used in SHA-256: */ +#define Sigma0_256(x) (S32(2, (x)) ^ S32(13, (x)) ^ S32(22, (x))) +#define Sigma1_256(x) (S32(6, (x)) ^ S32(11, (x)) ^ S32(25, (x))) +#define sigma0_256(x) (S32(7, (x)) ^ S32(18, (x)) ^ R(3 , (x))) +#define sigma1_256(x) (S32(17, (x)) ^ S32(19, (x)) ^ R(10, (x))) + +/* Four of six logical functions used in SHA-384 and SHA-512: */ +#define Sigma0_512(x) (S64(28, (x)) ^ S64(34, (x)) ^ S64(39, (x))) +#define Sigma1_512(x) (S64(14, (x)) ^ S64(18, (x)) ^ S64(41, (x))) +#define sigma0_512(x) (S64( 1, (x)) ^ S64( 8, (x)) ^ R( 7, (x))) +#define sigma1_512(x) (S64(19, (x)) ^ S64(61, (x)) ^ R( 6, (x))) + +/*** INTERNAL FUNCTION PROTOTYPES *************************************/ +/* NOTE: These should not be accessed directly from outside this + * library -- they are intended for private internal visibility/use + * only. + */ +static void SHA512_Last(SHA512_CTX*); +static void SHA256_Transform(SHA256_CTX*, const sha2_word32*); +static void SHA512_Transform(SHA512_CTX*, const sha2_word64*); + + +/*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/ +/* Hash constant words K for SHA-256: */ +const static sha2_word32 K256[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, + 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, + 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL, + 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, 0xc19bf174UL, + 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, + 0x983e5152UL, 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, + 0xc6e00bf3UL, 0xd5a79147UL, 0x06ca6351UL, 0x14292967UL, + 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, 0x53380d13UL, + 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, + 0xd192e819UL, 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, + 0x19a4c116UL, 0x1e376c08UL, 0x2748774cUL, 0x34b0bcb5UL, + 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, 0x682e6ff3UL, + 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL +}; + +/* Initial hash value H for SHA-256: */ +const static sha2_word32 sha256_initial_hash_value[8] = { + 0x6a09e667UL, + 0xbb67ae85UL, + 0x3c6ef372UL, + 0xa54ff53aUL, + 0x510e527fUL, + 0x9b05688cUL, + 0x1f83d9abUL, + 0x5be0cd19UL +}; + +/* Hash constant words K for SHA-384 and SHA-512: */ +const static sha2_word64 K512[80] = { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + +/* Initial hash value H for SHA-384 */ +const static sha2_word64 sha384_initial_hash_value[8] = { + 0xcbbb9d5dc1059ed8ULL, + 0x629a292a367cd507ULL, + 0x9159015a3070dd17ULL, + 0x152fecd8f70e5939ULL, + 0x67332667ffc00b31ULL, + 0x8eb44a8768581511ULL, + 0xdb0c2e0d64f98fa7ULL, + 0x47b5481dbefa4fa4ULL +}; + +/* Initial hash value H for SHA-512 */ +const static sha2_word64 sha512_initial_hash_value[8] = { + 0x6a09e667f3bcc908ULL, + 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, + 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, + 0x5be0cd19137e2179ULL +}; + +/* + * Constant used by SHA256/384/512_End() functions for converting the + * digest to a readable hexadecimal character string: + */ +static const char *sha2_hex_digits = "0123456789abcdef"; + + +/*** SHA-256: *********************************************************/ +void SHA256_Init(SHA256_CTX* context) { + if (context == (SHA256_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha256_initial_hash_value, SHA256_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA256_BLOCK_LENGTH); + context->bitcount = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-256 round macros: */ + +#if BYTE_ORDER == LITTLE_ENDIAN + +#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ + REVERSE32(*data++, W256[j]); \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ + K256[j] + W256[j]; \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + + +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + \ + K256[j] + (W256[j] = *data++); \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND256(a,b,c,d,e,f,g,h) \ + s0 = W256[(j+1)&0x0f]; \ + s0 = sigma0_256(s0); \ + s1 = W256[(j+14)&0x0f]; \ + s1 = sigma1_256(s1); \ + T1 = (h) + Sigma1_256(e) + Ch((e), (f), (g)) + K256[j] + \ + (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ + j++ + +static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { + sha2_word32 a, b, c, d, e, f, g, h, s0, s1; + sha2_word32 T1, *W256; + int j; + + W256 = (sha2_word32*)context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { + /* Rounds 0 to 15 (unrolled): */ + ROUND256_0_TO_15(a,b,c,d,e,f,g,h); + ROUND256_0_TO_15(h,a,b,c,d,e,f,g); + ROUND256_0_TO_15(g,h,a,b,c,d,e,f); + ROUND256_0_TO_15(f,g,h,a,b,c,d,e); + ROUND256_0_TO_15(e,f,g,h,a,b,c,d); + ROUND256_0_TO_15(d,e,f,g,h,a,b,c); + ROUND256_0_TO_15(c,d,e,f,g,h,a,b); + ROUND256_0_TO_15(b,c,d,e,f,g,h,a); + } while (j < 16); + + /* Now for the remaining rounds to 64: */ + do { + ROUND256(a,b,c,d,e,f,g,h); + ROUND256(h,a,b,c,d,e,f,g); + ROUND256(g,h,a,b,c,d,e,f); + ROUND256(f,g,h,a,b,c,d,e); + ROUND256(e,f,g,h,a,b,c,d); + ROUND256(d,e,f,g,h,a,b,c); + ROUND256(c,d,e,f,g,h,a,b); + ROUND256(b,c,d,e,f,g,h,a); + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} + +#else /* SHA2_UNROLL_TRANSFORM */ + +static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { + sha2_word32 a, b, c, d, e, f, g, h, s0, s1; + sha2_word32 T1, T2, *W256; + int j; + + W256 = (sha2_word32*)context->buffer; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { +#if BYTE_ORDER == LITTLE_ENDIAN + /* Copy data while converting to host byte order */ + REVERSE32(*data++,W256[j]); + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j]; +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + /* Apply the SHA-256 compression function to update a..h with copy */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + (W256[j] = *data++); +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do { + /* Part of the message block expansion: */ + s0 = W256[(j+1)&0x0f]; + s0 = sigma0_256(s0); + s1 = W256[(j+14)&0x0f]; + s1 = sigma1_256(s1); + + /* Apply the SHA-256 compression function to update a..h */ + T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + + (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0); + T2 = Sigma0_256(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 64); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} + +#endif /* SHA2_UNROLL_TRANSFORM */ + +void SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) { + unsigned int freespace, usedspace; + + if (len == 0) { + /* Calling with no data is valid - we do nothing */ + return; + } + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0 && data != (sha2_byte*)0); + + usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; + if (usedspace > 0) { + /* Calculate how much free space is available in the buffer */ + freespace = SHA256_BLOCK_LENGTH - usedspace; + + if (len >= freespace) { + /* Fill the buffer completely and process it */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); + context->bitcount += freespace << 3; + len -= freespace; + data += freespace; + SHA256_Transform(context, (sha2_word32*)context->buffer); + } else { + /* The buffer is not yet full */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, len); + context->bitcount += len << 3; + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= SHA256_BLOCK_LENGTH) { + /* Process as many complete blocks as we can */ + SHA256_Transform(context, (sha2_word32*)data); + context->bitcount += SHA256_BLOCK_LENGTH << 3; + len -= SHA256_BLOCK_LENGTH; + data += SHA256_BLOCK_LENGTH; + } + if (len > 0) { + /* There's left-overs, so save 'em */ + MEMCPY_BCOPY(context->buffer, data, len); + context->bitcount += len << 3; + } + /* Clean up: */ + usedspace = freespace = 0; +} + +void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { + sha2_word32 *d = (sha2_word32*)digest; + unsigned int usedspace; + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + usedspace = (context->bitcount >> 3) % SHA256_BLOCK_LENGTH; +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount,context->bitcount); +#endif + if (usedspace > 0) { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= SHA256_SHORT_BLOCK_LENGTH) { + /* Set-up for the last transform: */ + MEMSET_BZERO(&context->buffer[usedspace], SHA256_SHORT_BLOCK_LENGTH - usedspace); + } else { + if (usedspace < SHA256_BLOCK_LENGTH) { + MEMSET_BZERO(&context->buffer[usedspace], SHA256_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA256_Transform(context, (sha2_word32*)context->buffer); + + /* And set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); + } + } else { + /* Set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Set the bit count: */ + union { + sha2_byte* c; + sha2_word64* l; + } bitcount; + bitcount.c = &context->buffer[SHA256_SHORT_BLOCK_LENGTH]; + *(bitcount.l) = context->bitcount; + + /* Final transform: */ + SHA256_Transform(context, (sha2_word32*)context->buffer); + +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 8; j++) { + REVERSE32(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA256_DIGEST_LENGTH); +#endif + } + + /* Clean up state data: */ + MEMSET_BZERO(context, sizeof(context)); + usedspace = 0; +} + +char *SHA256_End(SHA256_CTX* context, char buffer[]) { + sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA256_CTX*)0); + + if (buffer != (char*)0) { + SHA256_Final(digest, context); + + for (i = 0; i < SHA256_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA256_DIGEST_LENGTH); + return buffer; +} + +char* SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) { + SHA256_CTX context; + + SHA256_Init(&context); + SHA256_Update(&context, data, len); + return SHA256_End(&context, digest); +} + + +/*** SHA-512: *********************************************************/ +void SHA512_Init(SHA512_CTX* context) { + if (context == (SHA512_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha512_initial_hash_value, SHA512_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +#ifdef SHA2_UNROLL_TRANSFORM + +/* Unrolled SHA-512 round macros: */ +#if BYTE_ORDER == LITTLE_ENDIAN + +#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ + REVERSE64(*data++, W512[j]); \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ + K512[j] + W512[j]; \ + (d) += T1, \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)), \ + j++ + + +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND512_0_TO_15(a,b,c,d,e,f,g,h) \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + \ + K512[j] + (W512[j] = *data++); \ + (d) += T1; \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ + j++ + +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + +#define ROUND512(a,b,c,d,e,f,g,h) \ + s0 = W512[(j+1)&0x0f]; \ + s0 = sigma0_512(s0); \ + s1 = W512[(j+14)&0x0f]; \ + s1 = sigma1_512(s1); \ + T1 = (h) + Sigma1_512(e) + Ch((e), (f), (g)) + K512[j] + \ + (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); \ + (d) += T1; \ + (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ + j++ + +static void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { + sha2_word64 a, b, c, d, e, f, g, h, s0, s1; + sha2_word64 T1, *W512 = (sha2_word64*)context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { + ROUND512_0_TO_15(a,b,c,d,e,f,g,h); + ROUND512_0_TO_15(h,a,b,c,d,e,f,g); + ROUND512_0_TO_15(g,h,a,b,c,d,e,f); + ROUND512_0_TO_15(f,g,h,a,b,c,d,e); + ROUND512_0_TO_15(e,f,g,h,a,b,c,d); + ROUND512_0_TO_15(d,e,f,g,h,a,b,c); + ROUND512_0_TO_15(c,d,e,f,g,h,a,b); + ROUND512_0_TO_15(b,c,d,e,f,g,h,a); + } while (j < 16); + + /* Now for the remaining rounds up to 79: */ + do { + ROUND512(a,b,c,d,e,f,g,h); + ROUND512(h,a,b,c,d,e,f,g); + ROUND512(g,h,a,b,c,d,e,f); + ROUND512(f,g,h,a,b,c,d,e); + ROUND512(e,f,g,h,a,b,c,d); + ROUND512(d,e,f,g,h,a,b,c); + ROUND512(c,d,e,f,g,h,a,b); + ROUND512(b,c,d,e,f,g,h,a); + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = 0; +} + +#else /* SHA2_UNROLL_TRANSFORM */ + +static void SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { + sha2_word64 a, b, c, d, e, f, g, h, s0, s1; + sha2_word64 T1, T2, *W512 = (sha2_word64*)context->buffer; + int j; + + /* Initialize registers with the prev. intermediate value */ + a = context->state[0]; + b = context->state[1]; + c = context->state[2]; + d = context->state[3]; + e = context->state[4]; + f = context->state[5]; + g = context->state[6]; + h = context->state[7]; + + j = 0; + do { +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert TO host byte order */ + REVERSE64(*data++, W512[j]); + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + W512[j]; +#else /* BYTE_ORDER == LITTLE_ENDIAN */ + /* Apply the SHA-512 compression function to update a..h with copy */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + (W512[j] = *data++); +#endif /* BYTE_ORDER == LITTLE_ENDIAN */ + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 16); + + do { + /* Part of the message block expansion: */ + s0 = W512[(j+1)&0x0f]; + s0 = sigma0_512(s0); + s1 = W512[(j+14)&0x0f]; + s1 = sigma1_512(s1); + + /* Apply the SHA-512 compression function to update a..h */ + T1 = h + Sigma1_512(e) + Ch(e, f, g) + K512[j] + + (W512[j&0x0f] += s1 + W512[(j+9)&0x0f] + s0); + T2 = Sigma0_512(a) + Maj(a, b, c); + h = g; + g = f; + f = e; + e = d + T1; + d = c; + c = b; + b = a; + a = T1 + T2; + + j++; + } while (j < 80); + + /* Compute the current intermediate hash value */ + context->state[0] += a; + context->state[1] += b; + context->state[2] += c; + context->state[3] += d; + context->state[4] += e; + context->state[5] += f; + context->state[6] += g; + context->state[7] += h; + + /* Clean up */ + a = b = c = d = e = f = g = h = T1 = T2 = 0; +} + +#endif /* SHA2_UNROLL_TRANSFORM */ + +void SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) { + unsigned int freespace, usedspace; + + if (len == 0) { + /* Calling with no data is valid - we do nothing */ + return; + } + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0 && data != (sha2_byte*)0); + + usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; + if (usedspace > 0) { + /* Calculate how much free space is available in the buffer */ + freespace = SHA512_BLOCK_LENGTH - usedspace; + + if (len >= freespace) { + /* Fill the buffer completely and process it */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, freespace); + ADDINC128(context->bitcount, freespace << 3); + len -= freespace; + data += freespace; + SHA512_Transform(context, (sha2_word64*)context->buffer); + } else { + /* The buffer is not yet full */ + MEMCPY_BCOPY(&context->buffer[usedspace], data, len); + ADDINC128(context->bitcount, len << 3); + /* Clean up: */ + usedspace = freespace = 0; + return; + } + } + while (len >= SHA512_BLOCK_LENGTH) { + /* Process as many complete blocks as we can */ + SHA512_Transform(context, (sha2_word64*)data); + ADDINC128(context->bitcount, SHA512_BLOCK_LENGTH << 3); + len -= SHA512_BLOCK_LENGTH; + data += SHA512_BLOCK_LENGTH; + } + if (len > 0) { + /* There's left-overs, so save 'em */ + MEMCPY_BCOPY(context->buffer, data, len); + ADDINC128(context->bitcount, len << 3); + } + /* Clean up: */ + usedspace = freespace = 0; +} + +static void SHA512_Last(SHA512_CTX* context) { + unsigned int usedspace; + + usedspace = (context->bitcount[0] >> 3) % SHA512_BLOCK_LENGTH; +#if BYTE_ORDER == LITTLE_ENDIAN + /* Convert FROM host byte order */ + REVERSE64(context->bitcount[0],context->bitcount[0]); + REVERSE64(context->bitcount[1],context->bitcount[1]); +#endif + if (usedspace > 0) { + /* Begin padding with a 1 bit: */ + context->buffer[usedspace++] = 0x80; + + if (usedspace <= SHA512_SHORT_BLOCK_LENGTH) { + /* Set-up for the last transform: */ + MEMSET_BZERO(&context->buffer[usedspace], SHA512_SHORT_BLOCK_LENGTH - usedspace); + } else { + if (usedspace < SHA512_BLOCK_LENGTH) { + MEMSET_BZERO(&context->buffer[usedspace], SHA512_BLOCK_LENGTH - usedspace); + } + /* Do second-to-last transform: */ + SHA512_Transform(context, (sha2_word64*)context->buffer); + + /* And set-up for the last transform: */ + MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH - 2); + } + } else { + /* Prepare for final transform: */ + MEMSET_BZERO(context->buffer, SHA512_SHORT_BLOCK_LENGTH); + + /* Begin padding with a 1 bit: */ + *context->buffer = 0x80; + } + /* Store the length of input data (in bits): */ + union { + sha2_byte* c; + sha2_word64* l; + } bitcount; + bitcount.c = &context->buffer[SHA512_SHORT_BLOCK_LENGTH]; + bitcount.l[0] = context->bitcount[1]; + bitcount.l[1] = context->bitcount[0]; + + /* Final transform: */ + SHA512_Transform(context, (sha2_word64*)context->buffer); +} + +void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { + sha2_word64 *d = (sha2_word64*)digest; + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + SHA512_Last(context); + + /* Save the hash data for output: */ +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 8; j++) { + REVERSE64(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA512_DIGEST_LENGTH); +#endif + } + + /* Zero out state data */ + MEMSET_BZERO(context, sizeof(context)); +} + +char *SHA512_End(SHA512_CTX* context, char buffer[]) { + sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA512_CTX*)0); + + if (buffer != (char*)0) { + SHA512_Final(digest, context); + + for (i = 0; i < SHA512_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA512_DIGEST_LENGTH); + return buffer; +} + +char* SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) { + SHA512_CTX context; + + SHA512_Init(&context); + SHA512_Update(&context, data, len); + return SHA512_End(&context, digest); +} + + +/*** SHA-384: *********************************************************/ +void SHA384_Init(SHA384_CTX* context) { + if (context == (SHA384_CTX*)0) { + return; + } + MEMCPY_BCOPY(context->state, sha384_initial_hash_value, SHA512_DIGEST_LENGTH); + MEMSET_BZERO(context->buffer, SHA384_BLOCK_LENGTH); + context->bitcount[0] = context->bitcount[1] = 0; +} + +void SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) { + SHA512_Update((SHA512_CTX*)context, data, len); +} + +void SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { + sha2_word64 *d = (sha2_word64*)digest; + + /* Sanity check: */ + assert(context != (SHA384_CTX*)0); + + /* If no digest buffer is passed, we don't bother doing this: */ + if (digest != (sha2_byte*)0) { + SHA512_Last((SHA512_CTX*)context); + + /* Save the hash data for output: */ +#if BYTE_ORDER == LITTLE_ENDIAN + { + /* Convert TO host byte order */ + int j; + for (j = 0; j < 6; j++) { + REVERSE64(context->state[j],context->state[j]); + *d++ = context->state[j]; + } + } +#else + MEMCPY_BCOPY(d, context->state, SHA384_DIGEST_LENGTH); +#endif + } + + /* Zero out state data */ + MEMSET_BZERO(context, sizeof(context)); +} + +char *SHA384_End(SHA384_CTX* context, char buffer[]) { + sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest; + int i; + + /* Sanity check: */ + assert(context != (SHA384_CTX*)0); + + if (buffer != (char*)0) { + SHA384_Final(digest, context); + + for (i = 0; i < SHA384_DIGEST_LENGTH; i++) { + *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; + *buffer++ = sha2_hex_digits[*d & 0x0f]; + d++; + } + *buffer = (char)0; + } else { + MEMSET_BZERO(context, sizeof(context)); + } + MEMSET_BZERO(digest, SHA384_DIGEST_LENGTH); + return buffer; +} + +char* SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_STRING_LENGTH]) { + SHA384_CTX context; + + SHA384_Init(&context); + SHA384_Update(&context, data, len); + return SHA384_End(&context, digest); +} + diff --git a/apt-pkg/contrib/sha2_internal.h b/apt-pkg/contrib/sha2_internal.h new file mode 100644 index 000000000..d9d429c92 --- /dev/null +++ b/apt-pkg/contrib/sha2_internal.h @@ -0,0 +1,188 @@ +/* + * FILE: sha2.h + * AUTHOR: Aaron D. Gifford - http://www.aarongifford.com/ + * + * Copyright (c) 2000-2001, Aaron D. Gifford + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holder nor the names of contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTOR(S) ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTOR(S) BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $Id: sha2.h,v 1.1 2001/11/08 00:02:01 adg Exp adg $ + */ + +#ifndef __SHA2_H__ +#define __SHA2_H__ + +/* + * Import u_intXX_t size_t type definitions from system headers. You + * may need to change this, or define these things yourself in this + * file. + */ +#include <sys/types.h> + +#ifdef SHA2_USE_INTTYPES_H + +#include <inttypes.h> + +#endif /* SHA2_USE_INTTYPES_H */ + + +/*** SHA-256/384/512 Various Length Definitions ***********************/ +#define SHA256_BLOCK_LENGTH 64 +#define SHA256_DIGEST_LENGTH 32 +#define SHA256_DIGEST_STRING_LENGTH (SHA256_DIGEST_LENGTH * 2 + 1) +#define SHA384_BLOCK_LENGTH 128 +#define SHA384_DIGEST_LENGTH 48 +#define SHA384_DIGEST_STRING_LENGTH (SHA384_DIGEST_LENGTH * 2 + 1) +#define SHA512_BLOCK_LENGTH 128 +#define SHA512_DIGEST_LENGTH 64 +#define SHA512_DIGEST_STRING_LENGTH (SHA512_DIGEST_LENGTH * 2 + 1) + + +/*** SHA-256/384/512 Context Structures *******************************/ +/* NOTE: If your architecture does not define either u_intXX_t types or + * uintXX_t (from inttypes.h), you may need to define things by hand + * for your system: + */ +#if 0 +typedef unsigned char u_int8_t; /* 1-byte (8-bits) */ +typedef unsigned int u_int32_t; /* 4-bytes (32-bits) */ +typedef unsigned long long u_int64_t; /* 8-bytes (64-bits) */ +#endif +/* + * Most BSD systems already define u_intXX_t types, as does Linux. + * Some systems, however, like Compaq's Tru64 Unix instead can use + * uintXX_t types defined by very recent ANSI C standards and included + * in the file: + * + * #include <inttypes.h> + * + * If you choose to use <inttypes.h> then please define: + * + * #define SHA2_USE_INTTYPES_H + * + * Or on the command line during compile: + * + * cc -DSHA2_USE_INTTYPES_H ... + */ +#ifdef SHA2_USE_INTTYPES_H + +typedef struct _SHA256_CTX { + uint32_t state[8]; + uint64_t bitcount; + uint8_t buffer[SHA256_BLOCK_LENGTH]; +} SHA256_CTX; +typedef struct _SHA512_CTX { + uint64_t state[8]; + uint64_t bitcount[2]; + uint8_t buffer[SHA512_BLOCK_LENGTH]; +} SHA512_CTX; + +#else /* SHA2_USE_INTTYPES_H */ + +typedef struct _SHA256_CTX { + u_int32_t state[8]; + u_int64_t bitcount; + u_int8_t buffer[SHA256_BLOCK_LENGTH]; +} SHA256_CTX; +typedef struct _SHA512_CTX { + u_int64_t state[8]; + u_int64_t bitcount[2]; + u_int8_t buffer[SHA512_BLOCK_LENGTH]; +} SHA512_CTX; + +#endif /* SHA2_USE_INTTYPES_H */ + +typedef SHA512_CTX SHA384_CTX; + + +/*** SHA-256/384/512 Function Prototypes ******************************/ +#ifndef NOPROTO +#ifdef SHA2_USE_INTTYPES_H + +void SHA256_Init(SHA256_CTX *); +void SHA256_Update(SHA256_CTX*, const uint8_t*, size_t); +void SHA256_Final(uint8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); +char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); +char* SHA256_Data(const uint8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); + +void SHA384_Init(SHA384_CTX*); +void SHA384_Update(SHA384_CTX*, const uint8_t*, size_t); +void SHA384_Final(uint8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); +char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); +char* SHA384_Data(const uint8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); + +void SHA512_Init(SHA512_CTX*); +void SHA512_Update(SHA512_CTX*, const uint8_t*, size_t); +void SHA512_Final(uint8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); +char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); +char* SHA512_Data(const uint8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); + +#else /* SHA2_USE_INTTYPES_H */ + +void SHA256_Init(SHA256_CTX *); +void SHA256_Update(SHA256_CTX*, const u_int8_t*, size_t); +void SHA256_Final(u_int8_t[SHA256_DIGEST_LENGTH], SHA256_CTX*); +char* SHA256_End(SHA256_CTX*, char[SHA256_DIGEST_STRING_LENGTH]); +char* SHA256_Data(const u_int8_t*, size_t, char[SHA256_DIGEST_STRING_LENGTH]); + +void SHA384_Init(SHA384_CTX*); +void SHA384_Update(SHA384_CTX*, const u_int8_t*, size_t); +void SHA384_Final(u_int8_t[SHA384_DIGEST_LENGTH], SHA384_CTX*); +char* SHA384_End(SHA384_CTX*, char[SHA384_DIGEST_STRING_LENGTH]); +char* SHA384_Data(const u_int8_t*, size_t, char[SHA384_DIGEST_STRING_LENGTH]); + +void SHA512_Init(SHA512_CTX*); +void SHA512_Update(SHA512_CTX*, const u_int8_t*, size_t); +void SHA512_Final(u_int8_t[SHA512_DIGEST_LENGTH], SHA512_CTX*); +char* SHA512_End(SHA512_CTX*, char[SHA512_DIGEST_STRING_LENGTH]); +char* SHA512_Data(const u_int8_t*, size_t, char[SHA512_DIGEST_STRING_LENGTH]); + +#endif /* SHA2_USE_INTTYPES_H */ + +#else /* NOPROTO */ + +void SHA256_Init(); +void SHA256_Update(); +void SHA256_Final(); +char* SHA256_End(); +char* SHA256_Data(); + +void SHA384_Init(); +void SHA384_Update(); +void SHA384_Final(); +char* SHA384_End(); +char* SHA384_Data(); + +void SHA512_Init(); +void SHA512_Update(); +void SHA512_Final(); +char* SHA512_End(); +char* SHA512_Data(); + +#endif /* NOPROTO */ + +#endif /* __SHA2_H__ */ + diff --git a/apt-pkg/contrib/strutl.cc b/apt-pkg/contrib/strutl.cc index 8dd05b9c0..99efa8d98 100644 --- a/apt-pkg/contrib/strutl.cc +++ b/apt-pkg/contrib/strutl.cc @@ -15,12 +15,12 @@ ##################################################################### */ /*}}}*/ // Includes /*{{{*/ +#include <config.h> + #include <apt-pkg/strutl.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/error.h> -#include <apti18n.h> - #include <ctype.h> #include <string.h> #include <stdio.h> @@ -31,7 +31,7 @@ #include <stdarg.h> #include <iconv.h> -#include "config.h" +#include <apti18n.h> using namespace std; /*}}}*/ @@ -910,17 +910,17 @@ bool StrToTime(const string &Val,time_t &Result) // Handle RFC 1123 time Month[0] = 0; - if (sscanf(I," %d %3s %d %d:%d:%d GMT",&Tm.tm_mday,Month,&Tm.tm_year, + if (sscanf(I," %2d %3s %4d %2d:%2d:%2d GMT",&Tm.tm_mday,Month,&Tm.tm_year, &Tm.tm_hour,&Tm.tm_min,&Tm.tm_sec) != 6) { // Handle RFC 1036 time - if (sscanf(I," %d-%3s-%d %d:%d:%d GMT",&Tm.tm_mday,Month, + if (sscanf(I," %2d-%3s-%3d %2d:%2d:%2d GMT",&Tm.tm_mday,Month, &Tm.tm_year,&Tm.tm_hour,&Tm.tm_min,&Tm.tm_sec) == 6) Tm.tm_year += 1900; else { // asctime format - if (sscanf(I," %3s %d %d:%d:%d %d",Month,&Tm.tm_mday, + if (sscanf(I," %3s %2d %2d:%2d:%2d %4d",Month,&Tm.tm_mday, &Tm.tm_hour,&Tm.tm_min,&Tm.tm_sec,&Tm.tm_year) != 6) { // 'ftp' time @@ -969,6 +969,34 @@ bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigned Base) return true; } /*}}}*/ +// StrToNum - Convert a fixed length string to a number /*{{{*/ +// --------------------------------------------------------------------- +/* This is used in decoding the crazy fixed length string headers in + tar and ar files. */ +bool StrToNum(const char *Str,unsigned long long &Res,unsigned Len,unsigned Base) +{ + char S[30]; + if (Len >= sizeof(S)) + return false; + memcpy(S,Str,Len); + S[Len] = 0; + + // All spaces is a zero + Res = 0; + unsigned I; + for (I = 0; S[I] == ' '; I++); + if (S[I] == 0) + return true; + + char *End; + Res = strtoull(S,&End,Base); + if (End == S) + return false; + + return true; +} + /*}}}*/ + // Base256ToNum - Convert a fixed length binary to a number /*{{{*/ // --------------------------------------------------------------------- /* This is used in decoding the 256bit encoded fixed length fields in diff --git a/apt-pkg/contrib/strutl.h b/apt-pkg/contrib/strutl.h index fba85cf94..337139d5d 100644 --- a/apt-pkg/contrib/strutl.h +++ b/apt-pkg/contrib/strutl.h @@ -27,59 +27,62 @@ #include "macros.h" +#ifndef APT_8_CLEANER_HEADERS using std::string; using std::vector; using std::ostream; +#endif -bool UTF8ToCodeset(const char *codeset, const string &orig, string *dest); +bool UTF8ToCodeset(const char *codeset, const std::string &orig, std::string *dest); char *_strstrip(char *String); char *_strtabexpand(char *String,size_t Len); -bool ParseQuoteWord(const char *&String,string &Res); -bool ParseCWord(const char *&String,string &Res); -string QuoteString(const string &Str,const char *Bad); -string DeQuoteString(const string &Str); -string DeQuoteString(string::const_iterator const &begin, string::const_iterator const &end); +bool ParseQuoteWord(const char *&String,std::string &Res); +bool ParseCWord(const char *&String,std::string &Res); +std::string QuoteString(const std::string &Str,const char *Bad); +std::string DeQuoteString(const std::string &Str); +std::string DeQuoteString(std::string::const_iterator const &begin, std::string::const_iterator const &end); // unescape (\0XX and \xXX) from a string -string DeEscapeString(const string &input); - -string SizeToStr(double Bytes); -string TimeToStr(unsigned long Sec); -string Base64Encode(const string &Str); -string OutputInDepth(const unsigned long Depth, const char* Separator=" "); -string URItoFileName(const string &URI); -string TimeRFC1123(time_t Date); +std::string DeEscapeString(const std::string &input); + +std::string SizeToStr(double Bytes); +std::string TimeToStr(unsigned long Sec); +std::string Base64Encode(const std::string &Str); +std::string OutputInDepth(const unsigned long Depth, const char* Separator=" "); +std::string URItoFileName(const std::string &URI); +std::string TimeRFC1123(time_t Date); bool RFC1123StrToTime(const char* const str,time_t &time) __must_check; bool FTPMDTMStrToTime(const char* const str,time_t &time) __must_check; -__deprecated bool StrToTime(const string &Val,time_t &Result); -string LookupTag(const string &Message,const char *Tag,const char *Default = 0); -int StringToBool(const string &Text,int Default = -1); -bool ReadMessages(int Fd, vector<string> &List); +__deprecated bool StrToTime(const std::string &Val,time_t &Result); +std::string LookupTag(const std::string &Message,const char *Tag,const char *Default = 0); +int StringToBool(const std::string &Text,int Default = -1); +bool ReadMessages(int Fd, std::vector<std::string> &List); bool StrToNum(const char *Str,unsigned long &Res,unsigned Len,unsigned Base = 0); +bool StrToNum(const char *Str,unsigned long long &Res,unsigned Len,unsigned Base = 0); bool Base256ToNum(const char *Str,unsigned long &Res,unsigned int Len); -bool Hex2Num(const string &Str,unsigned char *Num,unsigned int Length); +bool Hex2Num(const std::string &Str,unsigned char *Num,unsigned int Length); bool TokSplitString(char Tok,char *Input,char **List, unsigned long ListMax); -vector<string> VectorizeString(string const &haystack, char const &split) __attrib_const; -void ioprintf(ostream &out,const char *format,...) __like_printf(2); -void strprintf(string &out,const char *format,...) __like_printf(2); +std::vector<std::string> VectorizeString(std::string const &haystack, char const &split) __attrib_const; +void ioprintf(std::ostream &out,const char *format,...) __like_printf(2); +void strprintf(std::string &out,const char *format,...) __like_printf(2); char *safe_snprintf(char *Buffer,char *End,const char *Format,...) __like_printf(3); -bool CheckDomainList(const string &Host, const string &List); +bool CheckDomainList(const std::string &Host, const std::string &List); int tolower_ascii(int const c) __attrib_const __hot; -string StripEpoch(const string &VerStr); +std::string StripEpoch(const std::string &VerStr); #define APT_MKSTRCMP(name,func) \ inline int name(const char *A,const char *B) {return func(A,A+strlen(A),B,B+strlen(B));}; \ inline int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));}; \ -inline int name(const string& A,const char *B) {return func(A.c_str(),A.c_str()+A.length(),B,B+strlen(B));}; \ -inline int name(const string& A,const string& B) {return func(A.c_str(),A.c_str()+A.length(),B.c_str(),B.c_str()+B.length());}; \ -inline int name(const string& A,const char *B,const char *BEnd) {return func(A.c_str(),A.c_str()+A.length(),B,BEnd);}; +inline int name(const std::string& A,const char *B) {return func(A.c_str(),A.c_str()+A.length(),B,B+strlen(B));}; \ +inline int name(const std::string& A,const std::string& B) {return func(A.c_str(),A.c_str()+A.length(),B.c_str(),B.c_str()+B.length());}; \ +inline int name(const std::string& A,const char *B,const char *BEnd) {return func(A.c_str(),A.c_str()+A.length(),B,BEnd);}; #define APT_MKSTRCMP2(name,func) \ inline int name(const char *A,const char *AEnd,const char *B) {return func(A,AEnd,B,B+strlen(B));}; \ -inline int name(const string& A,const char *B) {return func(A.begin(),A.end(),B,B+strlen(B));}; \ -inline int name(const string& A,const string& B) {return func(A.begin(),A.end(),B.begin(),B.end());}; \ -inline int name(const string& A,const char *B,const char *BEnd) {return func(A.begin(),A.end(),B,BEnd);}; +inline int name(const std::string& A,const char *B) {return func(A.begin(),A.end(),B,B+strlen(B));}; \ +inline int name(const std::string& A,const std::string& B) {return func(A.begin(),A.end(),B.begin(),B.end());}; \ +inline int name(const std::string& A,const char *B,const char *BEnd) {return func(A.begin(),A.end(),B,BEnd);}; int stringcmp(const char *A,const char *AEnd,const char *B,const char *BEnd); int stringcasecmp(const char *A,const char *AEnd,const char *B,const char *BEnd); @@ -88,17 +91,17 @@ int stringcasecmp(const char *A,const char *AEnd,const char *B,const char *BEnd) case the definition of string::const_iterator is not the same as const char * and we need these extra functions */ #if __GNUC__ >= 3 -int stringcmp(string::const_iterator A,string::const_iterator AEnd, +int stringcmp(std::string::const_iterator A,std::string::const_iterator AEnd, const char *B,const char *BEnd); -int stringcmp(string::const_iterator A,string::const_iterator AEnd, - string::const_iterator B,string::const_iterator BEnd); -int stringcasecmp(string::const_iterator A,string::const_iterator AEnd, +int stringcmp(std::string::const_iterator A,std::string::const_iterator AEnd, + std::string::const_iterator B,std::string::const_iterator BEnd); +int stringcasecmp(std::string::const_iterator A,std::string::const_iterator AEnd, const char *B,const char *BEnd); -int stringcasecmp(string::const_iterator A,string::const_iterator AEnd, - string::const_iterator B,string::const_iterator BEnd); +int stringcasecmp(std::string::const_iterator A,std::string::const_iterator AEnd, + std::string::const_iterator B,std::string::const_iterator BEnd); -inline int stringcmp(string::const_iterator A,string::const_iterator Aend,const char *B) {return stringcmp(A,Aend,B,B+strlen(B));}; -inline int stringcasecmp(string::const_iterator A,string::const_iterator Aend,const char *B) {return stringcasecmp(A,Aend,B,B+strlen(B));}; +inline int stringcmp(std::string::const_iterator A,std::string::const_iterator Aend,const char *B) {return stringcmp(A,Aend,B,B+strlen(B));}; +inline int stringcasecmp(std::string::const_iterator A,std::string::const_iterator Aend,const char *B) {return stringcasecmp(A,Aend,B,B+strlen(B));}; #endif APT_MKSTRCMP2(stringcmp,stringcmp); @@ -108,34 +111,34 @@ inline const char *DeNull(const char *s) {return (s == 0?"(null)":s);}; class URI { - void CopyFrom(const string &From); + void CopyFrom(const std::string &From); public: - string Access; - string User; - string Password; - string Host; - string Path; + std::string Access; + std::string User; + std::string Password; + std::string Host; + std::string Path; unsigned int Port; - operator string(); - inline void operator =(const string &From) {CopyFrom(From);}; + operator std::string(); + inline void operator =(const std::string &From) {CopyFrom(From);}; inline bool empty() {return Access.empty();}; - static string SiteOnly(const string &URI); - static string NoUserPassword(const string &URI); + static std::string SiteOnly(const std::string &URI); + static std::string NoUserPassword(const std::string &URI); - URI(string Path) {CopyFrom(Path);}; + URI(std::string Path) {CopyFrom(Path);}; URI() : Port(0) {}; }; struct SubstVar { const char *Subst; - const string *Contents; + const std::string *Contents; }; -string SubstVar(string Str,const struct SubstVar *Vars); -string SubstVar(const string &Str,const string &Subst,const string &Contents); +std::string SubstVar(std::string Str,const struct SubstVar *Vars); +std::string SubstVar(const std::string &Str,const std::string &Subst,const std::string &Contents); struct RxChoiceList { diff --git a/apt-pkg/deb/debindexfile.cc b/apt-pkg/deb/debindexfile.cc index e3d4063dc..5dc2a2ac2 100644 --- a/apt-pkg/deb/debindexfile.cc +++ b/apt-pkg/deb/debindexfile.cc @@ -9,6 +9,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/debindexfile.h> #include <apt-pkg/debsrcrecords.h> #include <apt-pkg/deblistparser.h> @@ -24,6 +26,8 @@ #include <sys/stat.h> /*}}}*/ +using std::string; + // SourcesIndex::debSourcesIndex - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -157,7 +161,7 @@ unsigned long debSourcesIndex::Size() const /* 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(); @@ -286,7 +290,7 @@ unsigned long debPackagesIndex::Size() const /* 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(); @@ -303,7 +307,7 @@ unsigned long debPackagesIndex::Size() const 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) @@ -317,11 +321,8 @@ bool debPackagesIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const // 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()); @@ -487,7 +488,7 @@ unsigned long debTranslationsIndex::Size() const /* 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(); @@ -507,7 +508,7 @@ bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const 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; @@ -519,11 +520,8 @@ bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const // 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()); @@ -588,7 +586,7 @@ unsigned long debStatusIndex::Size() const /* */ 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); @@ -602,11 +600,8 @@ bool debStatusIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const // 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) diff --git a/apt-pkg/deb/debindexfile.h b/apt-pkg/deb/debindexfile.h index b5085992d..9e64d4476 100644 --- a/apt-pkg/deb/debindexfile.h +++ b/apt-pkg/deb/debindexfile.h @@ -22,46 +22,55 @@ class debStatusIndex : public pkgIndexFile { - string File; - + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + + protected: + std::string File; + public: virtual const Type *GetType() const; // Interface for acquire - virtual string Describe(bool Short) const {return File;}; + virtual std::string Describe(bool Short) const {return File;}; // Interface for the Cache Generator virtual bool Exists() const; virtual bool HasPackages() const {return true;}; virtual unsigned long Size() const; virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const; + bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog, unsigned long const Flag) const; virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const; - debStatusIndex(string File); + debStatusIndex(std::string File); + virtual ~debStatusIndex() {}; }; class debPackagesIndex : public pkgIndexFile { - string URI; - string Dist; - string Section; - string Architecture; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; - string Info(const char *Type) const; - string IndexFile(const char *Type) const; - string IndexURI(const char *Type) const; + std::string URI; + std::string Dist; + std::string Section; + std::string Architecture; + + std::string Info(const char *Type) const; + std::string IndexFile(const char *Type) const; + std::string IndexURI(const char *Type) const; public: virtual const Type *GetType() const; // Stuff for accessing files on remote items - virtual string ArchiveInfo(pkgCache::VerIterator Ver) const; - virtual string ArchiveURI(string File) const {return URI + File;}; + virtual std::string ArchiveInfo(pkgCache::VerIterator Ver) const; + virtual std::string ArchiveURI(std::string File) const {return URI + File;}; // Interface for acquire - virtual string Describe(bool Short) const; + virtual std::string Describe(bool Short) const; // Interface for the Cache Generator virtual bool Exists() const; @@ -70,29 +79,33 @@ class debPackagesIndex : public pkgIndexFile virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const; virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const; - debPackagesIndex(string const &URI, string const &Dist, string const &Section, - bool const &Trusted, string const &Arch = "native"); + debPackagesIndex(std::string const &URI, std::string const &Dist, std::string const &Section, + bool const &Trusted, std::string const &Arch = "native"); + virtual ~debPackagesIndex() {}; }; class debTranslationsIndex : public pkgIndexFile { - string URI; - string Dist; - string Section; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + + std::string URI; + std::string Dist; + std::string Section; const char * const Language; - string Info(const char *Type) const; - string IndexFile(const char *Type) const; - string IndexURI(const char *Type) const; + std::string Info(const char *Type) const; + std::string IndexFile(const char *Type) const; + std::string IndexURI(const char *Type) const; - inline string TranslationFile() const {return string("Translation-").append(Language);}; + inline std::string TranslationFile() const {return std::string("Translation-").append(Language);}; public: virtual const Type *GetType() const; // Interface for acquire - virtual string Describe(bool Short) const; + virtual std::string Describe(bool Short) const; virtual bool GetIndexes(pkgAcquire *Owner) const; // Interface for the Cache Generator @@ -102,30 +115,34 @@ class debTranslationsIndex : public pkgIndexFile virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const; virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const; - debTranslationsIndex(string URI,string Dist,string Section, char const * const Language); + debTranslationsIndex(std::string URI,std::string Dist,std::string Section, char const * const Language); + virtual ~debTranslationsIndex() {}; }; class debSourcesIndex : public pkgIndexFile { - string URI; - string Dist; - string Section; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + + std::string URI; + std::string Dist; + std::string Section; - string Info(const char *Type) const; - string IndexFile(const char *Type) const; - string IndexURI(const char *Type) const; + std::string Info(const char *Type) const; + std::string IndexFile(const char *Type) const; + std::string IndexURI(const char *Type) const; public: virtual const Type *GetType() const; // Stuff for accessing files on remote items - virtual string SourceInfo(pkgSrcRecords::Parser const &Record, + virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record, pkgSrcRecords::File const &File) const; - virtual string ArchiveURI(string File) const {return URI + File;}; + virtual std::string ArchiveURI(std::string File) const {return URI + File;}; // Interface for acquire - virtual string Describe(bool Short) const; + virtual std::string Describe(bool Short) const; // Interface for the record parsers virtual pkgSrcRecords::Parser *CreateSrcParser() const; @@ -135,7 +152,8 @@ class debSourcesIndex : public pkgIndexFile virtual bool HasPackages() const {return false;}; virtual unsigned long Size() const; - debSourcesIndex(string URI,string Dist,string Section,bool Trusted); + debSourcesIndex(std::string URI,std::string Dist,std::string Section,bool Trusted); + virtual ~debSourcesIndex() {}; }; #endif diff --git a/apt-pkg/deb/deblistparser.cc b/apt-pkg/deb/deblistparser.cc index 0562be44c..84e6c38c5 100644 --- a/apt-pkg/deb/deblistparser.cc +++ b/apt-pkg/deb/deblistparser.cc @@ -10,11 +10,14 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/deblistparser.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> #include <apt-pkg/crc-16.h> #include <apt-pkg/md5.h> #include <apt-pkg/macros.h> @@ -23,6 +26,8 @@ #include <ctype.h> /*}}}*/ +using std::string; + static debListParser::WordList PrioList[] = {{"important",pkgCache::State::Important}, {"required",pkgCache::State::Required}, {"standard",pkgCache::State::Standard}, @@ -69,10 +74,7 @@ string debListParser::Package() { // --------------------------------------------------------------------- /* This will return the Architecture of the package this section describes */ string debListParser::Architecture() { - std::string const Arch = Section.FindS("Architecture"); - if (Arch.empty() == true) - return _config->Find("APT::Architecture"); - return Arch; + return Section.FindS("Architecture"); } /*}}}*/ // ListParser::ArchitectureAll /*{{{*/ @@ -128,12 +130,7 @@ bool debListParser::NewVersion(pkgCache::VerIterator &Ver) } if (ArchitectureAll() == true) - switch (Ver->MultiArch) - { - case pkgCache::Version::Foreign: Ver->MultiArch = pkgCache::Version::AllForeign; break; - case pkgCache::Version::Allowed: Ver->MultiArch = pkgCache::Version::AllAllowed; break; - default: Ver->MultiArch = pkgCache::Version::All; - } + Ver->MultiArch |= pkgCache::Version::All; // Archive Size Ver->Size = Section.FindULL("Size"); @@ -252,7 +249,7 @@ bool debListParser::UsePackage(pkgCache::PkgIterator &Pkg, return false; if (strcmp(Pkg.Name(),"apt") == 0) - Pkg->Flags |= pkgCache::Flag::Important; + Pkg->Flags |= pkgCache::Flag::Essential | pkgCache::Flag::Important; if (ParseStatus(Pkg,Ver) == false) return false; @@ -678,6 +675,9 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) return _error->Error("Problem parsing Provides line"); if (Op != pkgCache::Dep::NoOp) { _error->Warning("Ignoring Provides line with DepCompareOp for package %s", Package.c_str()); + } else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) { + if (NewProvidesAllArch(Ver, Package, Version) == false) + return false; } else { if (NewProvides(Ver, Package, Arch, Version) == false) return false; @@ -690,12 +690,12 @@ bool debListParser::ParseProvides(pkgCache::VerIterator &Ver) if (MultiArchEnabled == false) return true; - else if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + else if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed) { string const Package = string(Ver.ParentPkg().Name()).append(":").append("any"); return NewProvidesAllArch(Ver, Package, Ver.VerStr()); } - else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) return NewProvidesAllArch(Ver, Ver.ParentPkg().Name(), Ver.VerStr()); return true; @@ -773,6 +773,7 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, // 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; @@ -816,16 +817,16 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, ++lineEnd; // which datastorage need to be updated - map_ptrloc* writeTo = NULL; + enum { Suite, Component, Version, Origin, Codename, Label, None } writeTo = None; if (buffer[0] == ' ') ; - #define APT_PARSER_WRITETO(X, Y) else if (strncmp(Y, buffer, len) == 0) writeTo = &X; - APT_PARSER_WRITETO(FileI->Archive, "Suite") - APT_PARSER_WRITETO(FileI->Component, "Component") - APT_PARSER_WRITETO(FileI->Version, "Version") - APT_PARSER_WRITETO(FileI->Origin, "Origin") - APT_PARSER_WRITETO(FileI->Codename, "Codename") - APT_PARSER_WRITETO(FileI->Label, "Label") + #define APT_PARSER_WRITETO(X) else if (strncmp(#X, buffer, len) == 0) writeTo = X; + APT_PARSER_WRITETO(Suite) + APT_PARSER_WRITETO(Component) + APT_PARSER_WRITETO(Version) + APT_PARSER_WRITETO(Origin) + APT_PARSER_WRITETO(Codename) + APT_PARSER_WRITETO(Label) #undef APT_PARSER_WRITETO #define APT_PARSER_FLAGIT(X) else if (strncmp(#X, buffer, len) == 0) \ pkgTagSection::FindFlag(FileI->Flags, pkgCache::Flag:: X, dataStart, lineEnd); @@ -835,19 +836,19 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, // load all data from the line and save it string data; - if (writeTo != NULL) + if (writeTo != None) data.append(dataStart, dataEnd); if (sizeof(buffer) - 1 == (dataEnd - buffer)) { while (fgets(buffer, sizeof(buffer), release) != NULL) { - if (writeTo != NULL) + if (writeTo != None) data.append(buffer); if (strlen(buffer) != sizeof(buffer) - 1) break; } } - if (writeTo != NULL) + if (writeTo != None) { // remove spaces and stuff from the end of the data line for (std::string::reverse_iterator s = data.rbegin(); @@ -857,7 +858,15 @@ bool debListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, break; *s = '\0'; } - *writeTo = WriteUniqString(data); + switch (writeTo) { + case Suite: FileI->Archive = WriteUniqString(data); break; + case Component: FileI->Component = WriteUniqString(data); break; + case Version: FileI->Version = WriteUniqString(data); break; + case Origin: FileI->Origin = WriteUniqString(data); break; + case Codename: FileI->Codename = WriteUniqString(data); break; + case Label: FileI->Label = WriteUniqString(data); break; + case None: break; + } } } fclose(release); diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h index d62ce641c..386d291a2 100644 --- a/apt-pkg/deb/deblistparser.h +++ b/apt-pkg/deb/deblistparser.h @@ -12,9 +12,12 @@ #define PKGLIB_DEBLISTPARSER_H #include <apt-pkg/pkgcachegen.h> -#include <apt-pkg/indexfile.h> #include <apt-pkg/tagfile.h> +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/indexfile.h> +#endif + class debListParser : public pkgCacheGenerator::ListParser { public: @@ -25,36 +28,39 @@ class debListParser : public pkgCacheGenerator::ListParser const char *Str; unsigned char Val; }; - + private: - + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + + protected: pkgTagFile Tags; pkgTagSection Section; unsigned long iOffset; - string Arch; + std::string Arch; std::vector<std::string> Architectures; bool MultiArchEnabled; unsigned long UniqFindTagWrite(const char *Tag); - bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); + virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); bool ParseDepends(pkgCache::VerIterator &Ver,const char *Tag, unsigned int Type); bool ParseProvides(pkgCache::VerIterator &Ver); - bool NewProvidesAllArch(pkgCache::VerIterator &Ver, string const &Package, string const &Version); - static bool GrabWord(string Word,WordList *List,unsigned char &Out); + bool NewProvidesAllArch(pkgCache::VerIterator &Ver, std::string const &Package, std::string const &Version); + static bool GrabWord(std::string Word,WordList *List,unsigned char &Out); public: - static unsigned char GetPrio(string Str); + static unsigned char GetPrio(std::string Str); // These all operate against the current section - virtual string Package(); - virtual string Architecture(); + virtual std::string Package(); + virtual std::string Architecture(); virtual bool ArchitectureAll(); - virtual string Version(); + virtual std::string Version(); virtual bool NewVersion(pkgCache::VerIterator &Ver); - virtual string Description(); - virtual string DescriptionLanguage(); + virtual std::string Description(); + virtual std::string DescriptionLanguage(); virtual MD5SumValue Description_md5(); virtual unsigned short VersionHash(); virtual bool UsePackage(pkgCache::PkgIterator &Pkg, @@ -65,15 +71,16 @@ class debListParser : public pkgCacheGenerator::ListParser virtual bool Step(); bool LoadReleaseInfo(pkgCache::PkgFileIterator &FileI,FileFd &File, - string section); + std::string section); static const char *ParseDepends(const char *Start,const char *Stop, - string &Package,string &Ver,unsigned int &Op, + std::string &Package,std::string &Ver,unsigned int &Op, bool const &ParseArchFlags = false, bool const &StripMultiArch = true); static const char *ConvertRelation(const char *I,unsigned int &Op); - debListParser(FileFd *File, string const &Arch = ""); + debListParser(FileFd *File, std::string const &Arch = ""); + virtual ~debListParser() {}; }; #endif diff --git a/apt-pkg/deb/debmetaindex.cc b/apt-pkg/deb/debmetaindex.cc index 22effdc8f..bcc617da7 100644 --- a/apt-pkg/deb/debmetaindex.cc +++ b/apt-pkg/deb/debmetaindex.cc @@ -1,11 +1,15 @@ // ijones, walters +#include <config.h> #include <apt-pkg/debmetaindex.h> #include <apt-pkg/debindexfile.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> #include <apt-pkg/acquire-item.h> #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> +#include <apt-pkg/indexrecords.h> +#include <apt-pkg/sourcelist.h> #include <apt-pkg/error.h> #include <set> @@ -124,7 +128,7 @@ string debReleaseIndex::TranslationIndexURISuffix(const char *Type, const string { string Res =""; if (Dist[Dist.size() - 1] != '/') - Res += Section + "/i18n/"; + Res += Section + "/i18n/Translation-"; return Res + Type; } @@ -143,11 +147,13 @@ string debReleaseIndex::TranslationIndexURI(const char *Type, const string &Sect return URI + "dists/" + Dist + "/" + TranslationIndexURISuffix(Type, Section); } -debReleaseIndex::debReleaseIndex(string const &URI, string const &Dist) { - this->URI = URI; - this->Dist = Dist; - this->Indexes = NULL; - this->Type = "deb"; +debReleaseIndex::debReleaseIndex(string const &URI, string const &Dist) : + metaIndex(URI, Dist, "deb"), Trusted(CHECK_TRUST) +{} + +debReleaseIndex::debReleaseIndex(string const &URI, string const &Dist, bool const Trusted) : + metaIndex(URI, Dist, "deb") { + SetTrusted(Trusted); } debReleaseIndex::~debReleaseIndex() { @@ -204,31 +210,17 @@ vector <struct IndexTarget *>* debReleaseIndex::ComputeIndexTargets() const { if (lang.empty() == true) return IndexTargets; - // get the Translations: - // - if its a dists-style repository get the i18n/Index first - // - if its flat try to acquire files by guessing - if (Dist[Dist.size() - 1] == '/') { - for (std::set<std::string>::const_iterator s = sections.begin(); - s != sections.end(); ++s) { - for (std::vector<std::string>::const_iterator l = lang.begin(); - l != lang.end(); ++l) { - IndexTarget * Target = new OptionalIndexTarget(); - Target->ShortDesc = "Translation-" + *l; - Target->MetaKey = TranslationIndexURISuffix(l->c_str(), *s); - Target->URI = TranslationIndexURI(l->c_str(), *s); - Target->Description = Info (Target->ShortDesc.c_str(), *s); - IndexTargets->push_back(Target); - } - } - } else { - for (std::set<std::string>::const_iterator s = sections.begin(); - s != sections.end(); ++s) { + // get the Translation-* files, later we will skip download of non-existent if we have an index + for (std::set<std::string>::const_iterator s = sections.begin(); + s != sections.end(); ++s) { + for (std::vector<std::string>::const_iterator l = lang.begin(); + l != lang.end(); ++l) { IndexTarget * Target = new OptionalIndexTarget(); - Target->ShortDesc = "TranslationIndex"; - Target->MetaKey = TranslationIndexURISuffix("Index", *s); - Target->URI = TranslationIndexURI("Index", *s); + Target->ShortDesc = "Translation-" + *l; + Target->MetaKey = TranslationIndexURISuffix(l->c_str(), *s); + Target->URI = TranslationIndexURI(l->c_str(), *s); Target->Description = Info (Target->ShortDesc.c_str(), *s); - IndexTargets->push_back (Target); + IndexTargets->push_back(Target); } } @@ -256,8 +248,22 @@ bool debReleaseIndex::GetIndexes(pkgAcquire *Owner, bool const &GetAll) const return true; } +void debReleaseIndex::SetTrusted(bool const Trusted) +{ + if (Trusted == true) + this->Trusted = ALWAYS_TRUSTED; + else + this->Trusted = NEVER_TRUSTED; +} + bool debReleaseIndex::IsTrusted() const { + if (Trusted == ALWAYS_TRUSTED) + return true; + else if (Trusted == NEVER_TRUSTED) + return false; + + if(_config->FindB("APT::Authentication::TrustCDROM", false)) if(URI.substr(0,strlen("cdrom:")) == "cdrom:") return true; @@ -353,6 +359,7 @@ class debSLTypeDebian : public pkgSourceList::Type vector<string> const Archs = (arch != Options.end()) ? VectorizeString(arch->second, ',') : APT::Configuration::getArchitectures(); + map<string, string>::const_iterator const trusted = Options.find("trusted"); for (vector<metaIndex *>::const_iterator I = List.begin(); I != List.end(); ++I) @@ -362,6 +369,9 @@ class debSLTypeDebian : public pkgSourceList::Type continue; debReleaseIndex *Deb = (debReleaseIndex *) (*I); + if (trusted != Options.end()) + Deb->SetTrusted(StringToBool(trusted->second, false)); + /* This check insures that there will be only one Release file queued for all the Packages files and Sources files it corresponds to. */ @@ -379,9 +389,14 @@ class debSLTypeDebian : public pkgSourceList::Type return true; } } + // No currently created Release file indexes this entry, so we create a new one. - // XXX determine whether this release is trusted or not - debReleaseIndex *Deb = new debReleaseIndex(URI, Dist); + debReleaseIndex *Deb; + if (trusted != Options.end()) + Deb = new debReleaseIndex(URI, Dist, StringToBool(trusted->second, false)); + else + Deb = new debReleaseIndex(URI, Dist); + if (IsSrc == true) Deb->PushSectionEntry ("source", new debReleaseIndex::debSectionEntry(Section, IsSrc)); else diff --git a/apt-pkg/deb/debmetaindex.h b/apt-pkg/deb/debmetaindex.h index 1561c6e00..b9ecab97c 100644 --- a/apt-pkg/deb/debmetaindex.h +++ b/apt-pkg/deb/debmetaindex.h @@ -3,9 +3,14 @@ #define PKGLIB_DEBMETAINDEX_H #include <apt-pkg/metaindex.h> -#include <apt-pkg/sourcelist.h> #include <map> +#include <string> +#include <vector> + +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/sourcelist.h> +#endif class debReleaseIndex : public metaIndex { public: @@ -13,38 +18,43 @@ class debReleaseIndex : public metaIndex { class debSectionEntry { public: - debSectionEntry (string const &Section, bool const &IsSrc); - string const Section; + debSectionEntry (std::string const &Section, bool const &IsSrc); + std::string const Section; bool const IsSrc; }; private: - std::map<string, vector<debSectionEntry const*> > ArchEntries; + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + std::map<std::string, std::vector<debSectionEntry const*> > ArchEntries; + enum { ALWAYS_TRUSTED, NEVER_TRUSTED, CHECK_TRUST } Trusted; public: - debReleaseIndex(string const &URI, string const &Dist); - ~debReleaseIndex(); + debReleaseIndex(std::string const &URI, std::string const &Dist); + debReleaseIndex(std::string const &URI, std::string const &Dist, bool const Trusted); + virtual ~debReleaseIndex(); - virtual string ArchiveURI(string const &File) const {return URI + File;}; + virtual std::string ArchiveURI(std::string const &File) const {return URI + File;}; virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) const; - vector <struct IndexTarget *>* ComputeIndexTargets() const; - string Info(const char *Type, string const &Section, string const &Arch="") const; - string MetaIndexInfo(const char *Type) const; - string MetaIndexFile(const char *Types) const; - string MetaIndexURI(const char *Type) const; - string IndexURI(const char *Type, string const &Section, string const &Arch="native") const; - string IndexURISuffix(const char *Type, string const &Section, string const &Arch="native") const; - string SourceIndexURI(const char *Type, const string &Section) const; - string SourceIndexURISuffix(const char *Type, const string &Section) const; - string TranslationIndexURI(const char *Type, const string &Section) const; - string TranslationIndexURISuffix(const char *Type, const string &Section) const; - virtual vector <pkgIndexFile *> *GetIndexFiles(); - + std::vector <struct IndexTarget *>* ComputeIndexTargets() const; + std::string Info(const char *Type, std::string const &Section, std::string const &Arch="") const; + std::string MetaIndexInfo(const char *Type) const; + std::string MetaIndexFile(const char *Types) const; + std::string MetaIndexURI(const char *Type) const; + std::string IndexURI(const char *Type, std::string const &Section, std::string const &Arch="native") const; + std::string IndexURISuffix(const char *Type, std::string const &Section, std::string const &Arch="native") const; + std::string SourceIndexURI(const char *Type, const std::string &Section) const; + std::string SourceIndexURISuffix(const char *Type, const std::string &Section) const; + std::string TranslationIndexURI(const char *Type, const std::string &Section) const; + std::string TranslationIndexURISuffix(const char *Type, const std::string &Section) const; + virtual std::vector <pkgIndexFile *> *GetIndexFiles(); + + void SetTrusted(bool const Trusted); virtual bool IsTrusted() const; - void PushSectionEntry(vector<string> const &Archs, const debSectionEntry *Entry); - void PushSectionEntry(string const &Arch, const debSectionEntry *Entry); + void PushSectionEntry(std::vector<std::string> const &Archs, const debSectionEntry *Entry); + void PushSectionEntry(std::string const &Arch, const debSectionEntry *Entry); void PushSectionEntry(const debSectionEntry *Entry); }; diff --git a/apt-pkg/deb/debrecords.cc b/apt-pkg/deb/debrecords.cc index 7f596ab0d..184c07c33 100644 --- a/apt-pkg/deb/debrecords.cc +++ b/apt-pkg/deb/debrecords.cc @@ -8,18 +8,24 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/debrecords.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> #include <apt-pkg/aptconfiguration.h> +#include <apt-pkg/fileutl.h> + #include <langinfo.h> /*}}}*/ +using std::string; + // RecordParser::debRecordParser - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ 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) { @@ -77,7 +83,7 @@ string debRecordParser::SHA1Hash() return Section.FindS("SHA1"); } /*}}}*/ -// RecordParser::SHA1Hash - Return the archive hash /*{{{*/ +// RecordParser::SHA256Hash - Return the archive hash /*{{{*/ // --------------------------------------------------------------------- /* */ string debRecordParser::SHA256Hash() @@ -85,6 +91,14 @@ string debRecordParser::SHA256Hash() return Section.FindS("SHA256"); } /*}}}*/ +// RecordParser::SHA512Hash - Return the archive hash /*{{{*/ +// --------------------------------------------------------------------- +/* */ +string debRecordParser::SHA512Hash() +{ + return Section.FindS("SHA512"); +} + /*}}}*/ // RecordParser::Maintainer - Return the maintainer email /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -93,6 +107,15 @@ string debRecordParser::Maintainer() return Section.FindS("Maintainer"); } /*}}}*/ +// RecordParser::RecordField - Return the value of an arbitrary field /*{{*/ +// --------------------------------------------------------------------- +/* */ +string debRecordParser::RecordField(const char *fieldName) +{ + return Section.FindS(fieldName); +} + + /*}}}*/ // RecordParser::ShortDesc - Return a 1 line description /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -116,8 +139,8 @@ string debRecordParser::LongDesc() orig = Section.FindS("Description").c_str(); else { - vector<string> const lang = APT::Configuration::getLanguages(); - for (vector<string>::const_iterator l = lang.begin(); + std::vector<string> const lang = APT::Configuration::getLanguages(); + for (std::vector<string>::const_iterator l = lang.begin(); orig.empty() && l != lang.end(); ++l) orig = Section.FindS(string("Description-").append(*l).c_str()); } diff --git a/apt-pkg/deb/debrecords.h b/apt-pkg/deb/debrecords.h index 6f358abfa..b5e3bbdba 100644 --- a/apt-pkg/deb/debrecords.h +++ b/apt-pkg/deb/debrecords.h @@ -15,11 +15,18 @@ #define PKGLIB_DEBRECORDS_H #include <apt-pkg/pkgrecords.h> -#include <apt-pkg/indexfile.h> #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) */ + void *d; + FileFd File; pkgTagFile Tags; pkgTagSection Section; @@ -32,23 +39,28 @@ class debRecordParser : public pkgRecords::Parser public: // These refer to the archive file for the Version - virtual string FileName(); - virtual string MD5Hash(); - virtual string SHA1Hash(); - virtual string SHA256Hash(); - virtual string SourcePkg(); - virtual string SourceVer(); + virtual std::string FileName(); + virtual std::string MD5Hash(); + virtual std::string SHA1Hash(); + virtual std::string SHA256Hash(); + virtual std::string SHA512Hash(); + virtual std::string SourcePkg(); + virtual std::string SourceVer(); // These are some general stats about the package - virtual string Maintainer(); - virtual string ShortDesc(); - virtual string LongDesc(); - virtual string Name(); - virtual string Homepage(); + virtual std::string Maintainer(); + virtual std::string ShortDesc(); + virtual std::string LongDesc(); + virtual std::string Name(); + virtual std::string Homepage(); + + // An arbitrary custom field + virtual std::string RecordField(const char *fieldName); virtual void GetRec(const char *&Start,const char *&Stop); - debRecordParser(string FileName,pkgCache &Cache); + debRecordParser(std::string FileName,pkgCache &Cache); + virtual ~debRecordParser() {}; }; #endif diff --git a/apt-pkg/deb/debsrcrecords.cc b/apt-pkg/deb/debsrcrecords.cc index 749305005..ce55ccd1f 100644 --- a/apt-pkg/deb/debsrcrecords.cc +++ b/apt-pkg/deb/debsrcrecords.cc @@ -9,6 +9,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/deblistparser.h> #include <apt-pkg/debsrcrecords.h> #include <apt-pkg/error.h> @@ -19,6 +21,8 @@ using std::max; /*}}}*/ +using std::string; + // SrcRecordParser::Binaries - Return the binaries field /*{{{*/ // --------------------------------------------------------------------- /* This member parses the binaries field into a pair of class arrays and @@ -28,25 +32,32 @@ using std::max; used during scanning to find the right package */ const char **debSrcRecordParser::Binaries() { - // This should use Start/Stop too, it is supposed to be efficient after all. - string Bins = Sect.FindS("Binary"); - if (Bins.empty() == true || Bins.length() >= 102400) - return 0; - - if (Bins.length() >= BufSize) - { - delete [] Buffer; - // allocate new size based on buffer (but never smaller than 4000) - BufSize = max((unsigned int)4000, max((unsigned int)Bins.length()+1,2*BufSize)); - Buffer = new char[BufSize]; - } + const char *Start, *End; + if (Sect.Find("Binary", Start, End) == false) + return NULL; + for (; isspace(*Start) != 0; ++Start); + if (Start >= End) + return NULL; + + StaticBinList.clear(); + free(Buffer); + Buffer = strndup(Start, End - Start); - strcpy(Buffer,Bins.c_str()); - if (TokSplitString(',',Buffer,StaticBinList, - sizeof(StaticBinList)/sizeof(StaticBinList[0])) == false) - return 0; + char* bin = Buffer; + do { + char* binStartNext = strchrnul(bin, ','); + char* binEnd = binStartNext - 1; + for (; isspace(*binEnd) != 0; --binEnd) + binEnd = '\0'; + StaticBinList.push_back(bin); + if (*binStartNext != ',') + break; + *binStartNext = '\0'; + for (bin = binStartNext + 1; isspace(*bin) != 0; ++bin); + } while (*bin != '\0'); + StaticBinList.push_back(NULL); - return (const char **)StaticBinList; + return (const char **) &StaticBinList[0]; } /*}}}*/ // SrcRecordParser::BuildDepends - Return the Build-Depends information /*{{{*/ @@ -55,7 +66,7 @@ const char **debSrcRecordParser::Binaries() package/version records representing the build dependency. The returned array need not be freed and will be reused by the next call to this function */ -bool debSrcRecordParser::BuildDepends(vector<pkgSrcRecords::Parser::BuildDepRec> &BuildDeps, +bool debSrcRecordParser::BuildDepends(std::vector<pkgSrcRecords::Parser::BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch) { unsigned int I; @@ -100,7 +111,7 @@ bool debSrcRecordParser::BuildDepends(vector<pkgSrcRecords::Parser::BuildDepRec> // --------------------------------------------------------------------- /* This parses the list of files and returns it, each file is required to have a complete source package */ -bool debSrcRecordParser::Files(vector<pkgSrcRecords::File> &List) +bool debSrcRecordParser::Files(std::vector<pkgSrcRecords::File> &List) { List.erase(List.begin(),List.end()); diff --git a/apt-pkg/deb/debsrcrecords.h b/apt-pkg/deb/debsrcrecords.h index 905264daa..5d2a67f4f 100644 --- a/apt-pkg/deb/debsrcrecords.h +++ b/apt-pkg/deb/debsrcrecords.h @@ -18,13 +18,15 @@ class debSrcRecordParser : public pkgSrcRecords::Parser { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + FileFd Fd; pkgTagFile Tags; pkgTagSection Sect; - char *StaticBinList[400]; + std::vector<const char*> StaticBinList; unsigned long iOffset; char *Buffer; - unsigned int BufSize; public: @@ -32,25 +34,25 @@ class debSrcRecordParser : public pkgSrcRecords::Parser virtual bool Step() {iOffset = Tags.Offset(); return Tags.Step(Sect);}; virtual bool Jump(unsigned long const &Off) {iOffset = Off; return Tags.Jump(Sect,Off);}; - virtual string Package() const {return Sect.FindS("Package");}; - virtual string Version() const {return Sect.FindS("Version");}; - virtual string Maintainer() const {return Sect.FindS("Maintainer");}; - virtual string Section() const {return Sect.FindS("Section");}; + virtual std::string Package() const {return Sect.FindS("Package");}; + virtual std::string Version() const {return Sect.FindS("Version");}; + virtual std::string Maintainer() const {return Sect.FindS("Maintainer");}; + virtual std::string Section() const {return Sect.FindS("Section");}; virtual const char **Binaries(); - virtual bool BuildDepends(vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true); + virtual bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true); virtual unsigned long Offset() {return iOffset;}; - virtual string AsStr() + virtual std::string AsStr() { const char *Start=0,*Stop=0; Sect.GetSection(Start,Stop); - return string(Start,Stop); + return std::string(Start,Stop); }; - virtual bool Files(vector<pkgSrcRecords::File> &F); + virtual bool Files(std::vector<pkgSrcRecords::File> &F); - debSrcRecordParser(string const &File,pkgIndexFile const *Index) - : Parser(Index), Fd(File,FileFd::ReadOnlyGzip), Tags(&Fd,102400), - Buffer(0), BufSize(0) {} - ~debSrcRecordParser(); + debSrcRecordParser(std::string const &File,pkgIndexFile const *Index) + : Parser(Index), Fd(File,FileFd::ReadOnly, FileFd::Extension), Tags(&Fd,102400), + Buffer(NULL) {} + virtual ~debSrcRecordParser(); }; #endif diff --git a/apt-pkg/deb/debsystem.cc b/apt-pkg/deb/debsystem.cc index 8619822df..7ed6936c3 100644 --- a/apt-pkg/deb/debsystem.cc +++ b/apt-pkg/deb/debsystem.cc @@ -10,6 +10,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/debsystem.h> #include <apt-pkg/debversion.h> #include <apt-pkg/debindexfile.h> @@ -17,24 +19,36 @@ #include <apt-pkg/configuration.h> #include <apt-pkg/error.h> #include <apt-pkg/fileutl.h> -#include <apti18n.h> #include <sys/types.h> #include <unistd.h> #include <dirent.h> #include <errno.h> + +#include <apti18n.h> /*}}}*/ +using std::string; + debSystem debSys; +class debSystemPrivate { +public: + debSystemPrivate() : LockFD(-1), LockCount(0), StatusFile(0) + { + } + // For locking support + int LockFD; + unsigned LockCount; + + debStatusIndex *StatusFile; +}; + // System::debSystem - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ debSystem::debSystem() { - LockFD = -1; - LockCount = 0; - StatusFile = 0; - + d = new debSystemPrivate(); Label = "Debian dpkg interface"; VS = &debVS; } @@ -44,7 +58,8 @@ debSystem::debSystem() /* */ debSystem::~debSystem() { - delete StatusFile; + delete d->StatusFile; + delete d; } /*}}}*/ // System::Lock - Get the lock /*{{{*/ @@ -54,16 +69,16 @@ debSystem::~debSystem() bool debSystem::Lock() { // Disable file locking - if (_config->FindB("Debug::NoLocking",false) == true || LockCount > 1) + if (_config->FindB("Debug::NoLocking",false) == true || d->LockCount > 1) { - LockCount++; + d->LockCount++; return true; } // Create the lockfile string AdminDir = flNotFile(_config->Find("Dir::State::status")); - LockFD = GetLock(AdminDir + "lock"); - if (LockFD == -1) + d->LockFD = GetLock(AdminDir + "lock"); + if (d->LockFD == -1) { if (errno == EACCES || errno == EAGAIN) return _error->Error(_("Unable to lock the administration directory (%s), " @@ -76,8 +91,8 @@ bool debSystem::Lock() // See if we need to abort with a dirty journal if (CheckUpdates() == true) { - close(LockFD); - LockFD = -1; + close(d->LockFD); + d->LockFD = -1; const char *cmd; if (getenv("SUDO_USER") != NULL) cmd = "sudo dpkg --configure -a"; @@ -89,7 +104,7 @@ bool debSystem::Lock() "run '%s' to correct the problem. "), cmd); } - LockCount++; + d->LockCount++; return true; } @@ -99,15 +114,15 @@ bool debSystem::Lock() /* */ bool debSystem::UnLock(bool NoErrors) { - if (LockCount == 0 && NoErrors == true) + if (d->LockCount == 0 && NoErrors == true) return false; - if (LockCount < 1) + if (d->LockCount < 1) return _error->Error(_("Not locked")); - if (--LockCount == 0) + if (--d->LockCount == 0) { - close(LockFD); - LockCount = 0; + close(d->LockFD); + d->LockCount = 0; } return true; @@ -168,9 +183,9 @@ bool debSystem::Initialize(Configuration &Cnf) Cnf.CndSet("Dir::State::status","/var/lib/dpkg/status"); Cnf.CndSet("Dir::Bin::dpkg","/usr/bin/dpkg"); - if (StatusFile) { - delete StatusFile; - StatusFile = 0; + if (d->StatusFile) { + delete d->StatusFile; + d->StatusFile = 0; } return true; @@ -206,11 +221,11 @@ signed debSystem::Score(Configuration const &Cnf) // System::AddStatusFiles - Register the status files /*{{{*/ // --------------------------------------------------------------------- /* */ -bool debSystem::AddStatusFiles(vector<pkgIndexFile *> &List) +bool debSystem::AddStatusFiles(std::vector<pkgIndexFile *> &List) { - if (StatusFile == 0) - StatusFile = new debStatusIndex(_config->FindFile("Dir::State::status")); - List.push_back(StatusFile); + if (d->StatusFile == 0) + d->StatusFile = new debStatusIndex(_config->FindFile("Dir::State::status")); + List.push_back(d->StatusFile); return true; } /*}}}*/ @@ -220,11 +235,11 @@ bool debSystem::AddStatusFiles(vector<pkgIndexFile *> &List) bool debSystem::FindIndex(pkgCache::PkgFileIterator File, pkgIndexFile *&Found) const { - if (StatusFile == 0) + if (d->StatusFile == 0) return false; - if (StatusFile->FindInCache(*File.Cache()) == File) + if (d->StatusFile->FindInCache(*File.Cache()) == File) { - Found = StatusFile; + Found = d->StatusFile; return true; } diff --git a/apt-pkg/deb/debsystem.h b/apt-pkg/deb/debsystem.h index 5f9995e5d..855123516 100644 --- a/apt-pkg/deb/debsystem.h +++ b/apt-pkg/deb/debsystem.h @@ -11,17 +11,18 @@ #define PKGLIB_DEBSYSTEM_H #include <apt-pkg/pkgsystem.h> +#include <apt-pkg/pkgcache.h> +class debSystemPrivate; class debStatusIndex; +class pkgDepCache; + class debSystem : public pkgSystem { - // For locking support - int LockFD; - unsigned LockCount; + // private d-pointer + debSystemPrivate *d; bool CheckUpdates(); - - debStatusIndex *StatusFile; - + public: virtual bool Lock(); @@ -35,7 +36,7 @@ class debSystem : public pkgSystem pkgIndexFile *&Found) const; debSystem(); - ~debSystem(); + virtual ~debSystem(); }; extern debSystem debSys; diff --git a/apt-pkg/deb/debversion.cc b/apt-pkg/deb/debversion.cc index 340403721..a02699a44 100644 --- a/apt-pkg/deb/debversion.cc +++ b/apt-pkg/deb/debversion.cc @@ -10,7 +10,7 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#define APT_COMPATIBILITY 986 +#include <config.h> #include <apt-pkg/debversion.h> #include <apt-pkg/pkgcache.h> @@ -257,7 +257,7 @@ bool debVersioningSystem::CheckDep(const char *PkgVer, // debVS::UpstreamVersion - Return the upstream version string /*{{{*/ // --------------------------------------------------------------------- /* This strips all the debian specific information from the version number */ -string debVersioningSystem::UpstreamVersion(const char *Ver) +std::string debVersioningSystem::UpstreamVersion(const char *Ver) { // Strip off the bit before the first colon const char *I = Ver; @@ -272,6 +272,6 @@ string debVersioningSystem::UpstreamVersion(const char *Ver) if (*I == '-') Last = I - Ver; - return string(Ver,Last); + return std::string(Ver,Last); } /*}}}*/ diff --git a/apt-pkg/deb/debversion.h b/apt-pkg/deb/debversion.h index 56fb67887..f1d6f3cc5 100644 --- a/apt-pkg/deb/debversion.h +++ b/apt-pkg/deb/debversion.h @@ -32,39 +32,11 @@ class debVersioningSystem : public pkgVersioningSystem { return DoCmpVersion(A,Aend,B,Bend); } - virtual string UpstreamVersion(const char *A); + virtual std::string UpstreamVersion(const char *A); debVersioningSystem(); }; extern debVersioningSystem debVS; -#ifdef APT_COMPATIBILITY -#if APT_COMPATIBILITY != 986 -#warning "Using APT_COMPATIBILITY" -#endif - -inline int pkgVersionCompare(const char *A, const char *B) -{ - return debVS.CmpVersion(A,B); -} -inline int pkgVersionCompare(const char *A, const char *AEnd, - const char *B, const char *BEnd) -{ - return debVS.DoCmpVersion(A,AEnd,B,BEnd); -} -inline int pkgVersionCompare(string A,string B) -{ - return debVS.CmpVersion(A,B); -} -inline bool pkgCheckDep(const char *DepVer,const char *PkgVer,int Op) -{ - return debVS.CheckDep(PkgVer,Op,DepVer); -} -inline string pkgBaseVersion(const char *Ver) -{ - return debVS.UpstreamVersion(Ver); -} -#endif - #endif diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index b6c92fc23..63c5a6380 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -8,6 +8,8 @@ ##################################################################### */ /*}}}*/ // Includes /*{{{*/ +#include <config.h> + #include <apt-pkg/dpkgpm.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> @@ -16,6 +18,7 @@ #include <apt-pkg/strutl.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/cachefile.h> +#include <apt-pkg/packagemanager.h> #include <unistd.h> #include <stdlib.h> @@ -40,12 +43,28 @@ #include <sys/ioctl.h> #include <pty.h> -#include <config.h> #include <apti18n.h> /*}}}*/ using namespace std; +class pkgDPkgPMPrivate +{ +public: + pkgDPkgPMPrivate() : stdin_is_dev_null(false), dpkgbuf_pos(0), + term_out(NULL), history_out(NULL) + { + dpkgbuf[0] = '\0'; + } + bool stdin_is_dev_null; + // the buffer we use for the dpkg status-fd reading + char dpkgbuf[1024]; + int dpkgbuf_pos; + FILE *term_out; + FILE *history_out; + string dpkg_error; +}; + namespace { // Maps the dpkg "processing" info to human readable names. Entry 0 @@ -91,7 +110,7 @@ ionice(int PID) { if (!FileExists("/usr/bin/ionice")) return false; - pid_t Process = ExecFork(); + pid_t Process = ExecFork(); if (Process == 0) { char buf[32]; @@ -106,13 +125,71 @@ ionice(int PID) return ExecWait(Process, "ionice"); } +// dpkgChrootDirectory - chrooting for dpkg if needed /*{{{*/ +static void dpkgChrootDirectory() +{ + std::string const chrootDir = _config->FindDir("DPkg::Chroot-Directory"); + if (chrootDir == "/") + return; + std::cerr << "Chrooting into " << chrootDir << std::endl; + if (chroot(chrootDir.c_str()) != 0) + _exit(100); +} + /*}}}*/ + + +// FindNowVersion - Helper to find a Version in "now" state /*{{{*/ +// --------------------------------------------------------------------- +/* This is helpful when a package is no longer installed but has residual + * config files + */ +static +pkgCache::VerIterator FindNowVersion(const pkgCache::PkgIterator &Pkg) +{ + pkgCache::VerIterator Ver; + for (Ver = Pkg.VersionList(); Ver.end() == false; Ver++) + { + pkgCache::VerFileIterator Vf = Ver.FileList(); + pkgCache::PkgFileIterator F = Vf.File(); + for (F = Vf.File(); F.end() == false; F++) + { + if (F && F.Archive()) + { + if (strcmp(F.Archive(), "now")) + return Ver; + } + } + } + return Ver; +} + /*}}}*/ +ssize_t retry_write(int fd, const void *buf, size_t count) +{ + int Res; + ssize_t i = 0; + errno = 0; + do + { + Res = write(fd, buf, count); + if (Res < 0 && errno == EINTR) + continue; + if (Res < 0) + break; + buf = (char *)buf + Res; + count -= Res; + i += Res; + } + while (Res > 0 && count > 0); + return i; +} + // DPkgPM::pkgDPkgPM - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache) - : pkgPackageManager(Cache), dpkgbuf_pos(0), - term_out(NULL), history_out(NULL), PackagesDone(0), PackagesTotal(0) + : pkgPackageManager(Cache), PackagesDone(0), PackagesTotal(0) { + d = new pkgDPkgPMPrivate(); } /*}}}*/ // DPkgPM::pkgDPkgPM - Destructor /*{{{*/ @@ -120,6 +197,7 @@ pkgDPkgPM::pkgDPkgPM(pkgDepCache *Cache) /* */ pkgDPkgPM::~pkgDPkgPM() { + delete d; } /*}}}*/ // DPkgPM::Install - Install a package /*{{{*/ @@ -310,15 +388,7 @@ bool pkgDPkgPM::RunScriptsWithPkgs(const char *Cnf) SetCloseExec(STDIN_FILENO,false); SetCloseExec(STDERR_FILENO,false); - if (_config->FindDir("DPkg::Chroot-Directory","/") != "/") - { - std::cerr << "Chrooting into " - << _config->FindDir("DPkg::Chroot-Directory") - << std::endl; - if (chroot(_config->FindDir("DPkg::Chroot-Directory","/").c_str()) != 0) - _exit(100); - } - + dpkgChrootDirectory(); const char *Args[4]; Args[0] = "/bin/sh"; Args[1] = "-c"; @@ -374,9 +444,9 @@ void pkgDPkgPM::DoStdin(int master) unsigned char input_buf[256] = {0,}; ssize_t len = read(0, input_buf, sizeof(input_buf)); if (len) - write(master, input_buf, len); + retry_write(master, input_buf, len); else - stdin_is_dev_null = true; + d->stdin_is_dev_null = true; } /*}}}*/ // DPkgPM::DoTerminalPty - Read the terminal pty and write log /*{{{*/ @@ -400,9 +470,9 @@ void pkgDPkgPM::DoTerminalPty(int master) } if(len <= 0) return; - write(1, term_buf, len); - if(term_out) - fwrite(term_buf, len, sizeof(char), term_out); + retry_write(1, term_buf, len); + if(d->term_out) + fwrite(term_buf, len, sizeof(char), d->term_out); } /*}}}*/ // DPkgPM::ProcessDpkgStatusBuf /*{{{*/ @@ -475,7 +545,7 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line) << ":" << s << endl; if(OutStatusFd > 0) - write(OutStatusFd, status.str().c_str(), status.str().size()); + retry_write(OutStatusFd, status.str().c_str(), status.str().size()); if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; @@ -499,7 +569,7 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line) << ":" << list[3] << endl; if(OutStatusFd > 0) - write(OutStatusFd, status.str().c_str(), status.str().size()); + retry_write(OutStatusFd, status.str().c_str(), status.str().size()); if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; pkgFailures++; @@ -513,7 +583,7 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line) << ":" << list[3] << endl; if(OutStatusFd > 0) - write(OutStatusFd, status.str().c_str(), status.str().size()); + retry_write(OutStatusFd, status.str().c_str(), status.str().size()); if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; return; @@ -541,7 +611,7 @@ void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line) << ":" << s << endl; if(OutStatusFd > 0) - write(OutStatusFd, status.str().c_str(), status.str().size()); + retry_write(OutStatusFd, status.str().c_str(), status.str().size()); if (Debug == true) std::clog << "send: '" << status.str() << "'" << endl; } @@ -606,14 +676,14 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd, int OutStatusFd) char *p, *q; int len; - len=read(statusfd, &dpkgbuf[dpkgbuf_pos], sizeof(dpkgbuf)-dpkgbuf_pos); - dpkgbuf_pos += len; + len=read(statusfd, &d->dpkgbuf[d->dpkgbuf_pos], sizeof(d->dpkgbuf)-d->dpkgbuf_pos); + d->dpkgbuf_pos += len; if(len <= 0) return; // process line by line if we have a buffer - p = q = dpkgbuf; - while((q=(char*)memchr(p, '\n', dpkgbuf+dpkgbuf_pos-p)) != NULL) + p = q = d->dpkgbuf; + while((q=(char*)memchr(p, '\n', d->dpkgbuf+d->dpkgbuf_pos-p)) != NULL) { *q = 0; ProcessDpkgStatusLine(OutStatusFd, p); @@ -621,8 +691,8 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd, int OutStatusFd) } // now move the unprocessed bits (after the final \n that is now a 0x0) - // to the start and update dpkgbuf_pos - p = (char*)memrchr(dpkgbuf, 0, dpkgbuf_pos); + // to the start and update d->dpkgbuf_pos + p = (char*)memrchr(d->dpkgbuf, 0, d->dpkgbuf_pos); if(p == NULL) return; @@ -630,8 +700,8 @@ void pkgDPkgPM::DoDpkgStatusFd(int statusfd, int OutStatusFd) p++; // move the unprocessed tail to the start and update pos - memmove(dpkgbuf, p, p-dpkgbuf); - dpkgbuf_pos = dpkgbuf+dpkgbuf_pos-p; + memmove(d->dpkgbuf, p, p-d->dpkgbuf); + d->dpkgbuf_pos = d->dpkgbuf+d->dpkgbuf_pos-p; } /*}}}*/ // DPkgPM::WriteHistoryTag /*{{{*/ @@ -643,7 +713,7 @@ void pkgDPkgPM::WriteHistoryTag(string const &tag, string value) // poor mans rstrip(", ") if (value[length-2] == ',' && value[length-1] == ' ') value.erase(length - 2, 2); - fprintf(history_out, "%s: %s\n", tag.c_str(), value.c_str()); + fprintf(d->history_out, "%s: %s\n", tag.c_str(), value.c_str()); } /*}}}*/ // DPkgPM::OpenLog /*{{{*/ bool pkgDPkgPM::OpenLog() @@ -664,11 +734,11 @@ bool pkgDPkgPM::OpenLog() _config->Find("Dir::Log::Terminal")); if (!logfile_name.empty()) { - term_out = fopen(logfile_name.c_str(),"a"); - if (term_out == NULL) + d->term_out = fopen(logfile_name.c_str(),"a"); + if (d->term_out == NULL) return _error->WarningE("OpenLog", _("Could not open file '%s'"), logfile_name.c_str()); - setvbuf(term_out, NULL, _IONBF, 0); - SetCloseExec(fileno(term_out), true); + setvbuf(d->term_out, NULL, _IONBF, 0); + SetCloseExec(fileno(d->term_out), true); struct passwd *pw; struct group *gr; pw = getpwnam("root"); @@ -676,7 +746,7 @@ bool pkgDPkgPM::OpenLog() if (pw != NULL && gr != NULL) chown(logfile_name.c_str(), pw->pw_uid, gr->gr_gid); chmod(logfile_name.c_str(), 0644); - fprintf(term_out, "\nLog started: %s\n", timestr); + fprintf(d->term_out, "\nLog started: %s\n", timestr); } // write your history @@ -684,11 +754,11 @@ bool pkgDPkgPM::OpenLog() _config->Find("Dir::Log::History")); if (!history_name.empty()) { - history_out = fopen(history_name.c_str(),"a"); - if (history_out == NULL) + d->history_out = fopen(history_name.c_str(),"a"); + if (d->history_out == NULL) return _error->WarningE("OpenLog", _("Could not open file '%s'"), history_name.c_str()); chmod(history_name.c_str(), 0644); - fprintf(history_out, "\nStart-Date: %s\n", timestr); + fprintf(d->history_out, "\nStart-Date: %s\n", timestr); string remove, purge, install, reinstall, upgrade, downgrade; for (pkgCache::PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I) { @@ -729,7 +799,7 @@ bool pkgDPkgPM::OpenLog() WriteHistoryTag("Downgrade",downgrade); WriteHistoryTag("Remove",remove); WriteHistoryTag("Purge",purge); - fflush(history_out); + fflush(d->history_out); } return true; @@ -743,16 +813,16 @@ bool pkgDPkgPM::CloseLog() struct tm *tmp = localtime(&t); strftime(timestr, sizeof(timestr), "%F %T", tmp); - if(term_out) + if(d->term_out) { - fprintf(term_out, "Log ended: "); - fprintf(term_out, "%s", timestr); - fprintf(term_out, "\n"); - fclose(term_out); + fprintf(d->term_out, "Log ended: "); + fprintf(d->term_out, "%s", timestr); + fprintf(d->term_out, "\n"); + fclose(d->term_out); } - term_out = NULL; + d->term_out = NULL; - if(history_out) + if(d->history_out) { if (disappearedPkgs.empty() == false) { @@ -769,12 +839,12 @@ bool pkgDPkgPM::CloseLog() } WriteHistoryTag("Disappeared", disappear); } - if (dpkg_error.empty() == false) - fprintf(history_out, "Error: %s\n", dpkg_error.c_str()); - fprintf(history_out, "End-Date: %s\n", timestr); - fclose(history_out); + if (d->dpkg_error.empty() == false) + fprintf(d->history_out, "Error: %s\n", d->dpkg_error.c_str()); + fprintf(d->history_out, "End-Date: %s\n", timestr); + fclose(d->history_out); } - history_out = NULL; + d->history_out = NULL; return true; } @@ -811,6 +881,58 @@ static int racy_pselect(int nfds, fd_set *readfds, fd_set *writefds, */ bool pkgDPkgPM::Go(int OutStatusFd) { + pkgPackageManager::SigINTStop = false; + + // Generate the base argument list for dpkg + std::vector<const char *> Args; + unsigned long StartSize = 0; + string Tmp = _config->Find("Dir::Bin::dpkg","dpkg"); + { + string const dpkgChrootDir = _config->FindDir("DPkg::Chroot-Directory", "/"); + size_t dpkgChrootLen = dpkgChrootDir.length(); + if (dpkgChrootDir != "/" && Tmp.find(dpkgChrootDir) == 0) + { + if (dpkgChrootDir[dpkgChrootLen - 1] == '/') + --dpkgChrootLen; + Tmp = Tmp.substr(dpkgChrootLen); + } + } + Args.push_back(Tmp.c_str()); + StartSize += Tmp.length(); + + // Stick in any custom dpkg options + Configuration::Item const *Opts = _config->Tree("DPkg::Options"); + if (Opts != 0) + { + Opts = Opts->Child; + for (; Opts != 0; Opts = Opts->Next) + { + if (Opts->Value.empty() == true) + continue; + Args.push_back(Opts->Value.c_str()); + StartSize += Opts->Value.length(); + } + } + + size_t const BaseArgs = Args.size(); + // we need to detect if we can qualify packages with the architecture or not + Args.push_back("--assert-multi-arch"); + Args.push_back(NULL); + + pid_t dpkgAssertMultiArch = ExecFork(); + if (dpkgAssertMultiArch == 0) + { + dpkgChrootDirectory(); + // redirect everything to the ultimate sink as we only need the exit-status + int const nullfd = open("/dev/null", O_RDONLY); + dup2(nullfd, STDIN_FILENO); + dup2(nullfd, STDOUT_FILENO); + dup2(nullfd, STDERR_FILENO); + execvp(Args[0], (char**) &Args[0]); + _error->WarningE("dpkgGo", "Can't detect if dpkg supports multi-arch!"); + _exit(2); + } + fd_set rfds; struct timespec tv; sigset_t sigmask; @@ -882,32 +1004,25 @@ bool pkgDPkgPM::Go(int OutStatusFd) } } - stdin_is_dev_null = false; + d->stdin_is_dev_null = false; // create log OpenLog(); - // Generate the base argument list for dpkg - std::vector<const char *> Args; - unsigned long StartSize = 0; - string const Tmp = _config->Find("Dir::Bin::dpkg","dpkg"); - Args.push_back(Tmp.c_str()); - StartSize += Tmp.length(); - - // Stick in any custom dpkg options - Configuration::Item const *Opts = _config->Tree("DPkg::Options"); - if (Opts != 0) + bool dpkgMultiArch = false; + if (dpkgAssertMultiArch > 0) { - Opts = Opts->Child; - for (; Opts != 0; Opts = Opts->Next) + int Status = 0; + while (waitpid(dpkgAssertMultiArch, &Status, 0) != dpkgAssertMultiArch) { - if (Opts->Value.empty() == true) + if (errno == EINTR) continue; - Args.push_back(Opts->Value.c_str()); - StartSize += Opts->Value.length(); + _error->WarningE("dpkgGo", _("Waited for %s but it wasn't there"), "dpkg --assert-multi-arch"); + break; } + if (WIFEXITED(Status) == true && WEXITSTATUS(Status) == 0) + dpkgMultiArch = true; } - size_t const BaseArgs = Args.size(); // this loop is runs once per operation for (vector<Item>::const_iterator I = List.begin(); I != List.end();) @@ -943,20 +1058,24 @@ bool pkgDPkgPM::Go(int OutStatusFd) // the argument list is split in a way that A depends on B // and they are in the same "--configure A B" run // - with the split they may now be configured in different - // runs + // runs, using Immediate-Configure-All can help prevent this. if (J - I > (signed)MaxArgs) { J = I + MaxArgs; - Args.reserve(MaxArgs + 10); + unsigned long const size = MaxArgs + 10; + Args.reserve(size); + Packages.reserve(size); } else { - Args.reserve((J - I) + 10); + unsigned long const size = (J - I) + 10; + Args.reserve(size); + Packages.reserve(size); } - int fd[2]; - pipe(fd); + if (pipe(fd) != 0) + return _error->Errno("pipe","Failed to create IPC pipe to dpkg"); #define ADDARG(X) Args.push_back(X); Size += strlen(X) #define ADDARGC(X) Args.push_back(X); Size += sizeof(X) - 1 @@ -965,6 +1084,7 @@ bool pkgDPkgPM::Go(int OutStatusFd) char status_fd_buf[20]; snprintf(status_fd_buf,sizeof(status_fd_buf),"%i", fd[1]); ADDARG(status_fd_buf); + unsigned long const Op = I->Op; switch (I->Op) { @@ -1028,14 +1148,29 @@ bool pkgDPkgPM::Go(int OutStatusFd) continue; if (I->Op == Item::Configure && disappearedPkgs.find(I->Pkg.Name()) != disappearedPkgs.end()) continue; - if (I->Pkg.Arch() == nativeArch || !strcmp(I->Pkg.Arch(), "all")) + // We keep this here to allow "smooth" transitions from e.g. multiarch dpkg/ubuntu to dpkg/debian + if (dpkgMultiArch == false && (I->Pkg.Arch() == nativeArch || !strcmp(I->Pkg.Arch(), "all"))) { char const * const name = I->Pkg.Name(); ADDARG(name); } else { - char * const fullname = strdup(I->Pkg.FullName(false).c_str()); + pkgCache::VerIterator PkgVer; + std::string name = I->Pkg.Name(); + if (Op == Item::Remove || Op == Item::Purge) + { + PkgVer = I->Pkg.CurrentVer(); + if(PkgVer.end() == true) + PkgVer = FindNowVersion(I->Pkg); + } + else + PkgVer = Cache[I->Pkg].InstVerIter(Cache); + if (PkgVer.end() == false) + name.append(":").append(PkgVer.Arch()); + else + _error->Warning("Can not find PkgVer for '%s'", name.c_str()); + char * const fullname = strdup(name.c_str()); Packages.push_back(fullname); ADDARG(fullname); } @@ -1067,8 +1202,13 @@ bool pkgDPkgPM::Go(int OutStatusFd) it to all processes in the group. Since dpkg ignores the signal it doesn't die but we do! So we must also ignore it */ sighandler_t old_SIGQUIT = signal(SIGQUIT,SIG_IGN); - sighandler_t old_SIGINT = signal(SIGINT,SIG_IGN); - + sighandler_t old_SIGINT = signal(SIGINT,SigINT); + + // Check here for any SIGINT + if (pkgPackageManager::SigINTStop && (Op == Item::Remove || Op == Item::Purge || Op == Item::Install)) + break; + + // ignore SIGHUP as well (debian #463030) sighandler_t old_SIGHUP = signal(SIGHUP,SIG_IGN); @@ -1087,8 +1227,8 @@ bool pkgDPkgPM::Go(int OutStatusFd) const char *s = _("Can not write log, openpty() " "failed (/dev/pts not mounted?)\n"); fprintf(stderr, "%s",s); - if(term_out) - fprintf(term_out, "%s",s); + if(d->term_out) + fprintf(d->term_out, "%s",s); master = slave = -1; } else { struct termios rtt; @@ -1106,7 +1246,6 @@ bool pkgDPkgPM::Go(int OutStatusFd) sigprocmask(SIG_SETMASK, &original_sigmask, 0); } } - // Fork dpkg pid_t Child; _config->Set("APT::Keep-Fds::",fd[1]); @@ -1117,7 +1256,7 @@ bool pkgDPkgPM::Go(int OutStatusFd) << (PackagesDone/float(PackagesTotal)*100.0) << ":" << _("Running dpkg") << endl; - write(OutStatusFd, status.str().c_str(), status.str().size()); + retry_write(OutStatusFd, status.str().c_str(), status.str().size()); } Child = ExecFork(); @@ -1136,14 +1275,7 @@ bool pkgDPkgPM::Go(int OutStatusFd) } close(fd[0]); // close the read end of the pipe - if (_config->FindDir("DPkg::Chroot-Directory","/") != "/") - { - std::cerr << "Chrooting into " - << _config->FindDir("DPkg::Chroot-Directory") - << std::endl; - if (chroot(_config->FindDir("DPkg::Chroot-Directory","/").c_str()) != 0) - _exit(100); - } + dpkgChrootDirectory(); if (chdir(_config->FindDir("DPkg::Run-Directory","/").c_str()) != 0) _exit(100); @@ -1213,13 +1345,14 @@ bool pkgDPkgPM::Go(int OutStatusFd) // Restore sig int/quit signal(SIGQUIT,old_SIGQUIT); signal(SIGINT,old_SIGINT); + signal(SIGHUP,old_SIGHUP); return _error->Errno("waitpid","Couldn't wait for subprocess"); } // wait for input or output here FD_ZERO(&rfds); - if (master >= 0 && !stdin_is_dev_null) + if (master >= 0 && !d->stdin_is_dev_null) FD_SET(0, &rfds); FD_SET(_dpkgin, &rfds); if(master >= 0) @@ -1253,6 +1386,7 @@ bool pkgDPkgPM::Go(int OutStatusFd) // Restore sig int/quit signal(SIGQUIT,old_SIGQUIT); signal(SIGINT,old_SIGINT); + signal(SIGHUP,old_SIGHUP); if(master >= 0) @@ -1273,14 +1407,14 @@ bool pkgDPkgPM::Go(int OutStatusFd) RunScripts("DPkg::Post-Invoke"); if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV) - strprintf(dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]); + strprintf(d->dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]); else if (WIFEXITED(Status) != 0) - strprintf(dpkg_error, "Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status)); + strprintf(d->dpkg_error, "Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status)); else - strprintf(dpkg_error, "Sub-process %s exited unexpectedly",Args[0]); + strprintf(d->dpkg_error, "Sub-process %s exited unexpectedly",Args[0]); - if(dpkg_error.size() > 0) - _error->Error("%s", dpkg_error.c_str()); + if(d->dpkg_error.size() > 0) + _error->Error("%s", d->dpkg_error.c_str()); if(stopOnError) { @@ -1290,6 +1424,9 @@ bool pkgDPkgPM::Go(int OutStatusFd) } } CloseLog(); + + if (pkgPackageManager::SigINTStop) + _error->Warning(_("Operation was interrupted before it could finish")); if (RunScripts("DPkg::Post-Invoke") == false) return false; @@ -1314,6 +1451,10 @@ bool pkgDPkgPM::Go(int OutStatusFd) Cache.writeStateFile(NULL); return true; } + +void SigINT(int sig) { + pkgPackageManager::SigINTStop = true; +} /*}}}*/ // pkgDpkgPM::Reset - Dump the contents of the command list /*{{{*/ // --------------------------------------------------------------------- @@ -1328,6 +1469,12 @@ void pkgDPkgPM::Reset() /* */ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) { + // If apport doesn't exist or isn't installed do nothing + // This e.g. prevents messages in 'universes' without apport + pkgCache::PkgIterator apportPkg = Cache.FindPkg("apport"); + if (apportPkg.end() == true || apportPkg->CurrentVer == 0) + return; + string pkgname, reportfile, srcpkgname, pkgver, arch; string::size_type pos; FILE *report; @@ -1415,7 +1562,7 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) if(strstr(strbuf,"Package:") == strbuf) { char pkgname[255], version[255]; - if(sscanf(strbuf, "Package: %s %s", pkgname, version) == 2) + if(sscanf(strbuf, "Package: %254s %254s", pkgname, version) == 2) if(strcmp(pkgver.c_str(), version) == 0) { fclose(report); @@ -1444,8 +1591,8 @@ void pkgDPkgPM::WriteApportReport(const char *pkgpath, const char *errormsg) fprintf(report, "ErrorMessage:\n %s\n", errormsg); // ensure that the log is flushed - if(term_out) - fflush(term_out); + if(d->term_out) + fflush(d->term_out); // attach terminal log it if we have it string logfile_name = _config->FindFile("Dir::Log::Terminal"); diff --git a/apt-pkg/deb/dpkgpm.h b/apt-pkg/deb/dpkgpm.h index b7b5a6def..aab39f633 100644 --- a/apt-pkg/deb/dpkgpm.h +++ b/apt-pkg/deb/dpkgpm.h @@ -15,22 +15,17 @@ #include <map> #include <stdio.h> +#ifndef APT_8_CLEANER_HEADERS using std::vector; using std::map; +#endif +class pkgDPkgPMPrivate; class pkgDPkgPM : public pkgPackageManager { private: - - bool stdin_is_dev_null; - - // the buffer we use for the dpkg status-fd reading - char dpkgbuf[1024]; - int dpkgbuf_pos; - FILE *term_out; - FILE *history_out; - string dpkg_error; + pkgDPkgPMPrivate *d; /** \brief record the disappear action and handle accordingly @@ -45,7 +40,7 @@ class pkgDPkgPM : public pkgPackageManager needs to declare a Replaces on the disappeared package. \param pkgname Name of the package that disappeared */ - void handleDisappearAction(string const &pkgname); + void handleDisappearAction(std::string const &pkgname); protected: int pkgFailures; @@ -60,11 +55,11 @@ class pkgDPkgPM : public pkgPackageManager // the dpkg states that the pkg will run through, the string is // the package, the vector contains the dpkg states that the package // will go through - map<string,vector<struct DpkgState> > PackageOps; + std::map<std::string,std::vector<struct DpkgState> > PackageOps; // the dpkg states that are already done; the string is the package // the int is the state that is already done (e.g. a package that is // going to be install is already in state "half-installed") - map<string,unsigned int> PackageOpsDone; + std::map<std::string,unsigned int> PackageOpsDone; // progress reporting unsigned int PackagesDone; @@ -73,19 +68,19 @@ class pkgDPkgPM : public pkgPackageManager struct Item { enum Ops {Install, Configure, Remove, Purge, ConfigurePending, TriggersPending} Op; - string File; + std::string File; PkgIterator Pkg; - Item(Ops Op,PkgIterator Pkg,string File = "") : Op(Op), + Item(Ops Op,PkgIterator Pkg,std::string File = "") : Op(Op), File(File), Pkg(Pkg) {}; Item() {}; }; - vector<Item> List; + std::vector<Item> List; // Helpers bool RunScriptsWithPkgs(const char *Cnf); bool SendV2Pkgs(FILE *F); - void WriteHistoryTag(string const &tag, string value); + void WriteHistoryTag(std::string const &tag, std::string value); // apport integration void WriteApportReport(const char *pkgpath, const char *errormsg); @@ -101,7 +96,7 @@ class pkgDPkgPM : public pkgPackageManager void ProcessDpkgStatusLine(int OutStatusFd, char *line); // The Actuall installation implementation - virtual bool Install(PkgIterator Pkg,string File); + virtual bool Install(PkgIterator Pkg,std::string File); virtual bool Configure(PkgIterator Pkg); virtual bool Remove(PkgIterator Pkg,bool Purge = false); virtual bool Go(int StatusFd=-1); @@ -113,4 +108,6 @@ class pkgDPkgPM : public pkgPackageManager virtual ~pkgDPkgPM(); }; +void SigINT(int sig); + #endif diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 580056687..1eea55560 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -8,28 +8,35 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/depcache.h> #include <apt-pkg/version.h> #include <apt-pkg/versionmatch.h> #include <apt-pkg/error.h> #include <apt-pkg/sptr.h> #include <apt-pkg/algorithms.h> - #include <apt-pkg/fileutl.h> #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> #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 <sstream> #include <set> #include <sys/stat.h> -#include <apti18n.h> +#include <apti18n.h> /*}}}*/ + +using std::string; + // helper for Install-Recommends-Sections and Never-MarkAuto-Sections /*{{{*/ static bool ConfigValueInSubTree(const char* SubTree, const char *needle) @@ -169,14 +176,14 @@ bool pkgDepCache::readStateFile(OpProgress *Prog) /*{{{*/ string const state = _config->FindFile("Dir::State::extended_states"); if(RealFileExists(state)) { state_file.Open(state, FileFd::ReadOnly); - int const file_size = state_file.Size(); + off_t const file_size = state_file.Size(); if(Prog != NULL) Prog->OverallProgress(0, file_size, 1, _("Reading state information")); pkgTagFile tagfile(&state_file); pkgTagSection section; - int amt = 0; + off_t amt = 0; bool const debug_autoremove = _config->FindB("Debug::pkgAutoRemove",false); while(tagfile.Step(section)) { string const pkgname = section.FindS("Package"); @@ -364,14 +371,11 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res) // Check the providing packages PrvIterator P = Dep.TargetPkg().ProvidesList(); - PkgIterator Pkg = Dep.ParentPkg(); for (; P.end() != true; ++P) { - /* Provides may never be applied against the same package (or group) - if it is a conflicts. See the comment above. */ - if (P.OwnerPkg()->Group == Pkg->Group && Dep.IsNegative() == true) + if (Dep.IsIgnorable(P) == true) continue; - + // Check if the provides is a hit if (Type == NowVersion) { @@ -406,60 +410,8 @@ bool pkgDepCache::CheckDep(DepIterator Dep,int Type,PkgIterator &Res) /*}}}*/ // DepCache::AddSizes - Add the packages sizes to the counters /*{{{*/ // --------------------------------------------------------------------- -/* Call with Mult = -1 to preform the inverse opration - The Mult increases the complexity of the calulations here and is unused - - or do we really have a usecase for removing the size of a package two - times? So let us replace it with a simple bool and be done with it… */ -__deprecated void pkgDepCache::AddSizes(const PkgIterator &Pkg,signed long Mult) -{ - StateCache &P = PkgState[Pkg->ID]; - - if (Pkg->VersionList == 0) - return; - - if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure && - P.Keep() == true) - return; - - // Compute the size data - if (P.NewInstall() == true) - { - iUsrSize += (signed long long)(Mult*P.InstVerIter(*this)->InstalledSize); - iDownloadSize += (signed long long)(Mult*P.InstVerIter(*this)->Size); - return; - } - - // Upgrading - if (Pkg->CurrentVer != 0 && - (P.InstallVer != (Version *)Pkg.CurrentVer() || - (P.iFlags & ReInstall) == ReInstall) && P.InstallVer != 0) - { - iUsrSize += (signed long long)(Mult*((signed long long)P.InstVerIter(*this)->InstalledSize - - (signed long long)Pkg.CurrentVer()->InstalledSize)); - iDownloadSize += (signed long long)(Mult*P.InstVerIter(*this)->Size); - return; - } - - // Reinstall - if (Pkg.State() == pkgCache::PkgIterator::NeedsUnpack && - P.Delete() == false) - { - iDownloadSize += (signed long long)(Mult*P.InstVerIter(*this)->Size); - return; - } - - // Removing - if (Pkg->CurrentVer != 0 && P.InstallVer == 0) - { - iUsrSize -= (signed long long)(Mult*Pkg.CurrentVer()->InstalledSize); - return; - } -} - /*}}}*/ -// DepCache::AddSizes - Add the packages sizes to the counters /*{{{*/ -// --------------------------------------------------------------------- /* Call with Inverse = true to preform the inverse opration */ -void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const &Inverse) +void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const Inverse) { StateCache &P = PkgState[Pkg->ID]; @@ -530,8 +482,9 @@ void pkgDepCache::AddSizes(const PkgIterator &Pkg, bool const &Inverse) calld Remove/Add itself. Remember, dependencies can be circular so while processing a dep for Pkg it is possible that Add/Remove will be called on Pkg */ -void pkgDepCache::AddStates(const PkgIterator &Pkg,int Add) +void pkgDepCache::AddStates(const PkgIterator &Pkg, bool const Invert) { + signed char const Add = (Invert == false) ? 1 : -1; StateCache &State = PkgState[Pkg->ID]; // The Package is broken (either minimal dep or policy dep) @@ -806,17 +759,17 @@ void pkgDepCache::Update(PkgIterator const &Pkg) // DepCache::MarkKeep - Put the package in the keep state /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, +bool pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, unsigned long Depth) { if (IsModeChangeOk(ModeKeep, Pkg, Depth, FromUser) == false) - return; + return false; /* Reject an attempt to keep a non-source broken installed package, those must be upgraded */ if (Pkg.State() == PkgIterator::NeedsUnpack && Pkg.CurrentVer().Downloadable() == false) - return; + return false; /* We changed the soft state all the time so the UI is a bit nicer to use */ @@ -824,7 +777,7 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, // Check that it is not already kept if (P.Mode == ModeKeep) - return; + return true; if (Soft == true) P.iFlags |= AutoKept; @@ -857,31 +810,31 @@ void pkgDepCache::MarkKeep(PkgIterator const &Pkg, bool Soft, bool FromUser, P.InstallVer = Pkg.CurrentVer(); AddStates(Pkg); - Update(Pkg); - AddSizes(Pkg); + + return true; } /*}}}*/ // DepCache::MarkDelete - Put the package in the delete state /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, +bool pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, unsigned long Depth, bool FromUser) { if (IsModeChangeOk(ModeDelete, Pkg, Depth, FromUser) == false) - return; + return false; StateCache &P = PkgState[Pkg->ID]; // Check that it is not already marked for delete if ((P.Mode == ModeDelete || P.InstallVer == 0) && (Pkg.Purge() == true || rPurge == false)) - return; + return true; // check if we are allowed to remove the package if (IsDeleteOk(Pkg,rPurge,Depth,FromUser) == false) - return; + return false; P.iFlags &= ~(AutoKept | Purge); if (rPurge == true) @@ -905,6 +858,7 @@ void pkgDepCache::MarkDelete(PkgIterator const &Pkg, bool rPurge, Update(Pkg); AddSizes(Pkg); + return true; } /*}}}*/ // DepCache::IsDeleteOk - check if it is ok to remove this package /*{{{*/ @@ -985,18 +939,70 @@ bool pkgDepCache::IsModeChangeOk(ModeList const mode, PkgIterator const &Pkg, // DepCache::MarkInstall - Put the package in the install state /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, +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; + } + if ((A->Flags & pkgCache::Flag::Important) != (B->Flags & pkgCache::Flag::Important)) + { + if ((A->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) + return false; + else if ((B->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) + 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) { if (IsModeChangeOk(ModeInstall, Pkg, Depth, FromUser) == false) - return; + return false; StateCache &P = PkgState[Pkg->ID]; // See if there is even any possible instalation candidate if (P.CandidateVer == 0) - return; + return false; /* Check that it is not already marked for install and that it can be installed */ @@ -1005,13 +1011,13 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, P.CandidateVer == (Version *)Pkg.CurrentVer())) { if (P.CandidateVer == (Version *)Pkg.CurrentVer() && P.InstallVer == 0) - MarkKeep(Pkg, false, FromUser, Depth+1); - return; + return MarkKeep(Pkg, false, FromUser, Depth+1); + return true; } // check if we are allowed to install the package if (IsInstallOk(Pkg,AutoInst,Depth,FromUser) == false) - return; + return false; ActionGroup group(*this); P.iFlags &= ~AutoKept; @@ -1046,8 +1052,8 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, Update(Pkg); AddSizes(Pkg); - if (AutoInst == false) - return; + if (AutoInst == false || _config->Find("APT::Solver", "internal") != "internal") + return true; if (DebugMarker == true) std::clog << OutputInDepth(Depth) << "MarkInstall " << Pkg << " FU=" << FromUser << std::endl; @@ -1091,7 +1097,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, continue; // if the dependency was critical, we can't install it, so remove it again MarkDelete(Pkg,false,Depth + 1, false); - return; + return false; } /* Check if any ImportantDep() (but not Critical) were added @@ -1147,41 +1153,28 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, /* 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() @@ -1199,7 +1192,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, // 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; } } @@ -1211,6 +1204,7 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, upgrade the package. */ if (Start.IsNegative() == true) { + SPtrArray<Version *> List = Start.AllTargets(); for (Version **I = List; *I != 0; I++) { VerIterator Ver(*this,*I); @@ -1222,14 +1216,17 @@ void pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, continue; if (PkgState[Pkg->ID].CandidateVer != *I && - Start->Type == Dep::DpkgBreaks) - MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps); - else - MarkDelete(Pkg,false,Depth + 1, false); + Start->Type == Dep::DpkgBreaks && + MarkInstall(Pkg,true,Depth + 1, false, ForceImportantDeps) == true) + continue; + else if (MarkDelete(Pkg,false,Depth + 1, false) == false) + break; } continue; } } + + return Dep.end() == true; } /*}}}*/ // DepCache::IsInstallOk - check if it is ok to install this package /*{{{*/ @@ -1250,25 +1247,42 @@ void pkgDepCache::SetReInstall(PkgIterator const &Pkg,bool To) if (unlikely(Pkg.end() == true)) return; + APT::PackageList pkglist; + if (Pkg->CurrentVer != 0 && + (Pkg.CurrentVer()-> MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) + { + pkgCache::GrpIterator Grp = Pkg.Group(); + for (pkgCache::PkgIterator P = Grp.PackageList(); P.end() == false; P = Grp.NextPkg(P)) + { + if (P->CurrentVer != 0) + pkglist.insert(P); + } + } + else + pkglist.insert(Pkg); + ActionGroup group(*this); - RemoveSizes(Pkg); - RemoveStates(Pkg); - - StateCache &P = PkgState[Pkg->ID]; - if (To == true) - P.iFlags |= ReInstall; - else - P.iFlags &= ~ReInstall; - - AddStates(Pkg); - AddSizes(Pkg); + for (APT::PackageList::const_iterator Pkg = pkglist.begin(); Pkg != pkglist.end(); ++Pkg) + { + RemoveSizes(Pkg); + RemoveStates(Pkg); + + StateCache &P = PkgState[Pkg->ID]; + if (To == true) + P.iFlags |= ReInstall; + else + P.iFlags &= ~ReInstall; + + AddStates(Pkg); + AddSizes(Pkg); + } } /*}}}*/ // DepCache::SetCandidateVersion - Change the candidate version /*{{{*/ // --------------------------------------------------------------------- /* */ -void pkgDepCache::SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo) +void pkgDepCache::SetCandidateVersion(VerIterator TargetVer) { pkgCache::PkgIterator Pkg = TargetVer.ParentPkg(); StateCache &P = PkgState[Pkg->ID]; @@ -1558,7 +1572,7 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep) return true; else if(Dep->Type == pkgCache::Dep::Recommends) { - if ( _config->FindB("APT::Install-Recommends", false)) + if (InstallRecommends) return true; // we suport a special mode to only install-recommends for certain // sections @@ -1569,11 +1583,17 @@ bool pkgDepCache::Policy::IsImportantDep(DepIterator const &Dep) return true; } else if(Dep->Type == pkgCache::Dep::Suggests) - return _config->FindB("APT::Install-Suggests", false); + return InstallSuggests; return false; } /*}}}*/ +// Policy::GetPriority - Get the priority of the package pin /*{{{*/ +signed short pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const &Pkg) +{ return 0; }; +signed short pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const &File) +{ return 0; }; + /*}}}*/ pkgDepCache::InRootSetFunc *pkgDepCache::GetRootSetFunc() /*{{{*/ { DefaultRootSetFunc *f = new DefaultRootSetFunc; @@ -1599,6 +1619,9 @@ bool pkgDepCache::MarkFollowsSuggests() // pkgDepCache::MarkRequired - the main mark algorithm /*{{{*/ bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc) { + if (_config->Find("APT::Solver", "internal") != "internal") + return true; + bool follow_recommends; bool follow_suggests; bool debug_autoremove = _config->FindB("Debug::pkgAutoRemove",false); @@ -1625,6 +1648,7 @@ bool pkgDepCache::MarkRequired(InRootSetFunc &userFunc) { if(!(PkgState[p->ID].Flags & Flag::Auto) || (p->Flags & Flag::Essential) || + (p->Flags & Flag::Important) || userFunc.InRootSet(p) || // be nice even then a required package violates the policy (#583517) // and do the full mark process also for required packages diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index 760f0b589..7358048ed 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -40,12 +40,18 @@ #include <apt-pkg/configuration.h> #include <apt-pkg/pkgcache.h> -#include <apt-pkg/progress.h> -#include <apt-pkg/error.h> #include <vector> #include <memory> #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 { @@ -233,6 +239,7 @@ class pkgDepCache : protected pkgCache::Namespace inline bool Delete() const {return Mode == ModeDelete;}; inline bool Purge() const {return Delete() == true && (iFlags & pkgDepCache::Purge) == pkgDepCache::Purge; }; inline bool Keep() const {return Mode == ModeKeep;}; + inline bool Protect() const {return (iFlags & Protected) == Protected;}; inline bool Upgrade() const {return Status > 0 && Mode == ModeInstall;}; inline bool Upgradable() const {return Status >= 1;}; inline bool Downgrade() const {return Status < 0 && Mode == ModeInstall;}; @@ -257,11 +264,21 @@ class pkgDepCache : protected pkgCache::Namespace class Policy { public: - + Policy() { + InstallRecommends = _config->FindB("APT::Install-Recommends", false); + InstallSuggests = _config->FindB("APT::Install-Suggests", false); + } + virtual VerIterator GetCandidateVer(PkgIterator const &Pkg); virtual bool IsImportantDep(DepIterator const &Dep); - + virtual signed short GetPriority(PkgIterator const &Pkg); + virtual signed short GetPriority(PkgFileIterator const &File); + virtual ~Policy() {}; + + private: + bool InstallRecommends; + bool InstallSuggests; }; private: @@ -315,11 +332,10 @@ class pkgDepCache : protected pkgCache::Namespace void Update(PkgIterator const &P); // Count manipulators - void AddSizes(const PkgIterator &Pkg, bool const &Invert = false); + void AddSizes(const PkgIterator &Pkg, bool const Invert = false); inline void RemoveSizes(const PkgIterator &Pkg) {AddSizes(Pkg, true);}; - void AddSizes(const PkgIterator &Pkg,signed long Mult) __deprecated; - void AddStates(const PkgIterator &Pkg,int Add = 1); - inline void RemoveStates(const PkgIterator &Pkg) {AddStates(Pkg,-1);}; + void AddStates(const PkgIterator &Pkg, bool const Invert = false); + inline void RemoveStates(const PkgIterator &Pkg) {AddStates(Pkg,true);}; public: @@ -328,9 +344,9 @@ class pkgDepCache : protected pkgCache::Namespace inline Header &Head() {return *Cache->HeaderP;}; inline GrpIterator GrpBegin() {return Cache->GrpBegin();}; inline PkgIterator PkgBegin() {return Cache->PkgBegin();}; - inline GrpIterator FindGrp(string const &Name) {return Cache->FindGrp(Name);}; - inline PkgIterator FindPkg(string const &Name) {return Cache->FindPkg(Name);}; - inline PkgIterator FindPkg(string const &Name, string const &Arch) {return Cache->FindPkg(Name, Arch);}; + inline GrpIterator FindGrp(std::string const &Name) {return Cache->FindGrp(Name);}; + inline PkgIterator FindPkg(std::string const &Name) {return Cache->FindPkg(Name);}; + inline PkgIterator FindPkg(std::string const &Name, std::string const &Arch) {return Cache->FindPkg(Name, Arch);}; inline pkgCache &GetCache() {return *Cache;}; inline pkgVersioningSystem &VS() {return *Cache->VS;}; @@ -388,18 +404,17 @@ class pkgDepCache : protected pkgCache::Namespace /** \name State Manipulators */ // @{ - void MarkKeep(PkgIterator const &Pkg, bool Soft = false, + bool MarkKeep(PkgIterator const &Pkg, bool Soft = false, bool FromUser = true, unsigned long Depth = 0); - void MarkDelete(PkgIterator const &Pkg, bool MarkPurge = false, + bool MarkDelete(PkgIterator const &Pkg, bool MarkPurge = false, unsigned long Depth = 0, bool FromUser = true); - void MarkInstall(PkgIterator const &Pkg,bool AutoInst = true, + bool MarkInstall(PkgIterator const &Pkg,bool AutoInst = true, unsigned long Depth = 0, bool FromUser = true, bool ForceImportantDeps = false); void MarkProtected(PkgIterator const &Pkg) { PkgState[Pkg->ID].iFlags |= Protected; }; void SetReInstall(PkgIterator const &Pkg,bool To); - // FIXME: Remove the unused boolean parameter on abi break - void SetCandidateVersion(VerIterator TargetVer, bool const &Pseudo = true); + void SetCandidateVersion(VerIterator TargetVer); bool SetCandidateRelease(pkgCache::VerIterator TargetVer, std::string const &TargetRel); /** Set the candidate version for dependencies too if needed. @@ -484,13 +499,6 @@ class pkgDepCache : protected pkgCache::Namespace virtual ~pkgDepCache(); private: - // Helper for Update(OpProgress) to remove pseudoinstalled arch all packages - // FIXME: they are private so shouldn't affect abi, but just in case… - __deprecated bool RemovePseudoInstalledPkg(PkgIterator &Pkg, std::set<unsigned long> &recheck) { return true; }; - __deprecated bool ReInstallPseudoForGroup(unsigned long const &Grp, std::set<unsigned long> &recheck) { return true; }; - __deprecated bool ReInstallPseudoForGroup(pkgCache::PkgIterator const &P, std::set<unsigned long> &recheck) { return true; }; - - bool IsModeChangeOk(ModeList const mode, PkgIterator const &Pkg, unsigned long const Depth, bool const FromUser); }; diff --git a/apt-pkg/edsp.cc b/apt-pkg/edsp.cc new file mode 100644 index 000000000..791aac72f --- /dev/null +++ b/apt-pkg/edsp.cc @@ -0,0 +1,573 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + Set of methods to help writing and reading everything needed for EDSP + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include <config.h> + +#include <apt-pkg/edsp.h> +#include <apt-pkg/error.h> +#include <apt-pkg/cacheset.h> +#include <apt-pkg/configuration.h> +#include <apt-pkg/version.h> +#include <apt-pkg/policy.h> +#include <apt-pkg/tagfile.h> +#include <apt-pkg/fileutl.h> +#include <apt-pkg/progress.h> + +#include <limits> +#include <stdio.h> + +#include <string> + +#include <apti18n.h> + /*}}}*/ + +using std::string; + +// we could use pkgCache::DepType and ::Priority, but these would be localized strings… +const char * const EDSP::PrioMap[] = {0, "important", "required", "standard", + "optional", "extra"}; +const char * const EDSP::DepMap[] = {"", "Depends", "Pre-Depends", "Suggests", + "Recommends" , "Conflicts", "Replaces", + "Obsoletes", "Breaks", "Enhances"}; + +// EDSP::WriteScenario - to the given file descriptor /*{{{*/ +bool EDSP::WriteScenario(pkgDepCache &Cache, FILE* output, OpProgress *Progress) +{ + if (Progress != NULL) + Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver")); + unsigned long p = 0; + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver, ++p) + { + WriteScenarioVersion(Cache, output, Pkg, Ver); + WriteScenarioDependency(Cache, output, Pkg, Ver); + fprintf(output, "\n"); + if (Progress != NULL && p % 100 == 0) + Progress->Progress(p); + } + return true; +} + /*}}}*/ +// EDSP::WriteLimitedScenario - to the given file descriptor /*{{{*/ +bool EDSP::WriteLimitedScenario(pkgDepCache &Cache, FILE* output, + APT::PackageSet const &pkgset, + OpProgress *Progress) +{ + if (Progress != NULL) + Progress->SubProgress(Cache.Head().VersionCount, _("Send scenario to solver")); + unsigned long p = 0; + for (APT::PackageSet::const_iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg, ++p) + for (pkgCache::VerIterator Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) + { + WriteScenarioVersion(Cache, output, Pkg, Ver); + WriteScenarioLimitedDependency(Cache, output, Pkg, Ver, pkgset); + fprintf(output, "\n"); + if (Progress != NULL && p % 100 == 0) + Progress->Progress(p); + } + if (Progress != NULL) + Progress->Done(); + return true; +} + /*}}}*/ +// EDSP::WriteScenarioVersion /*{{{*/ +void EDSP::WriteScenarioVersion(pkgDepCache &Cache, FILE* output, pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver) +{ + fprintf(output, "Package: %s\n", Pkg.Name()); + fprintf(output, "Architecture: %s\n", Ver.Arch()); + fprintf(output, "Version: %s\n", Ver.VerStr()); + if (Pkg.CurrentVer() == Ver) + fprintf(output, "Installed: yes\n"); + if (Pkg->SelectedState == pkgCache::State::Hold || + (Cache[Pkg].Keep() == true && Cache[Pkg].Protect() == true)) + fprintf(output, "Hold: yes\n"); + fprintf(output, "APT-ID: %d\n", Ver->ID); + fprintf(output, "Priority: %s\n", PrioMap[Ver->Priority]); + if ((Pkg->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) + fprintf(output, "Essential: yes\n"); + fprintf(output, "Section: %s\n", Ver.Section()); + if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed) + fprintf(output, "Multi-Arch: allowed\n"); + else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) + fprintf(output, "Multi-Arch: foreign\n"); + else if ((Ver->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) + fprintf(output, "Multi-Arch: same\n"); + signed short Pin = std::numeric_limits<signed short>::min(); + for (pkgCache::VerFileIterator File = Ver.FileList(); File.end() == false; ++File) { + signed short const p = Cache.GetPolicy().GetPriority(File.File()); + if (Pin < p) + Pin = p; + } + fprintf(output, "APT-Pin: %d\n", Pin); + if (Cache.GetCandidateVer(Pkg) == Ver) + fprintf(output, "APT-Candidate: yes\n"); + if ((Cache[Pkg].Flags & pkgCache::Flag::Auto) == pkgCache::Flag::Auto) + fprintf(output, "APT-Automatic: yes\n"); +} + /*}}}*/ +// EDSP::WriteScenarioDependency /*{{{*/ +void EDSP::WriteScenarioDependency(pkgDepCache &Cache, FILE* output, pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver) +{ + std::string dependencies[pkgCache::Dep::Enhances + 1]; + bool orGroup = false; + for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) + { + // Ignore implicit dependencies for multiarch here + if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) + continue; + if (orGroup == false) + dependencies[Dep->Type].append(", "); + dependencies[Dep->Type].append(Dep.TargetPkg().Name()); + if (Dep->Version != 0) + dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + { + dependencies[Dep->Type].append(" | "); + orGroup = true; + } + else + orGroup = false; + } + for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) + if (dependencies[i].empty() == false) + fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); + string provides; + for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) + { + // Ignore implicit provides for multiarch here + if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) + continue; + provides.append(", ").append(Prv.Name()); + } + if (provides.empty() == false) + fprintf(output, "Provides: %s\n", provides.c_str()+2); +} + /*}}}*/ +// EDSP::WriteScenarioLimitedDependency /*{{{*/ +void EDSP::WriteScenarioLimitedDependency(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver, + APT::PackageSet const &pkgset) +{ + std::string dependencies[pkgCache::Dep::Enhances + 1]; + bool orGroup = false; + for (pkgCache::DepIterator Dep = Ver.DependsList(); Dep.end() == false; ++Dep) + { + // Ignore implicit dependencies for multiarch here + if (strcmp(Pkg.Arch(), Dep.TargetPkg().Arch()) != 0) + continue; + if (orGroup == false) + { + if (pkgset.find(Dep.TargetPkg()) == pkgset.end()) + continue; + dependencies[Dep->Type].append(", "); + } + else if (pkgset.find(Dep.TargetPkg()) == pkgset.end()) + { + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + continue; + dependencies[Dep->Type].erase(dependencies[Dep->Type].end()-3, dependencies[Dep->Type].end()); + orGroup = false; + continue; + } + dependencies[Dep->Type].append(Dep.TargetPkg().Name()); + if (Dep->Version != 0) + dependencies[Dep->Type].append(" (").append(pkgCache::CompTypeDeb(Dep->CompareOp)).append(" ").append(Dep.TargetVer()).append(")"); + if ((Dep->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or) + { + dependencies[Dep->Type].append(" | "); + orGroup = true; + } + else + orGroup = false; + } + for (int i = 1; i < pkgCache::Dep::Enhances + 1; ++i) + if (dependencies[i].empty() == false) + fprintf(output, "%s: %s\n", DepMap[i], dependencies[i].c_str()+2); + string provides; + for (pkgCache::PrvIterator Prv = Ver.ProvidesList(); Prv.end() == false; ++Prv) + { + // Ignore implicit provides for multiarch here + if (strcmp(Pkg.Arch(), Prv.ParentPkg().Arch()) != 0 || strcmp(Pkg.Name(),Prv.Name()) == 0) + continue; + if (pkgset.find(Prv.ParentPkg()) == pkgset.end()) + continue; + provides.append(", ").append(Prv.Name()); + } + if (provides.empty() == false) + fprintf(output, "Provides: %s\n", provides.c_str()+2); +} + /*}}}*/ +// EDSP::WriteRequest - to the given file descriptor /*{{{*/ +bool EDSP::WriteRequest(pkgDepCache &Cache, FILE* output, bool const Upgrade, + bool const DistUpgrade, bool const AutoRemove, + OpProgress *Progress) +{ + if (Progress != NULL) + Progress->SubProgress(Cache.Head().PackageCount, _("Send request to solver")); + unsigned long p = 0; + string del, inst; + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg, ++p) + { + if (Progress != NULL && p % 100 == 0) + Progress->Progress(p); + string* req; + if (Cache[Pkg].Delete() == true) + req = &del; + else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) + req = &inst; + else + continue; + req->append(" ").append(Pkg.FullName()); + } + fprintf(output, "Request: EDSP 0.4\n"); + if (del.empty() == false) + fprintf(output, "Remove: %s\n", del.c_str()+1); + if (inst.empty() == false) + fprintf(output, "Install: %s\n", inst.c_str()+1); + if (Upgrade == true) + fprintf(output, "Upgrade: yes\n"); + if (DistUpgrade == true) + fprintf(output, "Dist-Upgrade: yes\n"); + if (AutoRemove == true) + fprintf(output, "Autoremove: yes\n"); + if (_config->FindB("APT::Solver::Strict-Pinning", true) == false) + fprintf(output, "Strict-Pinning: no\n"); + string solverpref("APT::Solver::"); + solverpref.append(_config->Find("APT::Solver", "internal")).append("::Preferences"); + if (_config->Exists(solverpref) == true) + fprintf(output, "Preferences: %s\n", _config->Find(solverpref,"").c_str()); + fprintf(output, "\n"); + + return true; +} + /*}}}*/ +// EDSP::ReadResponse - from the given file descriptor /*{{{*/ +bool EDSP::ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progress) { + /* We build an map id to mmap offset here + In theory we could use the offset as ID, but then VersionCount + couldn't be used to create other versionmappings anymore and it + would be too easy for a (buggy) solver to segfault APT… */ + unsigned long long const VersionCount = Cache.Head().VersionCount; + unsigned long VerIdx[VersionCount]; + for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; ++P) { + for (pkgCache::VerIterator V = P.VersionList(); V.end() == false; ++V) + VerIdx[V->ID] = V.Index(); + Cache[P].Marked = true; + Cache[P].Garbage = false; + } + + FileFd in; + in.OpenDescriptor(input, FileFd::ReadOnly); + pkgTagFile response(&in, 100); + pkgTagSection section; + + while (response.Step(section) == true) { + std::string type; + if (section.Exists("Install") == true) + type = "Install"; + else if (section.Exists("Remove") == true) + type = "Remove"; + else if (section.Exists("Progress") == true) { + if (Progress != NULL) { + string msg = section.FindS("Message"); + if (msg.empty() == true) + msg = _("Prepare for receiving solution"); + Progress->SubProgress(100, msg, section.FindI("Percentage", 0)); + } + continue; + } else if (section.Exists("Error") == true) { + std::string msg = SubstVar(SubstVar(section.FindS("Message"), "\n .\n", "\n\n"), "\n ", "\n"); + if (msg.empty() == true) { + msg = _("External solver failed without a proper error message"); + _error->Error("%s", msg.c_str()); + } else + _error->Error("External solver failed with: %s", msg.substr(0,msg.find('\n')).c_str()); + if (Progress != NULL) + Progress->Done(); + std::cerr << "The solver encountered an error of type: " << section.FindS("Error") << std::endl; + std::cerr << "The following information might help you to understand what is wrong:" << std::endl; + std::cerr << msg << std::endl << std::endl; + return false; + } else if (section.Exists("Autoremove") == true) + type = "Autoremove"; + else + continue; + + size_t const id = section.FindULL(type.c_str(), VersionCount); + if (id == VersionCount) { + _error->Warning("Unable to parse %s request with id value '%s'!", type.c_str(), section.FindS(type.c_str()).c_str()); + continue; + } else if (id > Cache.Head().VersionCount) { + _error->Warning("ID value '%s' in %s request stanza is to high to refer to a known version!", section.FindS(type.c_str()).c_str(), type.c_str()); + continue; + } + + pkgCache::VerIterator Ver(Cache.GetCache(), Cache.GetCache().VerP + VerIdx[id]); + Cache.SetCandidateVersion(Ver); + if (type == "Install") + Cache.MarkInstall(Ver.ParentPkg(), false, 0, false); + else if (type == "Remove") + Cache.MarkDelete(Ver.ParentPkg(), false); + else if (type == "Autoremove") { + Cache[Ver.ParentPkg()].Marked = false; + Cache[Ver.ParentPkg()].Garbage = true; + } + } + return true; +} + /*}}}*/ +// EDSP::ReadLine - first line from the given file descriptor /*{{{*/ +// --------------------------------------------------------------------- +/* Little helper method to read a complete line into a string. Similar to + fgets but we need to use the low-level read() here as otherwise the + listparser will be confused later on as mixing of fgets and read isn't + a supported action according to the manpages and results are undefined */ +bool EDSP::ReadLine(int const input, std::string &line) { + char one; + ssize_t data = 0; + line.erase(); + line.reserve(100); + while ((data = read(input, &one, sizeof(one))) != -1) { + if (data != 1) + continue; + if (one == '\n') + return true; + if (one == '\r') + continue; + if (line.empty() == true && isblank(one) != 0) + continue; + line += one; + } + return false; +} + /*}}}*/ +// EDSP::StringToBool - convert yes/no to bool /*{{{*/ +// --------------------------------------------------------------------- +/* we are not as lazy as we are in the global StringToBool as we really + only accept yes/no here - but we will ignore leading spaces */ +bool EDSP::StringToBool(char const *answer, bool const defValue) { + for (; isspace(*answer) != 0; ++answer); + if (strncasecmp(answer, "yes", 3) == 0) + return true; + else if (strncasecmp(answer, "no", 2) == 0) + return false; + else + _error->Warning("Value '%s' is not a boolean 'yes' or 'no'!", answer); + return defValue; +} + /*}}}*/ +// EDSP::ReadRequest - first stanza from the given file descriptor /*{{{*/ +bool EDSP::ReadRequest(int const input, std::list<std::string> &install, + std::list<std::string> &remove, bool &upgrade, + bool &distUpgrade, bool &autoRemove) +{ + install.clear(); + remove.clear(); + upgrade = false; + distUpgrade = false; + autoRemove = false; + std::string line; + while (ReadLine(input, line) == true) + { + // Skip empty lines before request + if (line.empty() == true) + continue; + // The first Tag must be a request, so search for it + if (line.compare(0, 8, "Request:") != 0) + continue; + + while (ReadLine(input, line) == true) + { + // empty lines are the end of the request + if (line.empty() == true) + return true; + + std::list<std::string> *request = NULL; + if (line.compare(0, 8, "Install:") == 0) + { + line.erase(0, 8); + request = &install; + } + else if (line.compare(0, 7, "Remove:") == 0) + { + line.erase(0, 7); + request = &remove; + } + else if (line.compare(0, 8, "Upgrade:") == 0) + upgrade = EDSP::StringToBool(line.c_str() + 9, false); + else if (line.compare(0, 13, "Dist-Upgrade:") == 0) + distUpgrade = EDSP::StringToBool(line.c_str() + 14, false); + else if (line.compare(0, 11, "Autoremove:") == 0) + autoRemove = EDSP::StringToBool(line.c_str() + 12, false); + else + _error->Warning("Unknown line in EDSP Request stanza: %s", line.c_str()); + + if (request == NULL) + continue; + size_t end = line.length(); + do { + size_t begin = line.rfind(' '); + if (begin == std::string::npos) + { + request->push_back(line.substr(0, end)); + break; + } + else if (begin < end) + request->push_back(line.substr(begin + 1, end)); + line.erase(begin); + end = line.find_last_not_of(' '); + } while (end != std::string::npos); + } + } + return false; +} + /*}}}*/ +// EDSP::ApplyRequest - first stanza from the given file descriptor /*{{{*/ +bool EDSP::ApplyRequest(std::list<std::string> const &install, + std::list<std::string> const &remove, + pkgDepCache &Cache) +{ + for (std::list<std::string>::const_iterator i = install.begin(); + i != install.end(); ++i) { + pkgCache::PkgIterator P = Cache.FindPkg(*i); + if (P.end() == true) + _error->Warning("Package %s is not known, so can't be installed", i->c_str()); + else + Cache.MarkInstall(P, false); + } + + for (std::list<std::string>::const_iterator i = remove.begin(); + i != remove.end(); ++i) { + pkgCache::PkgIterator P = Cache.FindPkg(*i); + if (P.end() == true) + _error->Warning("Package %s is not known, so can't be installed", i->c_str()); + else + Cache.MarkDelete(P); + } + return true; +} + /*}}}*/ +// EDSP::WriteSolution - to the given file descriptor /*{{{*/ +bool EDSP::WriteSolution(pkgDepCache &Cache, FILE* output) +{ + bool const Debug = _config->FindB("Debug::EDSP::WriteSolution", false); + for (pkgCache::PkgIterator Pkg = Cache.PkgBegin(); Pkg.end() == false; ++Pkg) + { + if (Cache[Pkg].Delete() == true) + { + fprintf(output, "Remove: %d\n", Pkg.CurrentVer()->ID); + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr()); + } + else if (Cache[Pkg].NewInstall() == true || Cache[Pkg].Upgrade() == true) + { + fprintf(output, "Install: %d\n", Cache.GetCandidateVer(Pkg)->ID); + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Cache.GetCandidateVer(Pkg).VerStr()); + } + else if (Cache[Pkg].Garbage == true) + { + fprintf(output, "Autoremove: %d\n", Pkg.CurrentVer()->ID); + if (Debug == true) + fprintf(output, "Package: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr()); + fprintf(stderr, "Autoremove: %s\nVersion: %s\n", Pkg.FullName().c_str(), Pkg.CurrentVer().VerStr()); + } + else + continue; + fprintf(output, "\n"); + } + + return true; +} + /*}}}*/ +// EDSP::WriteProgess - pulse to the given file descriptor /*{{{*/ +bool EDSP::WriteProgress(unsigned short const percent, const char* const message, FILE* output) { + fprintf(output, "Progress: %s\n", TimeRFC1123(time(NULL)).c_str()); + fprintf(output, "Percentage: %d\n", percent); + fprintf(output, "Message: %s\n\n", message); + fflush(output); + return true; +} + /*}}}*/ +// EDSP::WriteError - format an error message to be send to file descriptor /*{{{*/ +bool EDSP::WriteError(char const * const uuid, std::string const &message, FILE* output) { + fprintf(output, "Error: %s\n", uuid); + fprintf(output, "Message: %s\n\n", SubstVar(SubstVar(message, "\n\n", "\n.\n"), "\n", "\n ").c_str()); + return true; +} + /*}}}*/ +// EDSP::ExecuteSolver - fork requested solver and setup ipc pipes {{{*/ +bool EDSP::ExecuteSolver(const char* const solver, int *solver_in, int *solver_out) { + std::vector<std::string> const solverDirs = _config->FindVector("Dir::Bin::Solvers"); + std::string file; + for (std::vector<std::string>::const_iterator dir = solverDirs.begin(); + dir != solverDirs.end(); ++dir) { + file = flCombine(*dir, solver); + if (RealFileExists(file.c_str()) == true) + break; + file.clear(); + } + + if (file.empty() == true) + return _error->Error("Can't call external solver '%s' as it is not in a configured directory!", solver); + int external[4] = {-1, -1, -1, -1}; + if (pipe(external) != 0 || pipe(external + 2) != 0) + return _error->Errno("Resolve", "Can't create needed IPC pipes for EDSP"); + for (int i = 0; i < 4; ++i) + SetCloseExec(external[i], true); + + pid_t Solver = ExecFork(); + if (Solver == 0) { + dup2(external[0], STDIN_FILENO); + dup2(external[3], STDOUT_FILENO); + const char* calling[2] = { file.c_str(), 0 }; + execv(calling[0], (char**) calling); + std::cerr << "Failed to execute solver '" << solver << "'!" << std::endl; + _exit(100); + } + close(external[0]); + close(external[3]); + + if (WaitFd(external[1], true, 5) == false) + return _error->Errno("Resolve", "Timed out while Waiting on availability of solver stdin"); + + *solver_in = external[1]; + *solver_out = external[2]; + return true; +} + /*}}}*/ +// EDSP::ResolveExternal - resolve problems by asking external for help {{{*/ +bool EDSP::ResolveExternal(const char* const solver, pkgDepCache &Cache, + bool const upgrade, bool const distUpgrade, + bool const autoRemove, OpProgress *Progress) { + int solver_in, solver_out; + if (EDSP::ExecuteSolver(solver, &solver_in, &solver_out) == false) + return false; + + FILE* output = fdopen(solver_in, "w"); + if (output == NULL) + return _error->Errno("Resolve", "fdopen on solver stdin failed"); + + if (Progress != NULL) + Progress->OverallProgress(0, 100, 5, _("Execute external solver")); + EDSP::WriteRequest(Cache, output, upgrade, distUpgrade, autoRemove, Progress); + if (Progress != NULL) + Progress->OverallProgress(5, 100, 20, _("Execute external solver")); + EDSP::WriteScenario(Cache, output, Progress); + fclose(output); + + if (Progress != NULL) + Progress->OverallProgress(25, 100, 75, _("Execute external solver")); + if (EDSP::ReadResponse(solver_out, Cache, Progress) == false) + return false; + + return true; +} + /*}}}*/ diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h new file mode 100644 index 000000000..12b06d143 --- /dev/null +++ b/apt-pkg/edsp.h @@ -0,0 +1,230 @@ +// -*- mode: cpp; mode: fold -*- +/** Description \file edsp.h {{{ + ###################################################################### + Set of methods to help writing and reading everything needed for EDSP + with the noteable exception of reading a scenario for conversion into + a Cache as this is handled by edsp interface for listparser and friends + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSP_H +#define PKGLIB_EDSP_H + +#include <apt-pkg/pkgcache.h> +#include <apt-pkg/cacheset.h> + +#include <list> +#include <string> + +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/depcache.h> +#include <apt-pkg/progress.h> +#endif + +class pkgDepCache; +class OpProgress; + +class EDSP /*{{{*/ +{ + // we could use pkgCache::DepType and ::Priority, but these would be localized strings… + static const char * const PrioMap[]; + static const char * const DepMap[]; + + bool static ReadLine(int const input, std::string &line); + bool static StringToBool(char const *answer, bool const defValue); + + void static WriteScenarioVersion(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver); + void static WriteScenarioDependency(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver); + void static WriteScenarioLimitedDependency(pkgDepCache &Cache, FILE* output, + pkgCache::PkgIterator const &Pkg, + pkgCache::VerIterator const &Ver, + APT::PackageSet const &pkgset); +public: + /** \brief creates the EDSP request stanza + * + * In the EDSP protocol the first thing send to the resolver is a stanza + * encoding the request. This method will write this stanza by looking at + * the given Cache and requests the installation of all packages which were + * marked for installation in it (equally for remove). + * + * \param Cache in which the request is encoded + * \param output is written to this "file" + * \param upgrade is true if it is an request like apt-get upgrade + * \param distUpgrade is true if it is a request like apt-get dist-upgrade + * \param autoRemove is true if removal of unneeded packages should be performed + * \param Progress is an instance to report progress to + * + * \return true if request was composed successfully, otherwise false + */ + bool static WriteRequest(pkgDepCache &Cache, FILE* output, + bool const upgrade = false, + bool const distUpgrade = false, + bool const autoRemove = false, + OpProgress *Progress = NULL); + + /** \brief creates the scenario representing the package universe + * + * After the request all known information about a package are send + * to the solver. The output looks similar to a Packages or status file + * + * All packages and version included in this Cache are send, even if + * it doesn't make sense from an APT resolver point of view like versions + * with a negative pin to enable the solver to propose even that as a + * solution or at least to be able to give a hint what can be done to + * statisfy a request. + * + * \param Cache is the known package universe + * \param output is written to this "file" + * \param Progress is an instance to report progress to + * + * \return true if universe was composed successfully, otherwise false + */ + bool static WriteScenario(pkgDepCache &Cache, FILE* output, OpProgress *Progress = NULL); + + /** \brief creates a limited scenario representing the package universe + * + * This method works similar to #WriteScenario as it works in the same + * way but doesn't send the complete universe to the solver but only + * packages included in the pkgset which will have only dependencies + * on packages which are in the given set. All other dependencies will + * be removed, so that this method can be used to create testcases + * + * \param Cache is the known package universe + * \param output is written to this "file" + * \param pkgset is a set of packages the universe should be limited to + * \param Progress is an instance to report progress to + * + * \return true if universe was composed successfully, otherwise false + */ + bool static WriteLimitedScenario(pkgDepCache &Cache, FILE* output, + APT::PackageSet const &pkgset, + OpProgress *Progress = NULL); + + /** \brief waits and acts on the information returned from the solver + * + * This method takes care of interpreting whatever the solver sends + * through the standard output like a solution, progress or an error. + * The main thread should handle his control over to this method to + * wait for the solver to finish the given task + * + * \param input file descriptor with the response from the solver + * \param Cache the solution should be applied on if any + * \param Progress is an instance to report progress to + * + * \return true if a solution is found and applied correctly, otherwise false + */ + bool static ReadResponse(int const input, pkgDepCache &Cache, OpProgress *Progress = NULL); + + /** \brief search and read the request stanza for action later + * + * This method while ignore the input up to the point it finds the + * Request: line as an indicator for the Request stanza. + * The request is stored in the parameters install and remove then, + * as the cache isn't build yet as the scenario follows the request. + * + * \param input file descriptor with the edsp input for the solver + * \param[out] install is a list which gets populated with requested installs + * \param[out] remove is a list which gets populated with requested removals + * \param[out] upgrade is true if it is a request like apt-get upgrade + * \param[out] distUpgrade is true if it is a request like apt-get dist-upgrade + * \param[out] autoRemove is true if removal of uneeded packages should be performed + * + * \return true if the request could be found and worked on, otherwise false + */ + bool static ReadRequest(int const input, std::list<std::string> &install, + std::list<std::string> &remove, bool &upgrade, + bool &distUpgrade, bool &autoRemove); + + /** \brief takes the request lists and applies it on the cache + * + * The lists as created by #ReadRequest will be used to find the + * packages in question and mark them for install/remove. + * No solving is done and no auto-install/-remove. + * + * \param install is a list of packages to mark for installation + * \param remove is a list of packages to mark for removal + * \param Cache is there the markers should be set + * + * \return false if the request couldn't be applied, true otherwise + */ + bool static ApplyRequest(std::list<std::string> const &install, + std::list<std::string> const &remove, + pkgDepCache &Cache); + + /** \brief encodes the changes in the Cache as a EDSP solution + * + * The markers in the Cache are observed and send to given + * file. The solution isn't checked for consistency or alike, + * so even broken solutions can be written successfully, + * but the front-end revicing it will properly fail then. + * + * \param Cache which represents the solution + * \param output to write the stanzas forming the solution to + * + * \return true if solution could be written, otherwise false + */ + bool static WriteSolution(pkgDepCache &Cache, FILE* output); + + /** \brief sends a progress report + * + * \param percent of the solving completed + * \param message the solver wants the user to see + * \param output the front-end listens for progress report + */ + bool static WriteProgress(unsigned short const percent, const char* const message, FILE* output); + + /** \brief sends an error report + * + * Solvers are expected to execute successfully even if + * they were unable to calculate a solution for a given task. + * Obviously they can't send a solution through, so this + * methods deals with formatting an error message correctly + * so that the front-ends can recieve and display it. + * + * The first line of the message should be a short description + * of the error so it can be used for dialog titles or alike + * + * \param uuid of this error message + * \param message is free form text to discribe the error + * \param output the front-end listens for error messages + */ + bool static WriteError(char const * const uuid, std::string const &message, FILE* output); + + + /** \brief executes the given solver and returns the pipe ends + * + * The given solver is executed if it can be found in one of the + * configured directories and setup for it is performed. + * + * \param solver to execute + * \param[out] solver_in will be the stdin of the solver + * \param[out] solver_out will be the stdout of the solver + * + * \return true if the solver could be started and the pipes + * are set up correctly, otherwise false and the pipes are invalid + */ + bool static ExecuteSolver(const char* const solver, int *solver_in, int *solver_out); + + /** \brief call an external resolver to handle the request + * + * This method wraps all the methods above to call an external solver + * + * \param solver to execute + * \param Cache with the problem and as universe to work in + * \param upgrade is true if it is a request like apt-get upgrade + * \param distUpgrade is true if it is a request like apt-get dist-upgrade + * \param autoRemove is true if unneeded packages should be removed + * \param Progress is an instance to report progress to + * + * \return true if the solver has successfully solved the problem, + * otherwise false + */ + bool static ResolveExternal(const char* const solver, pkgDepCache &Cache, + bool const upgrade, bool const distUpgrade, + bool const autoRemove, OpProgress *Progress = NULL); +}; + /*}}}*/ +#endif diff --git a/apt-pkg/edsp/edspindexfile.cc b/apt-pkg/edsp/edspindexfile.cc new file mode 100644 index 000000000..482581979 --- /dev/null +++ b/apt-pkg/edsp/edspindexfile.cc @@ -0,0 +1,78 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + The scenario file is designed to work as an intermediate file between + APT and the resolver. Its on propose very similar to a dpkg status file + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include <config.h> + +#include <apt-pkg/edspindexfile.h> +#include <apt-pkg/edsplistparser.h> +#include <apt-pkg/sourcelist.h> +#include <apt-pkg/configuration.h> +#include <apt-pkg/progress.h> +#include <apt-pkg/error.h> +#include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> +#include <apt-pkg/acquire-item.h> + +#include <sys/stat.h> + /*}}}*/ + +// edspIndex::edspIndex - Constructor /*{{{*/ +// --------------------------------------------------------------------- +/* */ +edspIndex::edspIndex(std::string File) : debStatusIndex(File) +{ +} + /*}}}*/ +// StatusIndex::Merge - Load the index file into a cache /*{{{*/ +bool edspIndex::Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const +{ + FileFd Pkg; + if (File != "stdin") + Pkg.Open(File, FileFd::ReadOnly); + else + Pkg.OpenDescriptor(STDIN_FILENO, FileFd::ReadOnly); + if (_error->PendingError() == true) + return false; + edspListParser Parser(&Pkg); + if (_error->PendingError() == true) + return false; + + if (Prog != NULL) + Prog->SubProgress(0,File); + 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(); + CFile->Size = Pkg.FileSize(); + CFile->mtime = Pkg.ModificationTime(); + CFile->Archive = Gen.WriteUniqString("edsp::scenario"); + + if (Gen.MergeList(Parser) == false) + return _error->Error("Problem with MergeList %s",File.c_str()); + return true; +} + /*}}}*/ +// Index File types for APT /*{{{*/ +class edspIFType: public pkgIndexFile::Type +{ + public: + virtual pkgRecords::Parser *CreatePkgParser(pkgCache::PkgFileIterator File) const + { + // we don't have a record parser for this type as the file is not presistent + return NULL; + }; + edspIFType() {Label = "EDSP scenario file";}; +}; +static edspIFType _apt_Universe; + +const pkgIndexFile::Type *edspIndex::GetType() const +{ + return &_apt_Universe; +} + /*}}}*/ diff --git a/apt-pkg/edsp/edspindexfile.h b/apt-pkg/edsp/edspindexfile.h new file mode 100644 index 000000000..de10f2d2f --- /dev/null +++ b/apt-pkg/edsp/edspindexfile.h @@ -0,0 +1,31 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + The scenario file is designed to work as an intermediate file between + APT and the resolver. Its on propose very similar to a dpkg status file + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSPINDEXFILE_H +#define PKGLIB_EDSPINDEXFILE_H + +#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) */ + void *d; + + public: + + virtual const Type *GetType() const; + + virtual bool Merge(pkgCacheGenerator &Gen,OpProgress *Prog) const; + + edspIndex(std::string File); +}; + +#endif diff --git a/apt-pkg/edsp/edsplistparser.cc b/apt-pkg/edsp/edsplistparser.cc new file mode 100644 index 000000000..bcfdb1017 --- /dev/null +++ b/apt-pkg/edsp/edsplistparser.cc @@ -0,0 +1,92 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + + Package Cache Generator - Generator for the cache structure. + + This builds the cache structure from the abstract package list parser. + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include <config.h> + +#include <apt-pkg/edsplistparser.h> +#include <apt-pkg/error.h> +#include <apt-pkg/configuration.h> +#include <apt-pkg/strutl.h> +#include <apt-pkg/md5.h> +#include <apt-pkg/macros.h> + /*}}}*/ + +// ListParser::edspListParser - Constructor /*{{{*/ +edspListParser::edspListParser(FileFd *File, std::string const &Arch) : debListParser(File, Arch) +{} + /*}}}*/ +// ListParser::NewVersion - Fill in the version structure /*{{{*/ +bool edspListParser::NewVersion(pkgCache::VerIterator &Ver) +{ + Ver->ID = Section.FindI("APT-ID", Ver->ID); + return debListParser::NewVersion(Ver); +} + /*}}}*/ +// ListParser::Description - Return the description string /*{{{*/ +// --------------------------------------------------------------------- +/* Sorry, no description for the resolvers… */ +std::string edspListParser::Description() +{ + return ""; +} +std::string edspListParser::DescriptionLanguage() +{ + return ""; +} +MD5SumValue edspListParser::Description_md5() +{ + return MD5SumValue(""); +} + /*}}}*/ +// ListParser::VersionHash - Compute a unique hash for this version /*{{{*/ +// --------------------------------------------------------------------- +/* */ +unsigned short edspListParser::VersionHash() +{ + if (Section.Exists("APT-Hash") == true) + return Section.FindI("APT-Hash"); + else if (Section.Exists("APT-ID") == true) + return Section.FindI("APT-ID"); + return 0; +} + /*}}}*/ +// ListParser::ParseStatus - Parse the status field /*{{{*/ +// --------------------------------------------------------------------- +/* The Status: line here is not a normal dpkg one but just one which tells + use if the package is installed or not, where missing means not. */ +bool edspListParser::ParseStatus(pkgCache::PkgIterator &Pkg, + pkgCache::VerIterator &Ver) +{ + unsigned long state = 0; + if (Section.FindFlag("Hold",state,pkgCache::State::Hold) == false) + return false; + if (state != 0) + Pkg->SelectedState = pkgCache::State::Hold; + + state = 0; + if (Section.FindFlag("Installed",state,pkgCache::State::Installed) == false) + return false; + if (state != 0) + { + Pkg->CurrentState = pkgCache::State::Installed; + Pkg->CurrentVer = Ver.Index(); + } + + return true; +} + /*}}}*/ +// ListParser::LoadReleaseInfo - Load the release information /*{{{*/ +bool edspListParser::LoadReleaseInfo(pkgCache::PkgFileIterator &FileI, + FileFd &File, std::string component) +{ + return true; +} + /*}}}*/ diff --git a/apt-pkg/edsp/edsplistparser.h b/apt-pkg/edsp/edsplistparser.h new file mode 100644 index 000000000..a7bf9de95 --- /dev/null +++ b/apt-pkg/edsp/edsplistparser.h @@ -0,0 +1,43 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + + EDSP Package List Parser - This implements the abstract parser + interface for the APT specific intermediate format which is passed + to external resolvers + + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSPLISTPARSER_H +#define PKGLIB_EDSPLISTPARSER_H + +#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 +{ + public: + virtual bool NewVersion(pkgCache::VerIterator &Ver); + virtual std::string Description(); + virtual std::string DescriptionLanguage(); + virtual MD5SumValue Description_md5(); + virtual unsigned short VersionHash(); + + bool LoadReleaseInfo(pkgCache::PkgFileIterator &FileI,FileFd &File, + std::string section); + + edspListParser(FileFd *File, std::string const &Arch = ""); + + protected: + virtual bool ParseStatus(pkgCache::PkgIterator &Pkg,pkgCache::VerIterator &Ver); + +}; + +#endif diff --git a/apt-pkg/edsp/edspsystem.cc b/apt-pkg/edsp/edspsystem.cc new file mode 100644 index 000000000..6b9207451 --- /dev/null +++ b/apt-pkg/edsp/edspsystem.cc @@ -0,0 +1,127 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ###################################################################### + + This system provides the abstraction to use the scenario file as the + only source of package information to be able to feed the created file + back to APT for its own consumption (eat your own dogfood). + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include <config.h> + +#include <apt-pkg/edspsystem.h> +#include <apt-pkg/debversion.h> +#include <apt-pkg/edspindexfile.h> +#include <apt-pkg/configuration.h> +#include <apt-pkg/error.h> +#include <apt-pkg/fileutl.h> +#include <sys/types.h> +#include <unistd.h> +#include <dirent.h> +#include <errno.h> + +#include <apti18n.h> + /*}}}*/ + +edspSystem edspSys; + +// System::debSystem - Constructor /*{{{*/ +edspSystem::edspSystem() +{ + StatusFile = 0; + + Label = "Debian APT solver interface"; + VS = &debVS; +} + /*}}}*/ +// System::~debSystem - Destructor /*{{{*/ +edspSystem::~edspSystem() +{ + delete StatusFile; +} + /*}}}*/ +// System::Lock - Get the lock /*{{{*/ +bool edspSystem::Lock() +{ + return true; +} + /*}}}*/ +// System::UnLock - Drop a lock /*{{{*/ +bool edspSystem::UnLock(bool NoErrors) +{ + return true; +} + /*}}}*/ +// System::CreatePM - Create the underlying package manager /*{{{*/ +// --------------------------------------------------------------------- +/* we can't use edsp input as input for real installations - just a + simulation can work, but everything else will fail bigtime */ +pkgPackageManager *edspSystem::CreatePM(pkgDepCache *Cache) const +{ + return NULL; +} + /*}}}*/ +// System::Initialize - Setup the configuration space.. /*{{{*/ +bool edspSystem::Initialize(Configuration &Cnf) +{ + Cnf.Set("Dir::State::extended_states", "/dev/null"); + Cnf.Set("Dir::State::status","/dev/null"); + Cnf.Set("Dir::State::lists","/dev/null"); + + Cnf.Set("Debug::NoLocking", "true"); + Cnf.Set("APT::Get::Simulate", "true"); + + if (StatusFile) { + delete StatusFile; + StatusFile = 0; + } + return true; +} + /*}}}*/ +// System::ArchiveSupported - Is a file format supported /*{{{*/ +bool edspSystem::ArchiveSupported(const char *Type) +{ + return false; +} + /*}}}*/ +// System::Score - Determine if we should use the edsp system /*{{{*/ +signed edspSystem::Score(Configuration const &Cnf) +{ + if (Cnf.Find("edsp::scenario", "") == "stdin") + return 1000; + if (FileExists(Cnf.FindFile("edsp::scenario","")) == true) + return 1000; + return -1000; +} + /*}}}*/ +// System::AddStatusFiles - Register the status files /*{{{*/ +bool edspSystem::AddStatusFiles(std::vector<pkgIndexFile *> &List) +{ + if (StatusFile == 0) + { + if (_config->Find("edsp::scenario", "") == "stdin") + StatusFile = new edspIndex("stdin"); + else + StatusFile = new edspIndex(_config->FindFile("edsp::scenario")); + } + List.push_back(StatusFile); + return true; +} + /*}}}*/ +// System::FindIndex - Get an index file for status files /*{{{*/ +bool edspSystem::FindIndex(pkgCache::PkgFileIterator File, + pkgIndexFile *&Found) const +{ + if (StatusFile == 0) + return false; + if (StatusFile->FindInCache(*File.Cache()) == File) + { + Found = StatusFile; + return true; + } + + return false; +} + /*}}}*/ diff --git a/apt-pkg/edsp/edspsystem.h b/apt-pkg/edsp/edspsystem.h new file mode 100644 index 000000000..ca703fa84 --- /dev/null +++ b/apt-pkg/edsp/edspsystem.h @@ -0,0 +1,41 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +// $Id: debsystem.h,v 1.4 2003/01/11 07:16:33 jgg Exp $ +/* ###################################################################### + + System - Debian version of the System Class + + ##################################################################### */ + /*}}}*/ +#ifndef PKGLIB_EDSPSYSTEM_H +#define PKGLIB_EDSPSYSTEM_H + +#include <apt-pkg/pkgsystem.h> + +class edspIndex; +class edspSystem : public pkgSystem +{ + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + + edspIndex *StatusFile; + + public: + + virtual bool Lock(); + virtual bool UnLock(bool NoErrors = false); + virtual pkgPackageManager *CreatePM(pkgDepCache *Cache) const; + virtual bool Initialize(Configuration &Cnf); + virtual bool ArchiveSupported(const char *Type); + virtual signed Score(Configuration const &Cnf); + virtual bool AddStatusFiles(std::vector<pkgIndexFile *> &List); + virtual bool FindIndex(pkgCache::PkgFileIterator File, + pkgIndexFile *&Found) const; + + edspSystem(); + ~edspSystem(); +}; + +extern edspSystem edspSys; + +#endif diff --git a/apt-pkg/indexcopy.cc b/apt-pkg/indexcopy.cc index 747e464be..e29e2819c 100644 --- a/apt-pkg/indexcopy.cc +++ b/apt-pkg/indexcopy.cc @@ -10,18 +10,18 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "indexcopy.h" +#include<config.h> #include <apt-pkg/error.h> #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> #include <apt-pkg/md5.h> #include <apt-pkg/cdrom.h> -#include <apti18n.h> #include <iostream> #include <sstream> @@ -30,12 +30,14 @@ #include <sys/types.h> #include <fcntl.h> #include <stdio.h> +#include <stdlib.h> + +#include "indexcopy.h" +#include <apti18n.h> /*}}}*/ using namespace std; - - // IndexCopy::CopyPackages - Copy the package files from the CD /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -53,75 +55,39 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List, bool Debug = _config->FindB("Debug::aptcdrom",false); // Prepare the progress indicator - unsigned long TotalSize = 0; + 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; - } + } - unsigned long CurrentSize = 0; + off_t CurrentSize = 0; unsigned int NotFound = 0; unsigned int WrongSize = 0; unsigned int Packages = 0; for (vector<string>::iterator I = List.begin(); I != List.end(); ++I) { string OrigPath = string(*I,CDROM.length()); - unsigned long 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::Auto); + off_t const FileSize = Pkg.Size(); + pkgTagFile Parser(&Pkg); if (_error->PendingError() == true) return false; @@ -164,7 +130,7 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List, if(Progress) Progress->Progress(Parser.Offset()); string File; - unsigned long Size; + unsigned long long Size; if (GetFile(File,Size) == false) { fclose(TargetFl); @@ -219,7 +185,7 @@ bool IndexCopy::CopyPackages(string CDROM,string Name,vector<string> &List, } // Size match - if ((unsigned)Buf.st_size != Size) + if ((unsigned long long)Buf.st_size != Size) { if (Debug == true) clog << "Wrong Size: " << File << endl; @@ -453,7 +419,7 @@ bool IndexCopy::GrabFirst(string Path,string &To,unsigned int Depth) // PackageCopy::GetFile - Get the file information from the section /*{{{*/ // --------------------------------------------------------------------- /* */ -bool PackageCopy::GetFile(string &File,unsigned long &Size) +bool PackageCopy::GetFile(string &File,unsigned long long &Size) { File = Section->FindS("Filename"); Size = Section->FindI("Size"); @@ -479,7 +445,7 @@ bool PackageCopy::RewriteEntry(FILE *Target,string File) // SourceCopy::GetFile - Get the file information from the section /*{{{*/ // --------------------------------------------------------------------- /* */ -bool SourceCopy::GetFile(string &File,unsigned long &Size) +bool SourceCopy::GetFile(string &File,unsigned long long &Size) { string Files = Section->FindS("Files"); if (Files.empty() == true) @@ -502,7 +468,7 @@ bool SourceCopy::GetFile(string &File,unsigned long &Size) return _error->Error("Error parsing file record"); // Parse the size and append the directory - Size = atoi(sSize.c_str()); + Size = strtoull(sSize.c_str(), NULL, 10); File = Base + File; return true; } @@ -599,13 +565,19 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList, 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) { @@ -613,11 +585,16 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList, 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; @@ -647,8 +624,13 @@ bool SigVerify::CopyAndVerify(string CDROM,string Name,vector<string> &SigList, 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; @@ -785,75 +767,39 @@ bool TranslationsCopy::CopyTranslations(string CDROM,string Name, /*{{{*/ bool Debug = _config->FindB("Debug::aptcdrom",false); // Prepare the progress indicator - unsigned long TotalSize = 0; + 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; - } + } - unsigned long CurrentSize = 0; + off_t CurrentSize = 0; unsigned int NotFound = 0; unsigned int WrongSize = 0; unsigned int Packages = 0; for (vector<string>::iterator I = List.begin(); I != List.end(); ++I) { string OrigPath = string(*I,CDROM.length()); - unsigned long 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::Auto); + off_t const FileSize = Pkg.Size(); + pkgTagFile Parser(&Pkg); if (_error->PendingError() == true) return false; diff --git a/apt-pkg/indexcopy.h b/apt-pkg/indexcopy.h index 6fcd3b8ce..e3de1afd9 100644 --- a/apt-pkg/indexcopy.h +++ b/apt-pkg/indexcopy.h @@ -14,8 +14,10 @@ #include <string> #include <stdio.h> +#ifndef APT_8_CLEANER_HEADERS using std::string; using std::vector; +#endif class pkgTagSection; class FileFd; @@ -24,24 +26,27 @@ class pkgCdromStatus; class IndexCopy /*{{{*/ { + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + protected: pkgTagSection *Section; - string ChopDirs(string Path,unsigned int Depth); - bool ReconstructPrefix(string &Prefix,string OrigPath,string CD, - string File); - bool ReconstructChop(unsigned long &Chop,string Dir,string File); - void ConvertToSourceList(string CD,string &Path); - bool GrabFirst(string Path,string &To,unsigned int Depth); - virtual bool GetFile(string &Filename,unsigned long &Size) = 0; - virtual bool RewriteEntry(FILE *Target,string File) = 0; + std::string ChopDirs(std::string Path,unsigned int Depth); + bool ReconstructPrefix(std::string &Prefix,std::string OrigPath,std::string CD, + std::string File); + bool ReconstructChop(unsigned long &Chop,std::string Dir,std::string File); + void ConvertToSourceList(std::string CD,std::string &Path); + bool GrabFirst(std::string Path,std::string &To,unsigned int Depth); + virtual bool GetFile(std::string &Filename,unsigned long long &Size) = 0; + virtual bool RewriteEntry(FILE *Target,std::string File) = 0; virtual const char *GetFileName() = 0; virtual const char *Type() = 0; public: - bool CopyPackages(string CDROM,string Name,vector<string> &List, + bool CopyPackages(std::string CDROM,std::string Name,std::vector<std::string> &List, pkgCdromStatus *log); virtual ~IndexCopy() {}; }; @@ -50,24 +55,22 @@ class PackageCopy : public IndexCopy /*{{{*/ { protected: - virtual bool GetFile(string &Filename,unsigned long &Size); - virtual bool RewriteEntry(FILE *Target,string File); + virtual bool GetFile(std::string &Filename,unsigned long long &Size); + virtual bool RewriteEntry(FILE *Target,std::string File); virtual const char *GetFileName() {return "Packages";}; virtual const char *Type() {return "Package";}; - public: }; /*}}}*/ class SourceCopy : public IndexCopy /*{{{*/ { protected: - virtual bool GetFile(string &Filename,unsigned long &Size); - virtual bool RewriteEntry(FILE *Target,string File); + virtual bool GetFile(std::string &Filename,unsigned long long &Size); + virtual bool RewriteEntry(FILE *Target,std::string File); virtual const char *GetFileName() {return "Sources";}; virtual const char *Type() {return "Source";}; - public: }; /*}}}*/ class TranslationsCopy /*{{{*/ @@ -76,19 +79,22 @@ class TranslationsCopy /*{{{*/ pkgTagSection *Section; public: - bool CopyTranslations(string CDROM,string Name,vector<string> &List, + bool CopyTranslations(std::string CDROM,std::string Name,std::vector<std::string> &List, pkgCdromStatus *log); }; /*}}}*/ class SigVerify /*{{{*/ { - bool Verify(string prefix,string file, indexRecords *records); - bool CopyMetaIndex(string CDROM, string CDName, - string prefix, string file); + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; + + bool Verify(std::string prefix,std::string file, indexRecords *records); + bool CopyMetaIndex(std::string CDROM, std::string CDName, + std::string prefix, std::string file); public: - bool CopyAndVerify(string CDROM,string Name,vector<string> &SigList, - vector<string> PkgList,vector<string> SrcList); + bool CopyAndVerify(std::string CDROM,std::string Name,std::vector<std::string> &SigList, + std::vector<std::string> PkgList,std::vector<std::string> SrcList); /** \brief generates and run the command to verify a file with gpgv */ static bool RunGPGV(std::string const &File, std::string const &FileOut, diff --git a/apt-pkg/indexfile.cc b/apt-pkg/indexfile.cc index f18ddbfaa..642a750d4 100644 --- a/apt-pkg/indexfile.cc +++ b/apt-pkg/indexfile.cc @@ -8,6 +8,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/indexfile.h> #include <apt-pkg/error.h> #include <apt-pkg/aptconfiguration.h> @@ -45,9 +47,9 @@ pkgIndexFile::Type *pkgIndexFile::Type::GetType(const char *Type) // IndexFile::ArchiveInfo - Stub /*{{{*/ // --------------------------------------------------------------------- /* */ -string pkgIndexFile::ArchiveInfo(pkgCache::VerIterator Ver) const +std::string pkgIndexFile::ArchiveInfo(pkgCache::VerIterator Ver) const { - return string(); + return std::string(); } /*}}}*/ // IndexFile::FindInCache - Stub /*{{{*/ @@ -61,10 +63,10 @@ pkgCache::PkgFileIterator pkgIndexFile::FindInCache(pkgCache &Cache) const // IndexFile::SourceIndex - Stub /*{{{*/ // --------------------------------------------------------------------- /* */ -string pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const &Record, +std::string pkgIndexFile::SourceInfo(pkgSrcRecords::Parser const &Record, pkgSrcRecords::File const &File) const { - return string(); + return std::string(); } /*}}}*/ // IndexFile::TranslationsAvailable - Check if will use Translation /*{{{*/ @@ -96,7 +98,7 @@ __attribute__ ((deprecated)) bool pkgIndexFile::CheckLanguageCode(const char *La /* As we have now possibly more than one LanguageCode this method is supersided by a) private classmembers or b) getLanguages(). TODO: Remove method with next API break */ -__attribute__ ((deprecated)) string pkgIndexFile::LanguageCode() { +__attribute__ ((deprecated)) std::string pkgIndexFile::LanguageCode() { if (TranslationsAvailable() == false) return ""; return APT::Configuration::getLanguages()[0]; diff --git a/apt-pkg/indexfile.h b/apt-pkg/indexfile.h index 2b5ae6342..1d34dc773 100644 --- a/apt-pkg/indexfile.h +++ b/apt-pkg/indexfile.h @@ -27,12 +27,16 @@ #include <apt-pkg/pkgcache.h> #include <apt-pkg/srcrecords.h> #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; + class pkgIndexFile { protected: @@ -59,13 +63,13 @@ class pkgIndexFile virtual const Type *GetType() const = 0; // Return descriptive strings of various sorts - virtual string ArchiveInfo(pkgCache::VerIterator Ver) const; - virtual string SourceInfo(pkgSrcRecords::Parser const &Record, + virtual std::string ArchiveInfo(pkgCache::VerIterator Ver) const; + virtual std::string SourceInfo(pkgSrcRecords::Parser const &Record, pkgSrcRecords::File const &File) const; - virtual string Describe(bool Short = false) const = 0; + virtual std::string Describe(bool Short = false) const = 0; // Interface for acquire - virtual string ArchiveURI(string /*File*/) const {return string();}; + virtual std::string ArchiveURI(std::string /*File*/) const {return std::string();}; // Interface for the record parsers virtual pkgSrcRecords::Parser *CreateSrcParser() const {return 0;}; @@ -84,7 +88,7 @@ class pkgIndexFile static bool TranslationsAvailable(); static bool CheckLanguageCode(const char *Lang); - static string LanguageCode(); + static std::string LanguageCode(); bool IsTrusted() const { return Trusted; }; diff --git a/apt-pkg/indexrecords.cc b/apt-pkg/indexrecords.cc index ba5b7c846..af2639beb 100644 --- a/apt-pkg/indexrecords.cc +++ b/apt-pkg/indexrecords.cc @@ -3,16 +3,24 @@ // $Id: indexrecords.cc,v 1.1.2.4 2003/12/30 02:11:43 mdz Exp $ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/indexrecords.h> #include <apt-pkg/tagfile.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> -#include <apti18n.h> +#include <apt-pkg/fileutl.h> +#include <apt-pkg/hashes.h> + #include <sys/stat.h> #include <clocale> +#include <apti18n.h> /*}}}*/ + +using std::string; + string indexRecords::GetDist() const { return this->Dist; @@ -36,7 +44,10 @@ time_t indexRecords::GetValidUntil() const const indexRecords::checkSum *indexRecords::Lookup(const string MetaKey) { - return Entries[MetaKey]; + std::map<std::string, indexRecords::checkSum* >::const_iterator sum = Entries.find(MetaKey); + if (sum == Entries.end()) + return NULL; + return sum->second; } bool indexRecords::Exists(string const &MetaKey) const @@ -78,7 +89,7 @@ bool indexRecords::Load(const string Filename) /*{{{*/ string Name; string Hash; - size_t Size; + unsigned long long Size; while (Start < End) { if (!parseSumData(Start, End, Name, Hash, Size)) @@ -144,7 +155,7 @@ bool indexRecords::Load(const string Filename) /*{{{*/ return true; } /*}}}*/ -vector<string> indexRecords::MetaKeys() /*{{{*/ +std::vector<string> indexRecords::MetaKeys() /*{{{*/ { std::vector<std::string> keys; std::map<string,checkSum *>::iterator I = Entries.begin(); @@ -156,7 +167,7 @@ vector<string> indexRecords::MetaKeys() /*{{{*/ } /*}}}*/ bool indexRecords::parseSumData(const char *&Start, const char *End, /*{{{*/ - string &Name, string &Hash, size_t &Size) + string &Name, string &Hash, unsigned long long &Size) { Name = ""; Hash = ""; @@ -193,7 +204,7 @@ bool indexRecords::parseSumData(const char *&Start, const char *End, /*{{{*/ if (EntryEnd == End) return false; - Size = strtol (Start, NULL, 10); + Size = strtoull (Start, NULL, 10); /* Skip over intermediate blanks */ Start = EntryEnd; diff --git a/apt-pkg/indexrecords.h b/apt-pkg/indexrecords.h index 5b532c1a5..a98b939bc 100644 --- a/apt-pkg/indexrecords.h +++ b/apt-pkg/indexrecords.h @@ -7,53 +7,56 @@ #include <apt-pkg/pkgcache.h> -#include <apt-pkg/fileutl.h> #include <apt-pkg/hashes.h> #include <map> #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, string &Name, - string &Hash, size_t &Size); + bool parseSumData(const char *&Start, const char *End, std::string &Name, + std::string &Hash, unsigned long long &Size); public: struct checkSum; - string ErrorText; + std::string ErrorText; protected: - string Dist; - string Suite; - string ExpectedDist; + std::string Dist; + std::string Suite; + std::string ExpectedDist; time_t ValidUntil; - std::map<string,checkSum *> Entries; + std::map<std::string,checkSum *> Entries; public: indexRecords(); - indexRecords(const string ExpectedDist); + indexRecords(const std::string ExpectedDist); // Lookup function - virtual const checkSum *Lookup(const string MetaKey); + virtual const checkSum *Lookup(const std::string MetaKey); /** \brief tests if a checksum for this file is available */ - bool Exists(string const &MetaKey) const; + bool Exists(std::string const &MetaKey) const; std::vector<std::string> MetaKeys(); - virtual bool Load(string Filename); - string GetDist() const; + virtual bool Load(std::string Filename); + std::string GetDist() const; time_t GetValidUntil() const; - virtual bool CheckDist(const string MaybeDist) const; - string GetExpectedDist() const; + virtual bool CheckDist(const std::string MaybeDist) const; + std::string GetExpectedDist() const; virtual ~indexRecords(){}; }; struct indexRecords::checkSum { - string MetaKeyFilename; + std::string MetaKeyFilename; HashString Hash; - size_t Size; + unsigned long long Size; }; #endif diff --git a/apt-pkg/init.cc b/apt-pkg/init.cc index b283e2dd9..76278921f 100644 --- a/apt-pkg/init.cc +++ b/apt-pkg/init.cc @@ -8,19 +8,23 @@ ##################################################################### */ /*}}}*/ // Include files /*{{{*/ +#include<config.h> + #include <apt-pkg/init.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/error.h> +#include <apt-pkg/pkgsystem.h> +#include <apt-pkg/configuration.h> -#include <apti18n.h> -#include <config.h> #include <cstdlib> #include <sys/stat.h> + +#include <apti18n.h> /*}}}*/ #define Stringfy_(x) # x #define Stringfy(x) Stringfy_(x) -const char *pkgVersion = VERSION; +const char *pkgVersion = PACKAGE_VERSION; const char *pkgLibVersion = Stringfy(APT_PKG_MAJOR) "." Stringfy(APT_PKG_MINOR) "." Stringfy(APT_PKG_RELEASE); @@ -74,6 +78,7 @@ bool pkgInitConfig(Configuration &Cnf) Cnf.CndSet("Dir::Etc::trusted", "trusted.gpg"); Cnf.CndSet("Dir::Etc::trustedparts","trusted.gpg.d"); Cnf.CndSet("Dir::Bin::methods","/usr/lib/apt/methods"); + Cnf.CndSet("Dir::Bin::solvers::","/usr/lib/apt/solvers"); Cnf.CndSet("Dir::Media::MountPath","/media/apt"); // State @@ -104,14 +109,14 @@ bool pkgInitConfig(Configuration &Cnf) } // Read the configuration parts dir - string Parts = Cnf.FindDir("Dir::Etc::parts"); + std::string Parts = Cnf.FindDir("Dir::Etc::parts"); if (DirectoryExists(Parts) == true) Res &= ReadConfigDir(Cnf,Parts); else _error->WarningE("DirectoryExists",_("Unable to read %s"),Parts.c_str()); // Read the main config file - string FName = Cnf.FindFile("Dir::Etc::main"); + std::string FName = Cnf.FindFile("Dir::Etc::main"); if (RealFileExists(FName) == true) Res &= ReadConfigFile(Cnf,FName); @@ -138,7 +143,7 @@ bool pkgInitConfig(Configuration &Cnf) bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys) { Sys = 0; - string Label = Cnf.Find("Apt::System",""); + std::string Label = Cnf.Find("Apt::System",""); if (Label.empty() == false) { Sys = pkgSystem::GetSystem(Label.c_str()); diff --git a/apt-pkg/init.h b/apt-pkg/init.h index 15a1165b9..b6f3df753 100644 --- a/apt-pkg/init.h +++ b/apt-pkg/init.h @@ -13,8 +13,13 @@ #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; // These lines are extracted by the makefiles and the buildsystem // Increasing MAJOR or MINOR results in the need of recompiling all @@ -22,8 +27,8 @@ // Non-ABI-Breaks should only increase RELEASE number. // See also buildlib/libversion.mak #define APT_PKG_MAJOR 4 -#define APT_PKG_MINOR 10 -#define APT_PKG_RELEASE 1 +#define APT_PKG_MINOR 12 +#define APT_PKG_RELEASE 0 extern const char *pkgVersion; extern const char *pkgLibVersion; @@ -31,15 +36,4 @@ extern const char *pkgLibVersion; bool pkgInitConfig(Configuration &Cnf); bool pkgInitSystem(Configuration &Cnf,pkgSystem *&Sys); -#ifdef APT_COMPATIBILITY -#if APT_COMPATIBILITY != 986 -#warning "Using APT_COMPATIBILITY" -#endif - -inline bool pkgInitialize(Configuration &Cnf) -{ - return pkgInitConfig(Cnf) && pkgInitSystem(Cnf,_system); -}; -#endif - #endif diff --git a/apt-pkg/makefile b/apt-pkg/makefile index 4e5ec107f..e1f69dd65 100644 --- a/apt-pkg/makefile +++ b/apt-pkg/makefile @@ -3,7 +3,7 @@ BASE=.. SUBDIR=apt-pkg # Header location -SUBDIRS = deb contrib +SUBDIRS = deb edsp contrib HEADER_TARGETDIRS = apt-pkg # Bring in the default rules @@ -20,11 +20,15 @@ APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR) # Source code for the contributed non-core things SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \ contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \ - contrib/md5.cc contrib/sha1.cc contrib/sha256.cc contrib/hashes.cc \ + contrib/hashsum.cc contrib/md5.cc contrib/sha1.cc \ + contrib/sha2_internal.cc\ + contrib/hashes.cc \ contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \ contrib/fileutl.cc HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h\ - md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h hashes.h \ + md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha2.h sha256.h\ + sha2_internal.h \ + hashes.h hashsum_template.h\ macros.h weakptr.h # Source code for the core main library @@ -35,7 +39,7 @@ SOURCE+= pkgcache.cc version.cc depcache.cc \ srcrecords.cc cachefile.cc versionmatch.cc policy.cc \ pkgsystem.cc indexfile.cc pkgcachegen.cc acquire-item.cc \ indexrecords.cc vendor.cc vendorlist.cc cdrom.cc indexcopy.cc \ - aptconfiguration.cc cachefilter.cc cacheset.cc + aptconfiguration.cc cachefilter.cc cacheset.cc edsp.cc HEADERS+= algorithms.h depcache.h pkgcachegen.h cacheiterators.h \ orderlist.h sourcelist.h packagemanager.h tagfile.h \ init.h pkgcache.h version.h progress.h pkgrecords.h \ @@ -43,7 +47,7 @@ HEADERS+= algorithms.h depcache.h pkgcachegen.h cacheiterators.h \ clean.h srcrecords.h cachefile.h versionmatch.h policy.h \ pkgsystem.h indexfile.h metaindex.h indexrecords.h vendor.h \ vendorlist.h cdrom.h indexcopy.h aptconfiguration.h \ - cachefilter.h cacheset.h + cachefilter.h cacheset.h edsp.h # Source code for the debian specific components # In theory the deb headers do not need to be exported.. @@ -53,6 +57,10 @@ SOURCE+= deb/deblistparser.cc deb/debrecords.cc deb/dpkgpm.cc \ HEADERS+= debversion.h debsrcrecords.h dpkgpm.h debrecords.h \ deblistparser.h debsystem.h debindexfile.h debmetaindex.h +# Source code for the APT resolver interface specific components +SOURCE+= edsp/edsplistparser.cc edsp/edspindexfile.cc edsp/edspsystem.cc +HEADERS+= edsplistparser.h edspindexfile.h edspsystem.h + HEADERS := $(addprefix apt-pkg/,$(HEADERS)) include $(LIBRARY_H) diff --git a/apt-pkg/metaindex.h b/apt-pkg/metaindex.h index 1d2140799..5783735ff 100644 --- a/apt-pkg/metaindex.h +++ b/apt-pkg/metaindex.h @@ -4,12 +4,14 @@ #include <string> #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/indexfile.h> #include <apt-pkg/vendor.h> - using std::string; +#endif class pkgAcquire; class pkgCacheGenerator; @@ -18,31 +20,35 @@ class OpProgress; class metaIndex { protected: - vector <pkgIndexFile *> *Indexes; + std::vector <pkgIndexFile *> *Indexes; const char *Type; - string URI; - string Dist; + std::string URI; + std::string Dist; bool Trusted; public: // Various accessors - virtual string GetURI() const {return URI;} - virtual string GetDist() const {return Dist;} + virtual std::string GetURI() const {return URI;} + virtual std::string GetDist() const {return Dist;} virtual const char* GetType() const {return Type;} // Interface for acquire - virtual string ArchiveURI(string const& /*File*/) const = 0; + virtual std::string ArchiveURI(std::string const& /*File*/) const = 0; virtual bool GetIndexes(pkgAcquire *Owner, bool const &GetAll=false) const = 0; - virtual vector<pkgIndexFile *> *GetIndexFiles() = 0; + virtual std::vector<pkgIndexFile *> *GetIndexFiles() = 0; virtual bool IsTrusted() const = 0; + metaIndex(std::string const &URI, std::string const &Dist, char const * const Type) : + Indexes(NULL), Type(Type), URI(URI), Dist(Dist) { + } + virtual ~metaIndex() { if (Indexes == 0) return; - for (vector<pkgIndexFile *>::iterator I = (*Indexes).begin(); I != (*Indexes).end(); ++I) + for (std::vector<pkgIndexFile *>::iterator I = (*Indexes).begin(); I != (*Indexes).end(); ++I) delete *I; delete Indexes; } diff --git a/apt-pkg/orderlist.cc b/apt-pkg/orderlist.cc index cae5b0a48..3a179b2a2 100644 --- a/apt-pkg/orderlist.cc +++ b/apt-pkg/orderlist.cc @@ -63,6 +63,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/orderlist.h> #include <apt-pkg/depcache.h> #include <apt-pkg/error.h> @@ -80,16 +82,14 @@ pkgOrderList *pkgOrderList::Me = 0; // OrderList::pkgOrderList - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgOrderList::pkgOrderList(pkgDepCache *pCache) : Cache(*pCache) +pkgOrderList::pkgOrderList(pkgDepCache *pCache) : Cache(*pCache), + Primary(NULL), Secondary(NULL), + RevDepends(NULL), Remove(NULL), + AfterEnd(NULL), FileList(NULL), + LoopCount(-1), Depth(0) { - FileList = 0; - Primary = 0; - Secondary = 0; - RevDepends = 0; - Remove = 0; - LoopCount = -1; Debug = _config->FindB("Debug::pkgOrderList",false); - + /* Construct the arrays, egcs 1.0.1 bug requires the package count hack */ unsigned long Size = Cache.Head().PackageCount; @@ -1057,8 +1057,10 @@ bool pkgOrderList::AddLoop(DepIterator D) Loops[LoopCount++] = D; // Mark the packages as being part of a loop. - Flag(D.TargetPkg(),Loop); - Flag(D.ParentPkg(),Loop); + //Flag(D.TargetPkg(),Loop); + //Flag(D.ParentPkg(),Loop); + /* This is currently disabled because the Loop flag is being used for + loop management in the package manager. Check the orderlist.h file for more info */ return true; } /*}}}*/ @@ -1109,7 +1111,7 @@ bool pkgOrderList::CheckDep(DepIterator D) just needs one */ if (D.IsNegative() == false) { - // ignore provides by older versions of this package + // ignore provides by older versions of this package if (((D.Reverse() == false && Pkg == D.ParentPkg()) || (D.Reverse() == true && Pkg == D.TargetPkg())) && Cache[Pkg].InstallVer != *I) diff --git a/apt-pkg/orderlist.h b/apt-pkg/orderlist.h index 264f7ba03..a2d7b321b 100644 --- a/apt-pkg/orderlist.h +++ b/apt-pkg/orderlist.h @@ -38,7 +38,7 @@ class pkgOrderList : protected pkgCache::Namespace Package **End; Package **List; Package **AfterEnd; - string *FileList; + std::string *FileList; DepIterator Loops[20]; int LoopCount; int Depth; @@ -76,7 +76,12 @@ class pkgOrderList : protected pkgCache::Namespace typedef Package **iterator; - // State flags + /* State flags + The Loop flag can be set on a package that is currently being processed by either SmartConfigure or + SmartUnPack. This allows the package manager to tell when a loop has been formed as it will try to + SmartUnPack or SmartConfigure a package with the Loop flag set. It will then either stop (as it knows + that the operation is unnecessary as its already in process), or in the case of the conflicts resolution + in SmartUnPack, use EarlyRemove to resolve the situation. */ enum Flags {Added = (1 << 0), AddPending = (1 << 1), Immediate = (1 << 2), Loop = (1 << 3), UnPacked = (1 << 4), Configured = (1 << 5), @@ -91,10 +96,13 @@ class pkgOrderList : protected pkgCache::Namespace void Flag(PkgIterator Pkg,unsigned long State, unsigned long F) {Flags[Pkg->ID] = (Flags[Pkg->ID] & (~F)) | State;}; inline void Flag(PkgIterator Pkg,unsigned long F) {Flags[Pkg->ID] |= F;}; inline void Flag(Package *Pkg,unsigned long F) {Flags[Pkg->ID] |= F;}; + // RmFlag removes a flag from a package + inline void RmFlag(Package *Pkg,unsigned long F) {Flags[Pkg->ID] &= ~F;}; + // IsNow will return true if the Pkg has been not been either configured or unpacked inline bool IsNow(PkgIterator Pkg) {return (Flags[Pkg->ID] & (States & (~Removed))) == 0;}; bool IsMissing(PkgIterator Pkg); void WipeFlags(unsigned long F); - void SetFileList(string *FileList) {this->FileList = FileList;}; + void SetFileList(std::string *FileList) {this->FileList = FileList;}; // Accessors inline iterator begin() {return List;}; @@ -107,7 +115,7 @@ class pkgOrderList : protected pkgCache::Namespace // Ordering modes bool OrderCritical(); - bool OrderUnpack(string *FileList = 0); + bool OrderUnpack(std::string *FileList = 0); bool OrderConfigure(); int Score(PkgIterator Pkg); diff --git a/apt-pkg/packagemanager.cc b/apt-pkg/packagemanager.cc index 8b73b9980..698c8606f 100644 --- a/apt-pkg/packagemanager.cc +++ b/apt-pkg/packagemanager.cc @@ -13,6 +13,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/packagemanager.h> #include <apt-pkg/orderlist.h> #include <apt-pkg/depcache.h> @@ -22,21 +24,25 @@ #include <apt-pkg/algorithms.h> #include <apt-pkg/configuration.h> #include <apt-pkg/sptr.h> - -#include <apti18n.h> + +#include <apti18n.h> #include <iostream> -#include <fcntl.h> +#include <fcntl.h> /*}}}*/ using namespace std; +bool pkgPackageManager::SigINTStop = false; + // PM::PackageManager - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgPackageManager::pkgPackageManager(pkgDepCache *pCache) : Cache(*pCache) +pkgPackageManager::pkgPackageManager(pkgDepCache *pCache) : Cache(*pCache), + List(NULL), Res(Incomplete) { FileNames = new string[Cache.Head().PackageCount]; - List = 0; Debug = _config->FindB("Debug::pkgPackageManager",false); + NoImmConfigure = !_config->FindB("APT::Immediate-Configure",true); + ImmConfigureAll = _config->FindB("APT::Immediate-Configure-All",false); } /*}}}*/ // PM::PackageManager - Destructor /*{{{*/ @@ -146,7 +152,7 @@ void pkgPackageManager::ImmediateAdd(PkgIterator I, bool UseInstallVer, unsigned if(!List->IsFlag(D.TargetPkg(), pkgOrderList::Immediate)) { if(Debug) - clog << OutputInDepth(Depth) << "ImmediateAdd(): Adding Immediate flag to " << D.TargetPkg() << " cause of " << D.DepType() << " " << I.Name() << endl; + clog << OutputInDepth(Depth) << "ImmediateAdd(): Adding Immediate flag to " << D.TargetPkg() << " cause of " << D.DepType() << " " << I.FullName() << endl; List->Flag(D.TargetPkg(),pkgOrderList::Immediate); ImmediateAdd(D.TargetPkg(), UseInstallVer, Depth + 1); } @@ -165,8 +171,9 @@ bool pkgPackageManager::CreateOrderList() delete List; List = new pkgOrderList(&Cache); - - static bool const NoImmConfigure = !_config->FindB("APT::Immediate-Configure",true); + + if (Debug && ImmConfigureAll) + clog << "CreateOrderList(): Adding Immediate flag for all packages because of APT::Immediate-Configure-All" << endl; // Generate the list of affected packages and sort it for (PkgIterator I = Cache.PkgBegin(); I.end() == false; ++I) @@ -176,19 +183,20 @@ bool pkgPackageManager::CreateOrderList() continue; // Mark the package and its dependends for immediate configuration - if (((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential || - (I->Flags & pkgCache::Flag::Important) == pkgCache::Flag::Important) && - NoImmConfigure == false) + if ((((I->Flags & pkgCache::Flag::Essential) == pkgCache::Flag::Essential) && + NoImmConfigure == false) || ImmConfigureAll) { - if(Debug) - clog << "CreateOrderList(): Adding Immediate flag for " << I.Name() << endl; + if(Debug && !ImmConfigureAll) + clog << "CreateOrderList(): Adding Immediate flag for " << I.FullName() << endl; List->Flag(I,pkgOrderList::Immediate); - - // Look for other install packages to make immediate configurea - ImmediateAdd(I, true); - // And again with the current version. - ImmediateAdd(I, false); + if (!ImmConfigureAll) { + // Look for other install packages to make immediate configurea + ImmediateAdd(I, true); + + // And again with the current version. + ImmediateAdd(I, false); + } } // Not interesting @@ -240,7 +248,7 @@ bool pkgPackageManager::CheckRConflicts(PkgIterator Pkg,DepIterator D, continue; // Ignore self conflicts, ignore conflicts from irrelevent versions - if (D.ParentPkg() == Pkg || D.ParentVer() != D.ParentPkg().CurrentVer()) + if (D.IsIgnorable(Pkg) || D.ParentVer() != D.ParentPkg().CurrentVer()) continue; if (Cache.VS().CheckDep(Ver,D->CompareOp,D.TargetVer()) == false) @@ -248,7 +256,7 @@ bool pkgPackageManager::CheckRConflicts(PkgIterator Pkg,DepIterator D, if (EarlyRemove(D.ParentPkg()) == false) return _error->Error("Reverse conflicts early remove for package '%s' failed", - Pkg.Name()); + Pkg.FullName().c_str()); } return true; } @@ -256,7 +264,8 @@ bool pkgPackageManager::CheckRConflicts(PkgIterator Pkg,DepIterator D, // PM::ConfigureAll - Run the all out configuration /*{{{*/ // --------------------------------------------------------------------- /* This configures every package. It is assumed they are all unpacked and - that the final configuration is valid. */ + that the final configuration is valid. This is also used to catch packages + that have not been configured when using ImmConfigureAll */ bool pkgPackageManager::ConfigureAll() { pkgOrderList OList(&Cache); @@ -277,9 +286,19 @@ bool pkgPackageManager::ConfigureAll() for (pkgOrderList::iterator I = OList.begin(); I != OList.end(); ++I) { PkgIterator Pkg(Cache,*I); - - if (ConfigurePkgs == true && Configure(Pkg) == false) + + /* Check if the package has been configured, this can happen if SmartConfigure + calls its self */ + if (List->IsFlag(Pkg,pkgOrderList::Configured)) continue; + + if (ConfigurePkgs == true && SmartConfigure(Pkg, 0) == false) { + if (ImmConfigureAll) + _error->Error(_("Could not perform immediate configuration on '%s'. " + "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),1); + else + _error->Error("Internal error, packages left unconfigured. %s",Pkg.FullName().c_str()); return false; + } List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); } @@ -289,37 +308,180 @@ bool pkgPackageManager::ConfigureAll() /*}}}*/ // PM::SmartConfigure - Perform immediate configuration of the pkg /*{{{*/ // --------------------------------------------------------------------- -/* This routine scheduals the configuration of the given package and all - of it's dependents. */ -bool pkgPackageManager::SmartConfigure(PkgIterator Pkg) +/* This function tries to put the system in a state where Pkg can be configured. + This involves checking each of Pkg's dependanies and unpacking and + configuring packages where needed. + + Note on failure: This method can fail, without causing any problems. + This can happen when using Immediate-Configure-All, SmartUnPack may call + SmartConfigure, it may fail because of a complex dependancy situation, but + a error will only be reported if ConfigureAll fails. This is why some of the + messages this function reports on failure (return false;) as just warnings + only shown when debuging*/ +bool pkgPackageManager::SmartConfigure(PkgIterator Pkg, int const Depth) { - if (Debug == true) - clog << "SmartConfigure " << Pkg.Name() << endl; + // If this is true, only check and correct and dependencies without the Loop flag + bool const PkgLoop = List->IsFlag(Pkg,pkgOrderList::Loop); + + if (Debug) { + VerIterator InstallVer = VerIterator(Cache,Cache[Pkg].InstallVer); + clog << OutputInDepth(Depth) << "SmartConfigure " << Pkg.FullName() << " (" << InstallVer.VerStr() << ")"; + if (PkgLoop) + clog << " (Only Correct Dependencies)"; + clog << endl; + } - pkgOrderList OList(&Cache); + VerIterator const instVer = Cache[Pkg].InstVerIter(Cache); + + /* Because of the ordered list, most dependencies should be unpacked, + however if there is a loop (A depends on B, B depends on A) this will not + be the case, so check for dependencies before configuring. */ + bool Bad = false, Changed = false; + do { + Changed = false; + for (DepIterator D = instVer.DependsList(); D.end() == false; ) + { + // Compute a single dependency element (glob or) + pkgCache::DepIterator Start, End; + D.GlobOr(Start,End); + + if (End->Type != pkgCache::Dep::Depends) + continue; + Bad = true; + + // Search for dependencies which are unpacked but aren't configured yet (maybe loops) + for (DepIterator Cur = Start; true; ++Cur) + { + SPtrArray<Version *> VList = Cur.AllTargets(); + + for (Version **I = VList; *I != 0; ++I) + { + VerIterator Ver(Cache,*I); + PkgIterator DepPkg = Ver.ParentPkg(); + + // Check if the current version of the package is available and will satisfy this dependency + if (DepPkg.CurrentVer() == Ver && List->IsNow(DepPkg) == true && + List->IsFlag(DepPkg,pkgOrderList::Removed) == false && + DepPkg.State() == PkgIterator::NeedsNothing) + { + Bad = false; + break; + } + + // Check if the version that is going to be installed will satisfy the dependency + if (Cache[DepPkg].InstallVer != *I) + continue; + + if (List->IsFlag(DepPkg,pkgOrderList::UnPacked)) + { + if (List->IsFlag(DepPkg,pkgOrderList::Loop) && PkgLoop) + { + // This dependency has already been dealt with by another SmartConfigure on Pkg + Bad = false; + break; + } + /* Check for a loop to prevent one forming + If A depends on B and B depends on A, SmartConfigure will + just hop between them if this is not checked. Dont remove the + loop flag after finishing however as loop is already set. + This means that there is another SmartConfigure call for this + package and it will remove the loop flag */ + if (PkgLoop == false) + List->Flag(Pkg,pkgOrderList::Loop); + if (SmartConfigure(DepPkg, Depth + 1) == true) + { + Bad = false; + if (List->IsFlag(DepPkg,pkgOrderList::Loop) == false) + Changed = true; + } + if (PkgLoop == false) + List->RmFlag(Pkg,pkgOrderList::Loop); + // If SmartConfigure was succesfull, Bad is false, so break + if (Bad == false) + break; + } + else if (List->IsFlag(DepPkg,pkgOrderList::Configured)) + { + Bad = false; + break; + } + } + if (Cur == End) + break; + } + + if (Bad == false) + continue; + + // Check for dependencies that have not been unpacked, probably due to loops. + for (DepIterator Cur = Start; true; ++Cur) + { + SPtrArray<Version *> VList = Cur.AllTargets(); + + for (Version **I = VList; *I != 0; ++I) + { + VerIterator Ver(Cache,*I); + PkgIterator DepPkg = Ver.ParentPkg(); + + // Check if the version that is going to be installed will satisfy the dependency + if (Cache[DepPkg].InstallVer != *I || List->IsNow(DepPkg) == false) + continue; + + if (PkgLoop == true) + { + if (Debug) + std::clog << OutputInDepth(Depth) << "Package " << Pkg << " loops in SmartConfigure" << std::endl; + Bad = false; + break; + } + else + { + if (Debug) + clog << OutputInDepth(Depth) << "Unpacking " << DepPkg.FullName() << " to avoid loop " << Cur << endl; + if (PkgLoop == false) + List->Flag(Pkg,pkgOrderList::Loop); + if (SmartUnPack(DepPkg, true, Depth + 1) == true) + { + Bad = false; + if (List->IsFlag(DepPkg,pkgOrderList::Loop) == false) + Changed = true; + } + if (PkgLoop == false) + List->RmFlag(Pkg,pkgOrderList::Loop); + if (Bad == false) + break; + } + } - if (DepAdd(OList,Pkg) == false) + if (Cur == End) + break; + } + + if (Bad == true && Changed == false && Debug == true) + std::clog << OutputInDepth(Depth) << "Could not satisfy " << Start << std::endl; + } + } while (Changed == true); + + if (Bad) { + if (Debug) + _error->Warning(_("Could not configure '%s'. "),Pkg.FullName().c_str()); return false; + } + + if (PkgLoop) return true; static std::string const conf = _config->Find("PackageManager::Configure","all"); static bool const ConfigurePkgs = (conf == "all" || conf == "smart"); - if (ConfigurePkgs == true) - if (OList.OrderConfigure() == false) - return false; + if (List->IsFlag(Pkg,pkgOrderList::Configured)) + return _error->Error("Internal configure error on '%s'.", Pkg.FullName().c_str()); - // Perform the configuring - for (pkgOrderList::iterator I = OList.begin(); I != OList.end(); ++I) - { - PkgIterator Pkg(Cache,*I); - - if (ConfigurePkgs == true && Configure(Pkg) == false) - return false; - - List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); - } + if (ConfigurePkgs == true && Configure(Pkg) == false) + return false; - if (Cache[Pkg].InstVerIter(Cache)->MultiArch == pkgCache::Version::Same) + List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); + + if ((Cache[Pkg].InstVerIter(Cache)->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) for (PkgIterator P = Pkg.Group().PackageList(); P.end() == false; P = Pkg.Group().NextPkg(P)) { @@ -327,94 +489,13 @@ bool pkgPackageManager::SmartConfigure(PkgIterator Pkg) Cache[P].InstallVer == 0 || (P.CurrentVer() == Cache[P].InstallVer && (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)) continue; - SmartConfigure(P); + SmartConfigure(P, (Depth +1)); } // Sanity Check if (List->IsFlag(Pkg,pkgOrderList::Configured) == false) - return _error->Error(_("Could not perform immediate configuration on '%s'. " - "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.Name(),1); - - return true; -} - /*}}}*/ -// PM::DepAdd - Add all dependents to the oder list /*{{{*/ -// --------------------------------------------------------------------- -/* This recursively adds all dependents to the order list */ -bool pkgPackageManager::DepAdd(pkgOrderList &OList,PkgIterator Pkg,int Depth) -{ - if (OList.IsFlag(Pkg,pkgOrderList::Added) == true) - return true; - if (List->IsFlag(Pkg,pkgOrderList::Configured) == true) - return true; - if (List->IsFlag(Pkg,pkgOrderList::UnPacked) == false) - return false; - - if (Debug) - std::clog << OutputInDepth(Depth) << "DepAdd: " << Pkg.Name() << std::endl; - - // Put the package on the list - OList.push_back(Pkg); - OList.Flag(Pkg,pkgOrderList::Added); - Depth++; - - // Check the dependencies to see if they are all satisfied. - bool Bad = false; - for (DepIterator D = Cache[Pkg].InstVerIter(Cache).DependsList(); D.end() == false;) - { - if (D->Type != pkgCache::Dep::Depends && D->Type != pkgCache::Dep::PreDepends) - { - ++D; - continue; - } - - // Grok or groups - Bad = true; - for (bool LastOR = true; D.end() == false && LastOR == true; ++D) - { - LastOR = (D->CompareOp & pkgCache::Dep::Or) == pkgCache::Dep::Or; - - if (Bad == false) - continue; + return _error->Error(_("Could not configure '%s'. "),Pkg.FullName().c_str()); - SPtrArray<Version *> VList = D.AllTargets(); - for (Version **I = VList; *I != 0 && Bad == true; ++I) - { - VerIterator Ver(Cache,*I); - PkgIterator Pkg = Ver.ParentPkg(); - - // See if the current version is ok - if (Pkg.CurrentVer() == Ver && List->IsNow(Pkg) == true && - Pkg.State() == PkgIterator::NeedsNothing) - { - Bad = false; - continue; - } - - // Not the install version - if (Cache[Pkg].InstallVer != *I || - (Cache[Pkg].Keep() == true && Pkg.State() == PkgIterator::NeedsNothing)) - continue; - - if (List->IsFlag(Pkg,pkgOrderList::UnPacked) == true) - Bad = !DepAdd(OList,Pkg,Depth); - if (List->IsFlag(Pkg,pkgOrderList::Configured) == true) - Bad = false; - } - } - - if (Bad == true) - { - if (Debug) - std::clog << OutputInDepth(Depth) << "DepAdd FAILS on: " << Pkg.Name() << std::endl; - OList.Flag(Pkg,0,pkgOrderList::Added); - OList.pop_back(); - Depth--; - return false; - } - } - - Depth--; return true; } /*}}}*/ @@ -436,7 +517,8 @@ bool pkgPackageManager::EarlyRemove(PkgIterator Pkg) // Essential packages get special treatment bool IsEssential = false; - if ((Pkg->Flags & pkgCache::Flag::Essential) != 0) + if ((Pkg->Flags & pkgCache::Flag::Essential) != 0 || + (Pkg->Flags & pkgCache::Flag::Important) != 0) IsEssential = true; /* Check for packages that are the dependents of essential packages and @@ -446,7 +528,8 @@ bool pkgPackageManager::EarlyRemove(PkgIterator Pkg) for (DepIterator D = Pkg.RevDependsList(); D.end() == false && IsEssential == false; ++D) if (D->Type == pkgCache::Dep::Depends || D->Type == pkgCache::Dep::PreDepends) - if ((D.ParentPkg()->Flags & pkgCache::Flag::Essential) != 0) + if ((D.ParentPkg()->Flags & pkgCache::Flag::Essential) != 0 || + (D.ParentPkg()->Flags & pkgCache::Flag::Important) != 0) IsEssential = true; } @@ -457,7 +540,7 @@ bool pkgPackageManager::EarlyRemove(PkgIterator Pkg) "removing the essential package %s due to a " "Conflicts/Pre-Depends loop. This is often bad, " "but if you really want to do it, activate the " - "APT::Force-LoopBreak option."),Pkg.Name()); + "APT::Force-LoopBreak option."),Pkg.FullName().c_str()); } bool Res = SmartRemove(Pkg); @@ -478,132 +561,284 @@ bool pkgPackageManager::SmartRemove(PkgIterator Pkg) List->Flag(Pkg,pkgOrderList::Configured,pkgOrderList::States); return Remove(Pkg,(Cache[Pkg].iFlags & pkgDepCache::Purge) == pkgDepCache::Purge); - return true; } /*}}}*/ // PM::SmartUnPack - Install helper /*{{{*/ // --------------------------------------------------------------------- -/* This performs the task of handling pre-depends. */ +/* This puts the system in a state where it can Unpack Pkg, if Pkg is allready + unpacked, or when it has been unpacked, if Immediate==true it configures it. */ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg) { - return SmartUnPack(Pkg, true); + return SmartUnPack(Pkg, true, 0); } -bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate) +bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate, int const Depth) { - // Check if it is already unpacked - if (Pkg.State() == pkgCache::PkgIterator::NeedsConfigure && - Cache[Pkg].Keep() == true) - { - List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States); - if (Immediate == true && - List->IsFlag(Pkg,pkgOrderList::Immediate) == true) - if (SmartConfigure(Pkg) == false) - return _error->Error(_("Could not perform immediate configuration on already unpacked '%s'. " - "Please see man 5 apt.conf under APT::Immediate-Configure for details."),Pkg.Name()); - return true; + bool PkgLoop = List->IsFlag(Pkg,pkgOrderList::Loop); + + if (Debug) { + clog << OutputInDepth(Depth) << "SmartUnPack " << Pkg.FullName(); + VerIterator InstallVer = VerIterator(Cache,Cache[Pkg].InstallVer); + if (Pkg.CurrentVer() == 0) + clog << " (install version " << InstallVer.VerStr() << ")"; + else + clog << " (replace version " << Pkg.CurrentVer().VerStr() << " with " << InstallVer.VerStr() << ")"; + if (PkgLoop) + clog << " (Only Perform PreUnpack Checks)"; + clog << endl; } VerIterator const instVer = Cache[Pkg].InstVerIter(Cache); - /* See if this packages install version has any predependencies - that are not met by 'now' packages. */ - for (DepIterator D = instVer.DependsList(); - D.end() == false; ) - { - // Compute a single dependency element (glob or) - pkgCache::DepIterator Start; - pkgCache::DepIterator End; - D.GlobOr(Start,End); - - while (End->Type == pkgCache::Dep::PreDepends) + /* PreUnpack Checks: This loop checks and attempts to rectify and problems that would prevent the package being unpacked. + It addresses: PreDepends, Conflicts, Obsoletes and Breaks (DpkgBreaks). Any resolutions that do not require it should + avoid configuration (calling SmartUnpack with Immediate=true), this is because when unpacking some packages with + complex dependancy structures, trying to configure some packages while breaking the loops can complicate things . + This will be either dealt with if the package is configured as a dependency of Pkg (if and when Pkg is configured), + or by the ConfigureAll call at the end of the for loop in OrderInstall. */ + bool Changed = false; + do { + Changed = false; + for (DepIterator D = instVer.DependsList(); D.end() == false; ) { - if (Debug == true) - clog << "PreDepends order for " << Pkg.Name() << std::endl; + // Compute a single dependency element (glob or) + pkgCache::DepIterator Start, End; + D.GlobOr(Start,End); + + if (End->Type == pkgCache::Dep::PreDepends) + { + bool Bad = true; + if (Debug) + clog << OutputInDepth(Depth) << "PreDepends order for " << Pkg.FullName() << std::endl; + + // Look for easy targets: packages that are already okay + for (DepIterator Cur = Start; Bad == true; ++Cur) + { + SPtrArray<Version *> VList = Start.AllTargets(); + for (Version **I = VList; *I != 0; ++I) + { + VerIterator Ver(Cache,*I); + PkgIterator Pkg = Ver.ParentPkg(); + + // See if the current version is ok + if (Pkg.CurrentVer() == Ver && List->IsNow(Pkg) == true && + Pkg.State() == PkgIterator::NeedsNothing) + { + Bad = false; + if (Debug) + clog << OutputInDepth(Depth) << "Found ok package " << Pkg.FullName() << endl; + break; + } + } + if (Cur == End) + break; + } - // Look for possible ok targets. - SPtrArray<Version *> VList = Start.AllTargets(); - bool Bad = true; - for (Version **I = VList; *I != 0 && Bad == true; I++) - { - VerIterator Ver(Cache,*I); - PkgIterator Pkg = Ver.ParentPkg(); - - // See if the current version is ok - if (Pkg.CurrentVer() == Ver && List->IsNow(Pkg) == true && - Pkg.State() == PkgIterator::NeedsNothing) + // Look for something that could be configured. + for (DepIterator Cur = Start; Bad == true; ++Cur) { - Bad = false; - if (Debug == true) - clog << "Found ok package " << Pkg.Name() << endl; - continue; + SPtrArray<Version *> VList = Start.AllTargets(); + for (Version **I = VList; *I != 0; ++I) + { + VerIterator Ver(Cache,*I); + PkgIterator Pkg = Ver.ParentPkg(); + + // Not the install version + if (Cache[Pkg].InstallVer != *I || + (Cache[Pkg].Keep() == true && Pkg.State() == PkgIterator::NeedsNothing)) + continue; + + if (List->IsFlag(Pkg,pkgOrderList::Configured)) + { + Bad = false; + break; + } + + // check if it needs unpack or if if configure is enough + if (List->IsFlag(Pkg,pkgOrderList::UnPacked) == false) + { + if (Debug) + clog << OutputInDepth(Depth) << "Trying to SmartUnpack " << Pkg.FullName() << endl; + // SmartUnpack with the ImmediateFlag to ensure its really ready + if (SmartUnPack(Pkg, true, Depth + 1) == true) + { + Bad = false; + if (List->IsFlag(Pkg,pkgOrderList::Loop) == false) + Changed = true; + break; + } + } + else + { + if (Debug) + clog << OutputInDepth(Depth) << "Trying to SmartConfigure " << Pkg.FullName() << endl; + if (SmartConfigure(Pkg, Depth + 1) == true) + { + Bad = false; + if (List->IsFlag(Pkg,pkgOrderList::Loop) == false) + Changed = true; + break; + } + } + } } - } - - // Look for something that could be configured. - for (Version **I = VList; *I != 0 && Bad == true; I++) - { - VerIterator Ver(Cache,*I); - PkgIterator Pkg = Ver.ParentPkg(); - - // Not the install version - if (Cache[Pkg].InstallVer != *I || - (Cache[Pkg].Keep() == true && Pkg.State() == PkgIterator::NeedsNothing)) - continue; - if (Debug == true) - clog << "Trying to SmartConfigure " << Pkg.Name() << endl; - Bad = !SmartConfigure(Pkg); + if (Bad == true) + { + if (Start == End) + return _error->Error("Couldn't configure pre-depend %s for %s, " + "probably a dependency cycle.", + End.TargetPkg().FullName().c_str(),Pkg.FullName().c_str()); + } + else + continue; } - - /* If this or element did not match then continue on to the - next or element until a matching element is found */ - if (Bad == true) + else if (End->Type == pkgCache::Dep::Conflicts || + End->Type == pkgCache::Dep::Obsoletes) { - // This triggers if someone make a pre-depends/depend loop. - if (Start == End) - return _error->Error("Couldn't configure pre-depend %s for %s, " - "probably a dependency cycle.", - End.TargetPkg().Name(),Pkg.Name()); - ++Start; + /* Look for conflicts. Two packages that are both in the install + state cannot conflict so we don't check.. */ + SPtrArray<Version *> VList = End.AllTargets(); + for (Version **I = VList; *I != 0; I++) + { + VerIterator Ver(Cache,*I); + PkgIterator ConflictPkg = Ver.ParentPkg(); + VerIterator InstallVer(Cache,Cache[ConflictPkg].InstallVer); + + // See if the current version is conflicting + if (ConflictPkg.CurrentVer() == Ver && List->IsNow(ConflictPkg)) + { + clog << OutputInDepth(Depth) << Pkg.FullName() << " conflicts with " << ConflictPkg.FullName() << endl; + /* If a loop is not present or has not yet been detected, attempt to unpack packages + to resolve this conflict. If there is a loop present, remove packages to resolve this conflict */ + if (List->IsFlag(ConflictPkg,pkgOrderList::Loop) == false) + { + if (Cache[ConflictPkg].Keep() == 0 && Cache[ConflictPkg].InstallVer != 0) + { + if (Debug) + clog << OutputInDepth(Depth) << OutputInDepth(Depth) << "Unpacking " << ConflictPkg.FullName() << " to prevent conflict" << endl; + List->Flag(Pkg,pkgOrderList::Loop); + if (SmartUnPack(ConflictPkg,false, Depth + 1) == true) + if (List->IsFlag(ConflictPkg,pkgOrderList::Loop) == false) + Changed = true; + // Remove loop to allow it to be used later if needed + List->RmFlag(Pkg,pkgOrderList::Loop); + } + else if (EarlyRemove(ConflictPkg) == false) + return _error->Error("Internal Error, Could not early remove %s (1)",ConflictPkg.FullName().c_str()); + } + else if (List->IsFlag(ConflictPkg,pkgOrderList::Removed) == false) + { + if (Debug) + clog << OutputInDepth(Depth) << "Because of conficts knot, removing " << ConflictPkg.FullName() << " to conflict violation" << endl; + if (EarlyRemove(ConflictPkg) == false) + return _error->Error("Internal Error, Could not early remove %s (2)",ConflictPkg.FullName().c_str()); + } + } + } } - else - break; - } - - if (End->Type == pkgCache::Dep::Conflicts || - End->Type == pkgCache::Dep::Obsoletes) - { - /* Look for conflicts. Two packages that are both in the install - state cannot conflict so we don't check.. */ - SPtrArray<Version *> VList = End.AllTargets(); - for (Version **I = VList; *I != 0; I++) + else if (End->Type == pkgCache::Dep::DpkgBreaks) { - VerIterator Ver(Cache,*I); - PkgIterator Pkg = Ver.ParentPkg(); - - // See if the current version is conflicting - if (Pkg.CurrentVer() == Ver && List->IsNow(Pkg) == true) + SPtrArray<Version *> VList = End.AllTargets(); + for (Version **I = VList; *I != 0; ++I) { - if (EarlyRemove(Pkg) == false) - return _error->Error("Internal Error, Could not early remove %s",Pkg.Name()); + VerIterator Ver(Cache,*I); + PkgIterator BrokenPkg = Ver.ParentPkg(); + if (BrokenPkg.CurrentVer() != Ver) + { + if (Debug) + std::clog << OutputInDepth(Depth) << " Ignore not-installed version " << Ver.VerStr() << " of " << Pkg.FullName() << " for " << End << std::endl; + continue; + } + + // Check if it needs to be unpacked + if (List->IsFlag(BrokenPkg,pkgOrderList::InList) && Cache[BrokenPkg].Delete() == false && + List->IsNow(BrokenPkg)) + { + if (List->IsFlag(BrokenPkg,pkgOrderList::Loop) && PkgLoop) + { + // This dependancy has already been dealt with by another SmartUnPack on Pkg + break; + } + else + { + // Found a break, so see if we can unpack the package to avoid it + // but do not set loop if another SmartUnPack already deals with it + // Also, avoid it if the package we would unpack pre-depends on this one + VerIterator InstallVer(Cache,Cache[BrokenPkg].InstallVer); + bool circle = false; + for (pkgCache::DepIterator D = InstallVer.DependsList(); D.end() == false; ++D) + { + if (D->Type != pkgCache::Dep::PreDepends) + continue; + SPtrArray<Version *> VL = D.AllTargets(); + for (Version **I = VL; *I != 0; ++I) + { + VerIterator V(Cache,*I); + PkgIterator P = V.ParentPkg(); + // we are checking for installation as an easy 'protection' against or-groups and (unchosen) providers + if (P->CurrentVer == 0 || P != Pkg || (P.CurrentVer() != V && Cache[P].InstallVer != V)) + continue; + circle = true; + break; + } + if (circle == true) + break; + } + if (circle == true) + { + if (Debug) + clog << OutputInDepth(Depth) << " Avoiding " << End << " avoided as " << BrokenPkg.FullName() << " has a pre-depends on " << Pkg.FullName() << std::endl; + continue; + } + else + { + if (Debug) + { + clog << OutputInDepth(Depth) << " Unpacking " << BrokenPkg.FullName() << " to avoid " << End; + if (PkgLoop == true) + clog << " (Looping)"; + clog << std::endl; + } + if (PkgLoop == false) + List->Flag(Pkg,pkgOrderList::Loop); + if (SmartUnPack(BrokenPkg, false, Depth + 1) == true) + { + if (List->IsFlag(BrokenPkg,pkgOrderList::Loop) == false) + Changed = true; + } + if (PkgLoop == false) + List->RmFlag(Pkg,pkgOrderList::Loop); + } + } + } + // Check if a package needs to be removed + else if (Cache[BrokenPkg].Delete() == true && List->IsFlag(BrokenPkg,pkgOrderList::Configured) == false) + { + if (Debug) + clog << OutputInDepth(Depth) << " Removing " << BrokenPkg.FullName() << " to avoid " << End << endl; + SmartRemove(BrokenPkg); + } } } } - } - + } while (Changed == true); + // Check for reverse conflicts. if (CheckRConflicts(Pkg,Pkg.RevDependsList(), instVer.VerStr()) == false) - return false; + return false; for (PrvIterator P = instVer.ProvidesList(); P.end() == false; ++P) if (Pkg->Group != P.OwnerPkg()->Group) CheckRConflicts(Pkg,P.ParentPkg().RevDependsList(),P.ProvideVersion()); + if (PkgLoop) + return true; + List->Flag(Pkg,pkgOrderList::UnPacked,pkgOrderList::States); - if (Immediate == true && instVer->MultiArch == pkgCache::Version::Same) + if (Immediate == true && (instVer->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same) { /* Do lockstep M-A:same unpacking in two phases: First unpack all installed architectures, then the not installed. @@ -619,7 +854,7 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate) Cache[P].InstallVer == 0 || (P.CurrentVer() == Cache[P].InstallVer && (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)) continue; - if (SmartUnPack(P, false) == false) + if (SmartUnPack(P, false, Depth + 1) == false) return false; } if (installed == false && Install(Pkg,FileNames[Pkg->ID]) == false) @@ -631,19 +866,20 @@ bool pkgPackageManager::SmartUnPack(PkgIterator Pkg, bool const Immediate) Cache[P].InstallVer == 0 || (P.CurrentVer() == Cache[P].InstallVer && (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall)) continue; - if (SmartUnPack(P, false) == false) + if (SmartUnPack(P, false, Depth + 1) == false) return false; } } - else if (Install(Pkg,FileNames[Pkg->ID]) == false) + // packages which are already unpacked don't need to be unpacked again + else if (Pkg.State() != pkgCache::PkgIterator::NeedsConfigure && Install(Pkg,FileNames[Pkg->ID]) == false) return false; - // Perform immedate configuration of the package. - if (Immediate == true && - List->IsFlag(Pkg,pkgOrderList::Immediate) == true) - if (SmartConfigure(Pkg) == false) - return _error->Error(_("Could not perform immediate configuration on '%s'. " - "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.Name(),2); + if (Immediate == true) { + // Perform immedate configuration of the package. + if (SmartConfigure(Pkg, Depth + 1) == false) + _error->Warning(_("Could not perform immediate configuration on '%s'. " + "Please see man 5 apt.conf under APT::Immediate-Configure for details. (%d)"),Pkg.FullName().c_str(),2); + } return true; } @@ -677,18 +913,25 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall() for (pkgOrderList::iterator I = List->begin(); I != List->end(); ++I) { PkgIterator Pkg(Cache,*I); - + if (List->IsNow(Pkg) == false) { - if (Debug == true) - clog << "Skipping already done " << Pkg.Name() << endl; + if (!List->IsFlag(Pkg,pkgOrderList::Configured) && !NoImmConfigure) { + if (SmartConfigure(Pkg, 0) == false && Debug) + _error->Warning("Internal Error, Could not configure %s",Pkg.FullName().c_str()); + // FIXME: The above warning message might need changing + } else { + if (Debug == true) + clog << "Skipping already done " << Pkg.FullName() << endl; + } continue; + } if (List->IsMissing(Pkg) == true) { if (Debug == true) - clog << "Sequence completed at " << Pkg.Name() << endl; + clog << "Sequence completed at " << Pkg.FullName() << endl; if (DoneSomething == false) { _error->Error("Internal Error, ordering was unable to handle the media swap"); @@ -702,7 +945,7 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall() Pkg.State() == pkgCache::PkgIterator::NeedsNothing && (Cache[Pkg].iFlags & pkgDepCache::ReInstall) != pkgDepCache::ReInstall) { - _error->Error("Internal Error, trying to manipulate a kept package (%s)",Pkg.Name()); + _error->Error("Internal Error, trying to manipulate a kept package (%s)",Pkg.FullName().c_str()); return Failed; } @@ -713,9 +956,16 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall() return Failed; } else - if (SmartUnPack(Pkg) == false) + if (SmartUnPack(Pkg,List->IsFlag(Pkg,pkgOrderList::Immediate),0) == false) return Failed; DoneSomething = true; + + if (ImmConfigureAll) { + /* ConfigureAll here to pick up and packages left unconfigured becuase they were unpacked in the + "PreUnpack Checks" section */ + if (!ConfigureAll()) + return Failed; + } } // Final run through the configure phase @@ -728,10 +978,10 @@ pkgPackageManager::OrderResult pkgPackageManager::OrderInstall() if (List->IsFlag(*I,pkgOrderList::Configured) == false) { _error->Error("Internal error, packages left unconfigured. %s", - PkgIterator(Cache,*I).Name()); + PkgIterator(Cache,*I).FullName().c_str()); return Failed; } - } + } return Completed; } @@ -763,4 +1013,4 @@ pkgPackageManager::OrderResult pkgPackageManager::DoInstall(int statusFd) return DoInstallPostFork(statusFd); } - /*}}}*/ + /*}}}*/ diff --git a/apt-pkg/packagemanager.h b/apt-pkg/packagemanager.h index 053b4dc13..1a6a9f01c 100644 --- a/apt-pkg/packagemanager.h +++ b/apt-pkg/packagemanager.h @@ -23,14 +23,16 @@ #ifndef PKGLIB_PACKAGEMANAGER_H #define PKGLIB_PACKAGEMANAGER_H +#include <apt-pkg/pkgcache.h> #include <string> #include <iostream> -#include <apt-pkg/pkgcache.h> -#include <apt-pkg/depcache.h> #include <set> +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/depcache.h> using std::string; +#endif class pkgAcquire; class pkgDepCache; @@ -42,12 +44,15 @@ class pkgPackageManager : protected pkgCache::Namespace public: enum OrderResult {Completed,Failed,Incomplete}; + static bool SigINTStop; protected: - string *FileNames; + std::string *FileNames; pkgDepCache &Cache; pkgOrderList *List; bool Debug; + bool NoImmConfigure; + bool ImmConfigureAll; /** \brief saves packages dpkg let disappear @@ -57,7 +62,6 @@ class pkgPackageManager : protected pkgCache::Namespace */ std::set<std::string> disappearedPkgs; - bool DepAdd(pkgOrderList &Order,PkgIterator P,int Depth = 0); void ImmediateAdd(PkgIterator P, bool UseInstallVer, unsigned const int &Depth = 0); virtual OrderResult OrderInstall(); bool CheckRConflicts(PkgIterator Pkg,DepIterator Dep,const char *Ver); @@ -68,15 +72,15 @@ class pkgPackageManager : protected pkgCache::Namespace // Install helpers bool ConfigureAll(); - bool SmartConfigure(PkgIterator Pkg); + bool SmartConfigure(PkgIterator Pkg, int const Depth); //FIXME: merge on abi break bool SmartUnPack(PkgIterator Pkg); - bool SmartUnPack(PkgIterator Pkg, bool const Immediate); + bool SmartUnPack(PkgIterator Pkg, bool const Immediate, int const Depth); bool SmartRemove(PkgIterator Pkg); - bool EarlyRemove(PkgIterator Pkg); + bool EarlyRemove(PkgIterator Pkg); // The Actual installation implementation - virtual bool Install(PkgIterator /*Pkg*/,string /*File*/) {return false;}; + virtual bool Install(PkgIterator /*Pkg*/,std::string /*File*/) {return false;}; virtual bool Configure(PkgIterator /*Pkg*/) {return false;}; virtual bool Remove(PkgIterator /*Pkg*/,bool /*Purge*/=false) {return false;}; virtual bool Go(int statusFd=-1) {return true;}; diff --git a/apt-pkg/pkgcache.cc b/apt-pkg/pkgcache.cc index 6db025bd0..997c70768 100644 --- a/apt-pkg/pkgcache.cc +++ b/apt-pkg/pkgcache.cc @@ -20,6 +20,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/pkgcache.h> #include <apt-pkg/policy.h> #include <apt-pkg/version.h> @@ -29,13 +31,12 @@ #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/macros.h> -#include <apti18n.h> - #include <string> #include <sys/stat.h> #include <unistd.h> - #include <ctype.h> + +#include <apti18n.h> /*}}}*/ using std::string; @@ -84,6 +85,8 @@ pkgCache::Header::Header() memset(PkgHashTable,0,sizeof(PkgHashTable)); memset(GrpHashTable,0,sizeof(GrpHashTable)); memset(Pools,0,sizeof(Pools)); + + CacheFileSize = 0; } /*}}}*/ // Cache::Header::CheckSizes - Check if the two headers have same *sz /*{{{*/ @@ -155,6 +158,9 @@ bool pkgCache::ReMap(bool const &Errorchecks) HeaderP->CheckSizes(DefHeader) == false) return _error->Error(_("The package cache file is an incompatible version")); + if (Map.Size() < HeaderP->CacheFileSize) + return _error->Error(_("The package cache file is corrupted, it is too small")); + // Locate our VS.. if (HeaderP->VerSysName == 0 || (VS = pkgVersioningSystem::GetVS(StrP + HeaderP->VerSysName)) == 0) @@ -484,7 +490,7 @@ pkgCache::PkgIterator::CurVersion() const if they provide no new information (e.g. there is no newer version than candidate) If no version and/or section can be found "none" is used. */ std::ostream& -operator<<(ostream& out, pkgCache::PkgIterator Pkg) +operator<<(std::ostream& out, pkgCache::PkgIterator Pkg) { if (Pkg.end() == true) return out << "invalid package"; @@ -613,13 +619,12 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const // Walk along the actual package providing versions for (VerIterator I = DPkg.VersionList(); I.end() == false; ++I) { - if (Owner->VS->CheckDep(I.VerStr(),S->CompareOp,TargetVer()) == false) + if (IsIgnorable(I.ParentPkg()) == true) continue; - if (IsNegative() == true && - ParentPkg() == I.ParentPkg()) + if (Owner->VS->CheckDep(I.VerStr(),S->CompareOp,TargetVer()) == false) continue; - + Size++; if (Res != 0) *End++ = I; @@ -628,13 +633,12 @@ pkgCache::Version **pkgCache::DepIterator::AllTargets() const // Follow all provides for (PrvIterator I = DPkg.ProvidesList(); I.end() == false; ++I) { - if (Owner->VS->CheckDep(I.ProvideVersion(),S->CompareOp,TargetVer()) == false) + if (IsIgnorable(I) == true) continue; - - if (IsNegative() == true && - ParentPkg()->Group == I.OwnerPkg()->Group) + + if (Owner->VS->CheckDep(I.ProvideVersion(),S->CompareOp,TargetVer()) == false) continue; - + Size++; if (Res != 0) *End++ = I.OwnerVer(); @@ -676,10 +680,38 @@ void pkgCache::DepIterator::GlobOr(DepIterator &Start,DepIterator &End) } } /*}}}*/ +// DepIterator::IsIgnorable - should this packag/providr be ignored? /*{{{*/ +// --------------------------------------------------------------------- +/* Deps like self-conflicts should be ignored as well as implicit conflicts + on virtual packages. */ +bool pkgCache::DepIterator::IsIgnorable(PkgIterator const &Pkg) const +{ + if (ParentPkg() == TargetPkg()) + return IsNegative(); + + return false; +} +bool pkgCache::DepIterator::IsIgnorable(PrvIterator const &Prv) const +{ + if (IsNegative() == false) + return false; + + PkgIterator const Pkg = ParentPkg(); + /* Provides may never be applied against the same package (or group) + if it is a conflicts. See the comment above. */ + if (Prv.OwnerPkg()->Group == Pkg->Group) + return true; + // Implicit group-conflicts should not be applied on providers of other groups + if (Pkg->Group == TargetPkg()->Group && Prv.OwnerPkg()->Group != Pkg->Group) + return true; + + return false; +} + /*}}}*/ // ostream operator to handle string representation of a dependecy /*{{{*/ // --------------------------------------------------------------------- /* */ -std::ostream& operator<<(ostream& out, pkgCache::DepIterator D) +std::ostream& operator<<(std::ostream& out, pkgCache::DepIterator D) { if (D.end() == true) return out << "invalid dependency"; @@ -749,9 +781,6 @@ bool pkgCache::VerIterator::Automatic() const return false; } /*}}}*/ -// VerIterator::Pseudo - deprecated no-op method /*{{{*/ -bool pkgCache::VerIterator::Pseudo() const { return false; } - /*}}}*/ // VerIterator::NewestFile - Return the newest file version relation /*{{{*/ // --------------------------------------------------------------------- /* This looks at the version numbers associated with all of the sources @@ -891,11 +920,22 @@ pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescription() const { pkgCache::DescIterator Desc = DescriptionList(); for (; Desc.end() == false; ++Desc) - if (*l == Desc.LanguageCode() || - (*l == "en" && strcmp(Desc.LanguageCode(),"") == 0)) + if (*l == Desc.LanguageCode()) break; if (Desc.end() == true) - continue; + { + if (*l == "en") + { + Desc = DescriptionList(); + for (; Desc.end() == false; ++Desc) + if (strcmp(Desc.LanguageCode(), "") == 0) + break; + if (Desc.end() == true) + continue; + } + else + continue; + } return Desc; } for (pkgCache::DescIterator Desc = DescriptionList(); diff --git a/apt-pkg/pkgcache.h b/apt-pkg/pkgcache.h index 1b1743724..1a7013551 100644 --- a/apt-pkg/pkgcache.h +++ b/apt-pkg/pkgcache.h @@ -74,13 +74,14 @@ #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 /*{{{*/ { @@ -152,10 +153,10 @@ class pkgCache /*{{{*/ protected: // Memory mapped cache file - string CacheFile; + std::string CacheFile; MMap ⤅ - unsigned long sHash(const string &S) const; + unsigned long sHash(const std::string &S) const; unsigned long sHash(const char *S) const; public: @@ -180,16 +181,16 @@ class pkgCache /*{{{*/ inline void *DataEnd() {return ((unsigned char *)Map.Data()) + Map.Size();}; // String hashing function (512 range) - inline unsigned long Hash(const string &S) const {return sHash(S);}; + inline unsigned long Hash(const std::string &S) const {return sHash(S);}; inline unsigned long Hash(const char *S) const {return sHash(S);}; // Useful transformation things const char *Priority(unsigned char Priority); // Accessors - GrpIterator FindGrp(const string &Name); - PkgIterator FindPkg(const string &Name); - PkgIterator FindPkg(const string &Name, const string &Arch); + GrpIterator FindGrp(const std::string &Name); + PkgIterator FindPkg(const std::string &Name); + PkgIterator FindPkg(const std::string &Name, const std::string &Arch); Header &Head() {return *HeaderP;}; inline GrpIterator GrpBegin(); @@ -200,6 +201,7 @@ class pkgCache /*{{{*/ inline PkgFileIterator FileEnd(); inline bool MultiArchCache() const { return MultiArchEnabled; }; + inline char const * const NativeArch() const; // Make me a function pkgVersioningSystem *VS; @@ -214,8 +216,7 @@ class pkgCache /*{{{*/ private: bool MultiArchEnabled; - PkgIterator SingleArchFindPkg(const string &Name); - inline char const * const NativeArch() const; + PkgIterator SingleArchFindPkg(const std::string &Name); }; /*}}}*/ // Header structure /*{{{*/ @@ -314,6 +315,9 @@ struct pkgCache::Header map_ptrloc PkgHashTable[2*1048]; map_ptrloc GrpHashTable[2*1048]; + /** \brief Size of the complete cache file */ + unsigned long CacheFileSize; + bool CheckSizes(Header &Against) const; Header(); }; @@ -500,15 +504,20 @@ struct pkgCache::Version map_ptrloc VerStr; // StringItem /** \brief section this version is filled in */ map_ptrloc Section; // StringItem + + /** \brief Multi-Arch capabilities of a package version */ + enum VerMultiArch { None = 0, /*!< is the default and doesn't trigger special behaviour */ + All = (1<<0), /*!< will cause that Ver.Arch() will report "all" */ + Foreign = (1<<1), /*!< can satisfy dependencies in another architecture */ + Same = (1<<2), /*!< can be co-installed with itself from other architectures */ + Allowed = (1<<3), /*!< other packages are allowed to depend on thispkg:any */ + AllForeign = All | Foreign, + AllAllowed = All | Allowed }; /** \brief stores the MultiArch capabilities of this version - None is the default and doesn't trigger special behaviour, - Foreign means that this version can fulfill dependencies even - if it is built for another architecture as the requester. - Same indicates that builds for different architectures can - be co-installed on the system */ - /* FIXME: A bitflag would be better with the next abibreak… */ - enum {None, All, Foreign, Same, Allowed, AllForeign, AllAllowed} MultiArch; + Flags used are defined in pkgCache::Version::VerMultiArch + */ + unsigned char MultiArch; /** \brief references all the PackageFile's that this version came from diff --git a/apt-pkg/pkgcachegen.cc b/apt-pkg/pkgcachegen.cc index dc5a830bd..ec072fddd 100644 --- a/apt-pkg/pkgcachegen.cc +++ b/apt-pkg/pkgcachegen.cc @@ -10,7 +10,7 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#define APT_COMPATIBILITY 986 +#include <config.h> #include <apt-pkg/pkgcachegen.h> #include <apt-pkg/error.h> @@ -23,21 +23,26 @@ #include <apt-pkg/sptr.h> #include <apt-pkg/pkgsystem.h> #include <apt-pkg/macros.h> - #include <apt-pkg/tagfile.h> - -#include <apti18n.h> +#include <apt-pkg/metaindex.h> +#include <apt-pkg/fileutl.h> #include <vector> - #include <sys/stat.h> #include <unistd.h> #include <errno.h> #include <stdio.h> + +#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 */ @@ -98,6 +103,7 @@ pkgCacheGenerator::~pkgCacheGenerator() return; Cache.HeaderP->Dirty = false; + Cache.HeaderP->CacheFileSize = Map.Size(); Map.Sync(0,sizeof(pkgCache::Header)); } /*}}}*/ @@ -181,82 +187,154 @@ bool pkgCacheGenerator::MergeList(ListParser &List, if (PackageName.empty() == true) return false; - string const Arch = List.Architecture(); - + Counter++; + if (Counter % 100 == 0 && Progress != 0) + Progress->Progress(List.Offset()); + + string Arch = List.Architecture(); + string const Version = List.Version(); + if (Version.empty() == true && Arch.empty() == true) + { + if (MergeListGroup(List, PackageName) == false) + return false; + } + + if (Arch.empty() == true) + Arch = _config->Find("APT::Architecture"); + // Get a pointer to the package structure pkgCache::PkgIterator Pkg; Dynamic<pkgCache::PkgIterator> DynPkg(Pkg); if (NewPackage(Pkg, PackageName, Arch) == false) - return _error->Error(_("Error occurred while processing %s (NewPackage)"),PackageName.c_str()); - Counter++; - if (Counter % 100 == 0 && Progress != 0) - Progress->Progress(List.Offset()); + // TRANSLATOR: The first placeholder is a package name, + // the other two should be copied verbatim as they include debug info + return _error->Error(_("Error occurred while processing %s (%s%d)"), + PackageName.c_str(), "NewPackage", 1); + - /* Get a pointer to the version structure. We know the list is sorted - so we use that fact in the search. Insertion of new versions is - done with correct sorting */ - string Version = List.Version(); if (Version.empty() == true) { - // we first process the package, then the descriptions - // (this has the bonus that we get MMap error when we run out - // of MMap space) - pkgCache::VerIterator Ver(Cache); - Dynamic<pkgCache::VerIterator> DynVer(Ver); - if (List.UsePackage(Pkg, Ver) == false) - return _error->Error(_("Error occurred while processing %s (UsePackage1)"), - PackageName.c_str()); - - // Find the right version to write the description - MD5SumValue CurMd5 = List.Description_md5(); - Ver = Pkg.VersionList(); - - for (; Ver.end() == false; ++Ver) - { - pkgCache::DescIterator Desc = Ver.DescriptionList(); - Dynamic<pkgCache::DescIterator> DynDesc(Desc); - map_ptrloc *LastDesc = &Ver->DescriptionList; - bool duplicate=false; - - // don't add a new description if we have one for the given - // md5 && language - for ( ; Desc.end() == false; ++Desc) - if (MD5SumValue(Desc.md5()) == CurMd5 && - Desc.LanguageCode() == List.DescriptionLanguage()) - duplicate=true; - if(duplicate) - continue; - - for (Desc = Ver.DescriptionList(); - Desc.end() == false; - LastDesc = &Desc->NextDesc, ++Desc) - { - if (MD5SumValue(Desc.md5()) == CurMd5) - { - // Add new description - void const * const oldMap = Map.Data(); - map_ptrloc const descindex = NewDescription(Desc, List.DescriptionLanguage(), CurMd5, *LastDesc); - if (oldMap != Map.Data()) - LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap; - *LastDesc = descindex; - Desc->ParentPkg = Pkg.Index(); - - if ((*LastDesc == 0 && _error->PendingError()) || NewFileDesc(Desc,List) == false) - return _error->Error(_("Error occurred while processing %s (NewFileDesc1)"),PackageName.c_str()); - break; - } - } - } + if (MergeListPackage(List, Pkg) == false) + return false; + } + else + { + if (MergeListVersion(List, Pkg, Version, OutVer) == false) + return false; + } - continue; + if (OutVer != 0) + { + FoundFileDeps |= List.HasFileDeps(); + return true; } + } - pkgCache::VerIterator Ver = Pkg.VersionList(); - Dynamic<pkgCache::VerIterator> DynVer(Ver); - map_ptrloc *LastVer = &Pkg->VersionList; - void const * oldMap = Map.Data(); + if (Cache.HeaderP->PackageCount >= (1ULL<<sizeof(Cache.PkgP->ID)*8)-1) + return _error->Error(_("Wow, you exceeded the number of package " + "names this APT is capable of.")); + if (Cache.HeaderP->VersionCount >= (1ULL<<(sizeof(Cache.VerP->ID)*8))-1) + return _error->Error(_("Wow, you exceeded the number of versions " + "this APT is capable of.")); + if (Cache.HeaderP->DescriptionCount >= (1ULL<<(sizeof(Cache.DescP->ID)*8))-1) + return _error->Error(_("Wow, you exceeded the number of descriptions " + "this APT is capable of.")); + if (Cache.HeaderP->DependsCount >= (1ULL<<(sizeof(Cache.DepP->ID)*8))-1ULL) + return _error->Error(_("Wow, you exceeded the number of dependencies " + "this APT is capable of.")); + + FoundFileDeps |= List.HasFileDeps(); + return true; +} +// CacheGenerator::MergeListGroup /*{{{*/ +bool pkgCacheGenerator::MergeListGroup(ListParser &List, std::string const &GrpName) +{ + pkgCache::GrpIterator Grp = Cache.FindGrp(GrpName); + // a group has no data on it's own, only packages have it but these + // stanzas like this come from Translation- files to add descriptions, + // but without a version we don't need a description for it… + if (Grp.end() == true) + return true; + Dynamic<pkgCache::GrpIterator> DynGrp(Grp); + + pkgCache::PkgIterator Pkg; + Dynamic<pkgCache::PkgIterator> DynPkg(Pkg); + for (Pkg = Grp.PackageList(); Pkg.end() == false; Pkg = Grp.NextPkg(Pkg)) + if (MergeListPackage(List, Pkg) == false) + return false; + + return true; +} + /*}}}*/ +// CacheGenerator::MergeListPackage /*{{{*/ +bool pkgCacheGenerator::MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg) +{ + // we first process the package, then the descriptions + // (for deb this package processing is in fact a no-op) + pkgCache::VerIterator Ver(Cache); + Dynamic<pkgCache::VerIterator> DynVer(Ver); + if (List.UsePackage(Pkg, Ver) == false) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "UsePackage", 1); + + // Find the right version to write the description + MD5SumValue CurMd5 = List.Description_md5(); + std::string CurLang = List.DescriptionLanguage(); + + for (Ver = Pkg.VersionList(); Ver.end() == false; ++Ver) + { + pkgCache::DescIterator Desc = Ver.DescriptionList(); + + // a version can only have one md5 describing it + if (MD5SumValue(Desc.md5()) != CurMd5) + continue; + + // don't add a new description if we have one for the given + // md5 && language + if (IsDuplicateDescription(Desc, CurMd5, CurLang) == true) + continue; + + Dynamic<pkgCache::DescIterator> DynDesc(Desc); + // we add at the end, so that the start is constant as we need + // that to be able to efficiently share these lists + map_ptrloc *LastDesc = &Ver->DescriptionList; + for (;Desc.end() == false && Desc->NextDesc != 0; ++Desc); + if (Desc.end() == false) + LastDesc = &Desc->NextDesc; + + void const * const oldMap = Map.Data(); + map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, *LastDesc); + if (oldMap != Map.Data()) + LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap; + *LastDesc = descindex; + Desc->ParentPkg = Pkg.Index(); + + if ((*LastDesc == 0 && _error->PendingError()) || NewFileDesc(Desc,List) == false) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewFileDesc", 1); + + // we can stop here as all "same" versions will share the description + break; + } + + return true; +} + /*}}}*/ +// CacheGenerator::MergeListVersion /*{{{*/ +bool pkgCacheGenerator::MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg, + std::string const &Version, pkgCache::VerIterator* &OutVer) +{ + pkgCache::VerIterator Ver = Pkg.VersionList(); + Dynamic<pkgCache::VerIterator> DynVer(Ver); + map_ptrloc *LastVer = &Pkg->VersionList; + void const * oldMap = Map.Data(); + + unsigned long const Hash = List.VersionHash(); + if (Ver.end() == false) + { + /* We know the list is sorted so we use that fact in the search. + Insertion of new versions is done with correct sorting */ int Res = 1; - unsigned long const Hash = List.VersionHash(); for (; Ver.end() == false; LastVer = &Ver->NextVer, Ver++) { Res = Cache.VS->CmpVersion(Version,Ver.VerStr()); @@ -274,94 +352,123 @@ bool pkgCacheGenerator::MergeList(ListParser &List, if (Res == 0 && Ver.end() == false && Ver->Hash == Hash) { if (List.UsePackage(Pkg,Ver) == false) - return _error->Error(_("Error occurred while processing %s (UsePackage2)"), - PackageName.c_str()); + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "UsePackage", 2); if (NewFileVer(Ver,List) == false) - return _error->Error(_("Error occurred while processing %s (NewFileVer1)"), - PackageName.c_str()); - + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewFileVer", 1); + // Read only a single record and return if (OutVer != 0) { *OutVer = Ver; - FoundFileDeps |= List.HasFileDeps(); return true; } - - continue; + + return true; } + } - // Add a new version - map_ptrloc const verindex = NewVersion(Ver,Version,*LastVer); - if (verindex == 0 && _error->PendingError()) - return _error->Error(_("Error occurred while processing %s (NewVersion%d)"), - PackageName.c_str(), 1); + // Add a new version + map_ptrloc const verindex = NewVersion(Ver,Version,*LastVer); + if (verindex == 0 && _error->PendingError()) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewVersion", 1); - if (oldMap != Map.Data()) + if (oldMap != Map.Data()) LastVer += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap; - *LastVer = verindex; - Ver->ParentPkg = Pkg.Index(); - Ver->Hash = Hash; + *LastVer = verindex; + Ver->ParentPkg = Pkg.Index(); + Ver->Hash = Hash; - if (List.NewVersion(Ver) == false) - return _error->Error(_("Error occurred while processing %s (NewVersion%d)"), - PackageName.c_str(), 2); + if (unlikely(List.NewVersion(Ver) == false)) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewVersion", 2); - if (List.UsePackage(Pkg,Ver) == false) - return _error->Error(_("Error occurred while processing %s (UsePackage3)"), - PackageName.c_str()); - - if (NewFileVer(Ver,List) == false) - return _error->Error(_("Error occurred while processing %s (NewVersion%d)"), - PackageName.c_str(), 3); + if (unlikely(List.UsePackage(Pkg,Ver) == false)) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "UsePackage", 3); - // Read only a single record and return - if (OutVer != 0) - { - *OutVer = Ver; - FoundFileDeps |= List.HasFileDeps(); - return true; - } + if (unlikely(NewFileVer(Ver,List) == false)) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewFileVer", 2); - /* Record the Description data. Description data always exist in - Packages and Translation-* files. */ - pkgCache::DescIterator Desc = Ver.DescriptionList(); - Dynamic<pkgCache::DescIterator> DynDesc(Desc); - map_ptrloc *LastDesc = &Ver->DescriptionList; + pkgCache::GrpIterator Grp = Pkg.Group(); + Dynamic<pkgCache::GrpIterator> DynGrp(Grp); - // Skip to the end of description set - for (; Desc.end() == false; LastDesc = &Desc->NextDesc, Desc++); + /* If it is the first version of this package we need to add implicit + Multi-Arch dependencies to all other package versions in the group now - + otherwise we just add them for this new version */ + if (Pkg.VersionList()->NextVer == 0) + { + pkgCache::PkgIterator P = Grp.PackageList(); + Dynamic<pkgCache::PkgIterator> DynP(P); + for (; P.end() != true; P = Grp.NextPkg(P)) + { + if (P->ID == Pkg->ID) + continue; + pkgCache::VerIterator V = P.VersionList(); + Dynamic<pkgCache::VerIterator> DynV(V); + for (; V.end() != true; ++V) + if (unlikely(AddImplicitDepends(V, Pkg) == false)) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "AddImplicitDepends", 1); + } + } + if (unlikely(AddImplicitDepends(Grp, Pkg, Ver) == false)) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "AddImplicitDepends", 2); - // Add new description - oldMap = Map.Data(); - map_ptrloc const descindex = NewDescription(Desc, List.DescriptionLanguage(), List.Description_md5(), *LastDesc); - if (oldMap != Map.Data()) - LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap; - *LastDesc = descindex; - Desc->ParentPkg = Pkg.Index(); + // Read only a single record and return + if (OutVer != 0) + { + *OutVer = Ver; + return true; + } - if ((*LastDesc == 0 && _error->PendingError()) || NewFileDesc(Desc,List) == false) - return _error->Error(_("Error occurred while processing %s (NewFileDesc2)"),PackageName.c_str()); + /* Record the Description (it is not translated) */ + MD5SumValue CurMd5 = List.Description_md5(); + if (CurMd5.Value().empty() == true) + return true; + std::string CurLang = List.DescriptionLanguage(); + + /* Before we add a new description we first search in the group for + a version with a description of the same MD5 - if so we reuse this + description group instead of creating our own for this version */ + for (pkgCache::PkgIterator P = Grp.PackageList(); + P.end() == false; P = Grp.NextPkg(P)) + { + for (pkgCache::VerIterator V = P.VersionList(); + V.end() == false; ++V) + { + if (IsDuplicateDescription(V.DescriptionList(), CurMd5, "") == false) + continue; + Ver->DescriptionList = V->DescriptionList; + return true; + } } - FoundFileDeps |= List.HasFileDeps(); + // We haven't found reusable descriptions, so add the first description + pkgCache::DescIterator Desc = Ver.DescriptionList(); + Dynamic<pkgCache::DescIterator> DynDesc(Desc); + map_ptrloc *LastDesc = &Ver->DescriptionList; + + oldMap = Map.Data(); + map_ptrloc const descindex = NewDescription(Desc, CurLang, CurMd5, *LastDesc); + if (oldMap != Map.Data()) + LastDesc += (map_ptrloc*) Map.Data() - (map_ptrloc*) oldMap; + *LastDesc = descindex; + Desc->ParentPkg = Pkg.Index(); + + if ((*LastDesc == 0 && _error->PendingError()) || NewFileDesc(Desc,List) == false) + return _error->Error(_("Error occurred while processing %s (%s%d)"), + Pkg.Name(), "NewFileDesc", 2); - if (Cache.HeaderP->PackageCount >= (1ULL<<sizeof(Cache.PkgP->ID)*8)-1) - return _error->Error(_("Wow, you exceeded the number of package " - "names this APT is capable of.")); - if (Cache.HeaderP->VersionCount >= (1ULL<<(sizeof(Cache.VerP->ID)*8))-1) - return _error->Error(_("Wow, you exceeded the number of versions " - "this APT is capable of.")); - if (Cache.HeaderP->DescriptionCount >= (1ULL<<(sizeof(Cache.DescP->ID)*8))-1) - return _error->Error(_("Wow, you exceeded the number of descriptions " - "this APT is capable of.")); - if (Cache.HeaderP->DependsCount >= (1ULL<<(sizeof(Cache.DepP->ID)*8))-1ULL) - return _error->Error(_("Wow, you exceeded the number of dependencies " - "this APT is capable of.")); return true; } /*}}}*/ + /*}}}*/ // CacheGenerator::MergeFileProvides - Merge file provides /*{{{*/ // --------------------------------------------------------------------- /* If we found any file depends while parsing the main list we need to @@ -386,8 +493,8 @@ bool pkgCacheGenerator::MergeFileProvides(ListParser &List) pkgCache::PkgIterator Pkg = Cache.FindPkg(PackageName); Dynamic<pkgCache::PkgIterator> DynPkg(Pkg); if (Pkg.end() == true) - return _error->Error(_("Error occurred while processing %s (FindPkg)"), - PackageName.c_str()); + return _error->Error(_("Error occurred while processing %s (%s%d)"), + PackageName.c_str(), "FindPkg", 1); Counter++; if (Counter % 100 == 0 && Progress != 0) Progress->Progress(List.Offset()); @@ -400,7 +507,8 @@ bool pkgCacheGenerator::MergeFileProvides(ListParser &List) if (Ver->Hash == Hash && Version.c_str() == Ver.VerStr()) { if (List.CollectFileProvides(Cache,Ver) == false) - return _error->Error(_("Error occurred while processing %s (CollectFileProvides)"),PackageName.c_str()); + return _error->Error(_("Error occurred while processing %s (%s%d)"), + PackageName.c_str(), "CollectFileProvides", 1); break; } } @@ -492,6 +600,75 @@ bool pkgCacheGenerator::NewPackage(pkgCache::PkgIterator &Pkg,const string &Name return true; } /*}}}*/ +// CacheGenerator::AddImplicitDepends /*{{{*/ +bool pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator &G, + pkgCache::PkgIterator &P, + pkgCache::VerIterator &V) +{ + // copy P.Arch() into a string here as a cache remap + // in NewDepends() later may alter the pointer location + string Arch = P.Arch() == NULL ? "" : P.Arch(); + map_ptrloc *OldDepLast = NULL; + /* MultiArch handling introduces a lot of implicit Dependencies: + - MultiArch: same → Co-Installable if they have the same version + - All others conflict with all other group members */ + bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same); + pkgCache::PkgIterator D = G.PackageList(); + Dynamic<pkgCache::PkgIterator> DynD(D); + for (; D.end() != true; D = G.NextPkg(D)) + { + if (Arch == D.Arch() || D->VersionList == 0) + continue; + /* We allow only one installed arch at the time + per group, therefore each group member conflicts + with all other group members */ + if (coInstall == true) + { + // Replaces: ${self}:other ( << ${binary:Version}) + NewDepends(D, V, V.VerStr(), + pkgCache::Dep::Less, pkgCache::Dep::Replaces, + OldDepLast); + // Breaks: ${self}:other (!= ${binary:Version}) + NewDepends(D, V, V.VerStr(), + pkgCache::Dep::NotEquals, pkgCache::Dep::DpkgBreaks, + OldDepLast); + } else { + // Conflicts: ${self}:other + NewDepends(D, V, "", + pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts, + OldDepLast); + } + } + return true; +} +bool pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator &V, + pkgCache::PkgIterator &D) +{ + /* MultiArch handling introduces a lot of implicit Dependencies: + - MultiArch: same → Co-Installable if they have the same version + - All others conflict with all other group members */ + map_ptrloc *OldDepLast = NULL; + bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same); + if (coInstall == true) + { + // Replaces: ${self}:other ( << ${binary:Version}) + NewDepends(D, V, V.VerStr(), + pkgCache::Dep::Less, pkgCache::Dep::Replaces, + OldDepLast); + // Breaks: ${self}:other (!= ${binary:Version}) + NewDepends(D, V, V.VerStr(), + pkgCache::Dep::NotEquals, pkgCache::Dep::DpkgBreaks, + OldDepLast); + } else { + // Conflicts: ${self}:other + NewDepends(D, V, "", + pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts, + OldDepLast); + } + return true; +} + + /*}}}*/ // CacheGenerator::NewFileVer - Create a new File<->Version association /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -610,76 +787,6 @@ map_ptrloc pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc, return Description; } /*}}}*/ -// CacheGenerator::FinishCache - do various finish operations /*{{{*/ -// --------------------------------------------------------------------- -/* This prepares the Cache for delivery */ -bool pkgCacheGenerator::FinishCache(OpProgress *Progress) -{ - // FIXME: add progress reporting for this operation - // Do we have different architectures in your groups ? - vector<string> archs = APT::Configuration::getArchitectures(); - if (archs.size() > 1) - { - // Create Conflicts in between the group - pkgCache::GrpIterator G = GetCache().GrpBegin(); - Dynamic<pkgCache::GrpIterator> DynG(G); - for (; G.end() != true; ++G) - { - string const PkgName = G.Name(); - pkgCache::PkgIterator P = G.PackageList(); - Dynamic<pkgCache::PkgIterator> DynP(P); - for (; P.end() != true; P = G.NextPkg(P)) - { - pkgCache::PkgIterator allPkg; - Dynamic<pkgCache::PkgIterator> DynallPkg(allPkg); - pkgCache::VerIterator V = P.VersionList(); - Dynamic<pkgCache::VerIterator> DynV(V); - for (; V.end() != true; ++V) - { - // copy P.Arch() into a string here as a cache remap - // in NewDepends() later may alter the pointer location - string Arch = P.Arch() == NULL ? "" : P.Arch(); - map_ptrloc *OldDepLast = NULL; - /* MultiArch handling introduces a lot of implicit Dependencies: - - MultiArch: same → Co-Installable if they have the same version - - Architecture: all → Need to be Co-Installable for internal reasons - - All others conflict with all other group members */ - bool const coInstall = ((V->MultiArch & pkgCache::Version::Same) == pkgCache::Version::Same); - for (vector<string>::const_iterator A = archs.begin(); A != archs.end(); ++A) - { - if (*A == Arch) - continue; - /* We allow only one installed arch at the time - per group, therefore each group member conflicts - with all other group members */ - pkgCache::PkgIterator D = G.FindPkg(*A); - Dynamic<pkgCache::PkgIterator> DynD(D); - if (D.end() == true) - continue; - if (coInstall == true) - { - // Replaces: ${self}:other ( << ${binary:Version}) - NewDepends(D, V, V.VerStr(), - pkgCache::Dep::Less, pkgCache::Dep::Replaces, - OldDepLast); - // Breaks: ${self}:other (!= ${binary:Version}) - NewDepends(D, V, V.VerStr(), - pkgCache::Dep::NotEquals, pkgCache::Dep::DpkgBreaks, - OldDepLast); - } else { - // Conflicts: ${self}:other - NewDepends(D, V, "", - pkgCache::Dep::NoOp, pkgCache::Dep::Conflicts, - OldDepLast); - } - } - } - } - } - } - return true; -} - /*}}}*/ // CacheGenerator::NewDepends - Create a dependency element /*{{{*/ // --------------------------------------------------------------------- /* This creates a dependency element in the tree. It is linked to the @@ -1116,14 +1223,14 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress 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); @@ -1242,9 +1349,6 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress if (BuildCache(Gen,Progress,CurrentSize,TotalSize, Files.begin()+EndOfSource,Files.end()) == false) return false; - - // FIXME: move me to a better place - Gen.FinishCache(Progress); } else { @@ -1287,9 +1391,6 @@ bool pkgCacheGenerator::MakeStatusCache(pkgSourceList &List,OpProgress *Progress if (BuildCache(Gen,Progress,CurrentSize,TotalSize, Files.begin()+EndOfSource,Files.end()) == false) return false; - - // FIXME: move me to a better place - Gen.FinishCache(Progress); } if (Debug == true) std::clog << "Caches are ready for shipping" << std::endl; @@ -1319,7 +1420,7 @@ __deprecated bool pkgMakeOnlyStatusCache(OpProgress &Progress,DynamicMMap **OutM { 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; @@ -1340,9 +1441,6 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O Files.begin()+EndOfSource,Files.end()) == false) return false; - // FIXME: move me to a better place - Gen.FinishCache(Progress); - if (_error->PendingError() == true) return false; *OutMap = Map.UnGuard(); @@ -1350,3 +1448,22 @@ bool pkgCacheGenerator::MakeOnlyStatusCache(OpProgress *Progress,DynamicMMap **O return true; } /*}}}*/ +// IsDuplicateDescription /*{{{*/ +bool IsDuplicateDescription(pkgCache::DescIterator Desc, + MD5SumValue const &CurMd5, std::string const &CurLang) +{ + // Descriptions in the same link-list have all the same md5 + if (MD5SumValue(Desc.md5()) != CurMd5) + return false; + for (; Desc.end() == false; ++Desc) + if (Desc.LanguageCode() == CurLang) + return true; + return false; +} + /*}}}*/ +// CacheGenerator::FinishCache /*{{{*/ +bool pkgCacheGenerator::FinishCache(OpProgress *Progress) +{ + return true; +} + /*}}}*/ diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h index c26051182..b6259b433 100644 --- a/apt-pkg/pkgcachegen.h +++ b/apt-pkg/pkgcachegen.h @@ -22,6 +22,7 @@ #include <apt-pkg/pkgcache.h> #include <apt-pkg/md5.h> +#include <apt-pkg/macros.h> #include <vector> @@ -63,29 +64,29 @@ class pkgCacheGenerator /*{{{*/ pkgCache Cache; OpProgress *Progress; - string PkgFileName; + std::string PkgFileName; pkgCache::PackageFile *CurrentFile; // Flag file dependencies bool FoundFileDeps; - bool NewGroup(pkgCache::GrpIterator &Grp,const string &Name); - bool NewPackage(pkgCache::PkgIterator &Pkg,const string &Name, const string &Arch); + bool NewGroup(pkgCache::GrpIterator &Grp,const std::string &Name); + bool NewPackage(pkgCache::PkgIterator &Pkg,const std::string &Name, const std::string &Arch); bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List); bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List); bool NewDepends(pkgCache::PkgIterator &Pkg, pkgCache::VerIterator &Ver, - string const &Version, unsigned int const &Op, + std::string const &Version, unsigned int const &Op, unsigned int const &Type, map_ptrloc* &OldDepLast); - unsigned long NewVersion(pkgCache::VerIterator &Ver,const string &VerStr,unsigned long Next); - map_ptrloc NewDescription(pkgCache::DescIterator &Desc,const string &Lang,const MD5SumValue &md5sum,map_ptrloc Next); + unsigned long NewVersion(pkgCache::VerIterator &Ver,const std::string &VerStr,unsigned long Next); + map_ptrloc NewDescription(pkgCache::DescIterator &Desc,const std::string &Lang,const MD5SumValue &md5sum,map_ptrloc Next); public: unsigned long WriteUniqString(const char *S,unsigned int Size); - inline unsigned long WriteUniqString(const string &S) {return WriteUniqString(S.c_str(),S.length());}; + inline unsigned long WriteUniqString(const std::string &S) {return WriteUniqString(S.c_str(),S.length());}; void DropProgress() {Progress = 0;}; - bool SelectFile(const string &File,const string &Site,pkgIndexFile const &Index, + bool SelectFile(const std::string &File,const std::string &Site,pkgIndexFile const &Index, unsigned long Flags = 0); bool MergeList(ListParser &List,pkgCache::VerIterator *Ver = 0); inline pkgCache &GetCache() {return Cache;}; @@ -94,7 +95,7 @@ class pkgCacheGenerator /*{{{*/ bool HasFileDeps() {return FoundFileDeps;}; bool MergeFileProvides(ListParser &List); - bool FinishCache(OpProgress *Progress); + __deprecated bool FinishCache(OpProgress *Progress); static bool MakeStatusCache(pkgSourceList &List,OpProgress *Progress, MMap **OutMap = 0,bool AllowMem = false); @@ -105,6 +106,16 @@ class pkgCacheGenerator /*{{{*/ pkgCacheGenerator(DynamicMMap *Map,OpProgress *Progress); ~pkgCacheGenerator(); + + private: + bool MergeListGroup(ListParser &List, std::string const &GrpName); + bool MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg); + bool MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg, + std::string const &Version, pkgCache::VerIterator* &OutVer); + + bool AddImplicitDepends(pkgCache::GrpIterator &G, pkgCache::PkgIterator &P, + pkgCache::VerIterator &V); + bool AddImplicitDepends(pkgCache::VerIterator &V, pkgCache::PkgIterator &D); }; /*}}}*/ // This is the abstract package list parser class. /*{{{*/ @@ -122,26 +133,26 @@ class pkgCacheGenerator::ListParser protected: - inline unsigned long WriteUniqString(string S) {return Owner->WriteUniqString(S);}; + inline unsigned long WriteUniqString(std::string S) {return Owner->WriteUniqString(S);}; inline unsigned long WriteUniqString(const char *S,unsigned int Size) {return Owner->WriteUniqString(S,Size);}; - inline unsigned long WriteString(const string &S) {return Owner->WriteStringInMap(S);}; + inline unsigned long WriteString(const std::string &S) {return Owner->WriteStringInMap(S);}; inline unsigned long WriteString(const char *S,unsigned int Size) {return Owner->WriteStringInMap(S,Size);}; - bool NewDepends(pkgCache::VerIterator &Ver,const string &Package, const string &Arch, - const string &Version,unsigned int Op, + bool NewDepends(pkgCache::VerIterator &Ver,const std::string &Package, const std::string &Arch, + const std::string &Version,unsigned int Op, unsigned int Type); - bool NewProvides(pkgCache::VerIterator &Ver,const string &PkgName, - const string &PkgArch, const string &Version); + bool NewProvides(pkgCache::VerIterator &Ver,const std::string &PkgName, + const std::string &PkgArch, const std::string &Version); public: // These all operate against the current section - virtual string Package() = 0; - virtual string Architecture() = 0; + virtual std::string Package() = 0; + virtual std::string Architecture() = 0; virtual bool ArchitectureAll() = 0; - virtual string Version() = 0; + virtual std::string Version() = 0; virtual bool NewVersion(pkgCache::VerIterator &Ver) = 0; - virtual string Description() = 0; - virtual string DescriptionLanguage() = 0; + virtual std::string Description() = 0; + virtual std::string DescriptionLanguage() = 0; virtual MD5SumValue Description_md5() = 0; virtual unsigned short VersionHash() = 0; virtual bool UsePackage(pkgCache::PkgIterator &Pkg, @@ -164,18 +175,4 @@ bool pkgMakeStatusCache(pkgSourceList &List,OpProgress &Progress, MMap **OutMap = 0,bool AllowMem = false); bool pkgMakeOnlyStatusCache(OpProgress &Progress,DynamicMMap **OutMap); - -#ifdef APT_COMPATIBILITY -#if APT_COMPATIBILITY != 986 -#warning "Using APT_COMPATIBILITY" -#endif -MMap *pkgMakeStatusCacheMem(pkgSourceList &List,OpProgress &Progress) -{ - MMap *Map = 0; - if (pkgCacheGenerator::MakeStatusCache(List,&Progress,&Map,true) == false) - return 0; - return Map; -} -#endif - #endif diff --git a/apt-pkg/pkgrecords.cc b/apt-pkg/pkgrecords.cc index 1a7585d8f..36dab3480 100644 --- a/apt-pkg/pkgrecords.cc +++ b/apt-pkg/pkgrecords.cc @@ -9,18 +9,20 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/pkgrecords.h> #include <apt-pkg/indexfile.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> - -#include <apti18n.h> + +#include <apti18n.h> /*}}}*/ // Records::pkgRecords - Constructor /*{{{*/ // --------------------------------------------------------------------- /* This will create the necessary structures to access the status files */ -pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), +pkgRecords::pkgRecords(pkgCache &Cache) : d(NULL), Cache(Cache), Files(Cache.HeaderP->PackageFileCount) { for (pkgCache::PkgFileIterator I = Cache.FileBegin(); @@ -44,7 +46,7 @@ pkgRecords::pkgRecords(pkgCache &Cache) : Cache(Cache), /* */ pkgRecords::~pkgRecords() { - for ( vector<Parser*>::iterator it = Files.begin(); + for ( std::vector<Parser*>::iterator it = Files.begin(); it != Files.end(); ++it) { diff --git a/apt-pkg/pkgrecords.h b/apt-pkg/pkgrecords.h index c2c98188a..3658435e8 100644 --- a/apt-pkg/pkgrecords.h +++ b/apt-pkg/pkgrecords.h @@ -19,7 +19,6 @@ #include <apt-pkg/pkgcache.h> -#include <apt-pkg/fileutl.h> #include <vector> class pkgRecords /*{{{*/ @@ -28,12 +27,13 @@ class pkgRecords /*{{{*/ class Parser; private: + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; pkgCache &Cache; std::vector<Parser *>Files; - public: - + public: // Lookup function Parser &Lookup(pkgCache::VerFileIterator const &Ver); Parser &Lookup(pkgCache::DescFileIterator const &Desc); @@ -54,20 +54,24 @@ class pkgRecords::Parser /*{{{*/ friend class pkgRecords; // These refer to the archive file for the Version - virtual string FileName() {return string();}; - virtual string MD5Hash() {return string();}; - virtual string SHA1Hash() {return string();}; - virtual string SHA256Hash() {return string();}; - virtual string SourcePkg() {return string();}; - virtual string SourceVer() {return string();}; + virtual std::string FileName() {return std::string();}; + virtual std::string MD5Hash() {return std::string();}; + virtual std::string SHA1Hash() {return std::string();}; + virtual std::string SHA256Hash() {return std::string();}; + virtual std::string SHA512Hash() {return std::string();}; + virtual std::string SourcePkg() {return std::string();}; + virtual std::string SourceVer() {return std::string();}; // These are some general stats about the package - virtual string Maintainer() {return string();}; - virtual string ShortDesc() {return string();}; - virtual string LongDesc() {return string();}; - virtual string Name() {return string();}; - virtual string Homepage() {return string();} - + virtual std::string Maintainer() {return std::string();}; + virtual std::string ShortDesc() {return std::string();}; + virtual std::string LongDesc() {return std::string();}; + virtual std::string Name() {return std::string();}; + virtual std::string Homepage() {return std::string();} + + // An arbitrary custom field + virtual std::string RecordField(const char *fieldName) { return std::string();}; + // The record in binary form virtual void GetRec(const char *&Start,const char *&Stop) {Start = Stop = 0;}; diff --git a/apt-pkg/pkgsystem.cc b/apt-pkg/pkgsystem.cc index 6dd2d3ee4..05ba6e0e6 100644 --- a/apt-pkg/pkgsystem.cc +++ b/apt-pkg/pkgsystem.cc @@ -10,6 +10,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/pkgsystem.h> #include <apt-pkg/policy.h> #include <cassert> @@ -24,11 +26,11 @@ unsigned long pkgSystem::GlobalListLen = 0; // System::pkgSystem - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Add it to the global list.. */ -pkgSystem::pkgSystem() +pkgSystem::pkgSystem() : Label(NULL), VS(NULL) { assert(GlobalListLen < sizeof(SysList)/sizeof(*SysList)); SysList[GlobalListLen] = this; - GlobalListLen++; + ++GlobalListLen; } /*}}}*/ // System::GetSystem - Get the named system /*{{{*/ diff --git a/apt-pkg/pkgsystem.h b/apt-pkg/pkgsystem.h index 246762e0b..75f7b9fcc 100644 --- a/apt-pkg/pkgsystem.h +++ b/apt-pkg/pkgsystem.h @@ -37,14 +37,20 @@ #ifndef PKGLIB_PKGSYSTEM_H #define PKGLIB_PKGSYSTEM_H +#include <apt-pkg/pkgcache.h> -#include <apt-pkg/depcache.h> #include <vector> - + +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/depcache.h> +#endif + +class pkgDepCache; class pkgPackageManager; class pkgVersioningSystem; class Configuration; class pkgIndexFile; +class PkgFileIterator; class pkgSystem { diff --git a/apt-pkg/policy.cc b/apt-pkg/policy.cc index a369bea83..b47dab90c 100644 --- a/apt-pkg/policy.cc +++ b/apt-pkg/policy.cc @@ -23,6 +23,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/policy.h> #include <apt-pkg/configuration.h> #include <apt-pkg/tagfile.h> @@ -31,10 +33,10 @@ #include <apt-pkg/error.h> #include <apt-pkg/sptr.h> -#include <apti18n.h> - #include <iostream> #include <sstream> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -321,6 +323,10 @@ signed short pkgPolicy::GetPriority(pkgCache::PkgIterator const &Pkg) return 0; } +signed short pkgPolicy::GetPriority(pkgCache::PkgFileIterator const &File) +{ + return PFPriority[File->ID]; +} /*}}}*/ // PreferenceSection class - Overriding the default TrimRecord method /*{{{*/ // --------------------------------------------------------------------- diff --git a/apt-pkg/policy.h b/apt-pkg/policy.h index a5e6c6048..5172a3c3b 100644 --- a/apt-pkg/policy.h +++ b/apt-pkg/policy.h @@ -38,7 +38,9 @@ #include <apt-pkg/versionmatch.h> #include <vector> +#ifndef APT_8_CLEANER_HEADERS using std::vector; +#endif class pkgPolicy : public pkgDepCache::Policy { @@ -47,44 +49,43 @@ class pkgPolicy : public pkgDepCache::Policy struct Pin { pkgVersionMatch::MatchType Type; - string Data; + std::string Data; signed short Priority; Pin() : Type(pkgVersionMatch::None), Priority(0) {}; }; struct PkgPin : Pin { - string Pkg; - PkgPin(string const &Pkg) : Pin(), Pkg(Pkg) {}; + std::string Pkg; + PkgPin(std::string const &Pkg) : Pin(), Pkg(Pkg) {}; }; Pin *Pins; signed short *PFPriority; - vector<Pin> Defaults; - vector<PkgPin> Unmatched; + std::vector<Pin> Defaults; + std::vector<PkgPin> Unmatched; pkgCache *Cache; bool StatusOverride; public: // Things for manipulating pins - void CreatePin(pkgVersionMatch::MatchType Type,string Pkg, - string Data,signed short Priority); - inline signed short GetPriority(pkgCache::PkgFileIterator const &File) - {return PFPriority[File->ID];}; - signed short GetPriority(pkgCache::PkgIterator const &Pkg); + void CreatePin(pkgVersionMatch::MatchType Type,std::string Pkg, + std::string Data,signed short Priority); pkgCache::VerIterator GetMatch(pkgCache::PkgIterator const &Pkg); // Things for the cache interface. virtual pkgCache::VerIterator GetCandidateVer(pkgCache::PkgIterator const &Pkg); - virtual bool IsImportantDep(pkgCache::DepIterator const &Dep) {return pkgDepCache::Policy::IsImportantDep(Dep);}; + virtual signed short GetPriority(pkgCache::PkgIterator const &Pkg); + virtual signed short GetPriority(pkgCache::PkgFileIterator const &File); + bool InitDefaults(); pkgPolicy(pkgCache *Owner); virtual ~pkgPolicy() {delete [] PFPriority; delete [] Pins;}; }; -bool ReadPinFile(pkgPolicy &Plcy,string File = ""); -bool ReadPinDir(pkgPolicy &Plcy,string Dir = ""); +bool ReadPinFile(pkgPolicy &Plcy, std::string File = ""); +bool ReadPinDir(pkgPolicy &Plcy, std::string Dir = ""); #endif diff --git a/apt-pkg/sourcelist.cc b/apt-pkg/sourcelist.cc index ebfb5289e..0fddfb451 100644 --- a/apt-pkg/sourcelist.cc +++ b/apt-pkg/sourcelist.cc @@ -8,15 +8,19 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/sourcelist.h> #include <apt-pkg/error.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> - -#include <apti18n.h> +#include <apt-pkg/metaindex.h> +#include <apt-pkg/indexfile.h> #include <fstream> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -29,7 +33,7 @@ unsigned long pkgSourceList::Type::GlobalListLen = 0; // Type::Type - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Link this to the global list of items*/ -pkgSourceList::Type::Type() +pkgSourceList::Type::Type() : Name(NULL), Label(NULL) { ItmList[GlobalListLen] = this; GlobalListLen++; @@ -346,10 +350,14 @@ bool pkgSourceList::ReadSourceDir(string Dir) /* */ time_t pkgSourceList::GetLastModifiedTime() { - // go over the parts + vector<string> List; + string Main = _config->FindFile("Dir::Etc::sourcelist"); string Parts = _config->FindDir("Dir::Etc::sourceparts"); - vector<string> const List = GetListOfFilesInDir(Parts, "list", true); + + // go over the parts + if (DirectoryExists(Parts) == true) + List = GetListOfFilesInDir(Parts, "list", true); // calculate the time time_t mtime_sources = GetModificationTime(Main); diff --git a/apt-pkg/sourcelist.h b/apt-pkg/sourcelist.h index 7b473ee64..02e27101a 100644 --- a/apt-pkg/sourcelist.h +++ b/apt-pkg/sourcelist.h @@ -31,13 +31,17 @@ #include <vector> #include <map> #include <apt-pkg/pkgcache.h> -#include <apt-pkg/metaindex.h> +#ifndef APT_8_CLEANER_HEADERS +#include <apt-pkg/metaindex.h> using std::string; using std::vector; - +#endif + +class pkgAcquire; +class pkgIndexFile; +class metaIndex; -class pkgAquire; class pkgSourceList { public: @@ -55,32 +59,32 @@ class pkgSourceList 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();}; @@ -96,7 +100,7 @@ class pkgSourceList time_t GetLastModifiedTime(); pkgSourceList(); - pkgSourceList(string File); + pkgSourceList(std::string File); ~pkgSourceList(); }; diff --git a/apt-pkg/srcrecords.cc b/apt-pkg/srcrecords.cc index 946ac1a1a..d63d2c422 100644 --- a/apt-pkg/srcrecords.cc +++ b/apt-pkg/srcrecords.cc @@ -11,23 +11,26 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/srcrecords.h> #include <apt-pkg/error.h> #include <apt-pkg/sourcelist.h> #include <apt-pkg/strutl.h> - -#include <apti18n.h> +#include <apt-pkg/metaindex.h> + +#include <apti18n.h> /*}}}*/ // SrcRecords::pkgSrcRecords - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Open all the source index files */ -pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : Files(0), Current(0) +pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : d(NULL), Files(0), Current(0) { 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(); @@ -55,7 +58,7 @@ pkgSrcRecords::pkgSrcRecords(pkgSourceList &List) : Files(0), Current(0) 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; } /*}}}*/ @@ -65,7 +68,7 @@ pkgSrcRecords::~pkgSrcRecords() 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(); diff --git a/apt-pkg/srcrecords.h b/apt-pkg/srcrecords.h index a49533864..06f0dce6c 100644 --- a/apt-pkg/srcrecords.h +++ b/apt-pkg/srcrecords.h @@ -15,10 +15,12 @@ #include <string> -#include <vector> +#include <vector> +#ifndef APT_8_CLEANER_HEADERS using std::string; using std::vector; +#endif class pkgSourceList; class pkgIndexFile; @@ -29,10 +31,10 @@ class pkgSrcRecords // Describes a single file struct File { - string MD5Hash; + std::string MD5Hash; unsigned long Size; - string Path; - string Type; + std::string Path; + std::string Type; }; // Abstract parser for each source record @@ -49,8 +51,8 @@ class pkgSrcRecords struct BuildDepRec { - string Package; - string Version; + std::string Package; + std::string Version; unsigned int Op; unsigned char Type; }; @@ -61,28 +63,30 @@ class pkgSrcRecords virtual bool Step() = 0; virtual bool Jump(unsigned long const &Off) = 0; virtual unsigned long Offset() = 0; - virtual string AsStr() = 0; + virtual std::string AsStr() = 0; - virtual string Package() const = 0; - virtual string Version() const = 0; - virtual string Maintainer() const = 0; - virtual string Section() const = 0; + virtual std::string Package() const = 0; + virtual std::string Version() const = 0; + virtual std::string Maintainer() const = 0; + virtual std::string Section() const = 0; virtual const char **Binaries() = 0; // Ownership does not transfer - virtual bool BuildDepends(vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) = 0; + virtual bool BuildDepends(std::vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) = 0; static const char *BuildDepType(unsigned char const &Type); - virtual bool Files(vector<pkgSrcRecords::File> &F) = 0; + virtual bool Files(std::vector<pkgSrcRecords::File> &F) = 0; Parser(const pkgIndexFile *Index) : iIndex(Index) {}; virtual ~Parser() {}; }; private: + /** \brief dpointer placeholder (for later in case we need it) */ + void *d; // The list of files and the current parser pointer - vector<Parser*> Files; - vector<Parser *>::iterator Current; + std::vector<Parser*> Files; + std::vector<Parser *>::iterator Current; public: @@ -93,7 +97,7 @@ class pkgSrcRecords Parser *Find(const char *Package,bool const &SrcOnly = false); pkgSrcRecords(pkgSourceList &List); - ~pkgSrcRecords(); + virtual ~pkgSrcRecords(); }; #endif diff --git a/apt-pkg/tagfile.cc b/apt-pkg/tagfile.cc index 4a2f3f7e6..79811899a 100644 --- a/apt-pkg/tagfile.cc +++ b/apt-pkg/tagfile.cc @@ -11,39 +11,59 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/tagfile.h> #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> -#include <apti18n.h> - #include <string> #include <stdio.h> #include <ctype.h> + +#include <apti18n.h> /*}}}*/ using std::string; +class pkgTagFilePrivate +{ +public: + pkgTagFilePrivate(FileFd *pFd, unsigned long long Size) : Fd(*pFd), Buffer(NULL), + Start(NULL), End(NULL), + Done(false), iOffset(0), + Size(Size) + { + } + FileFd &Fd; + char *Buffer; + char *Start; + char *End; + bool Done; + unsigned long long iOffset; + unsigned long long Size; +}; + // TagFile::pkgTagFile - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ -pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) : - Fd(*pFd), - Size(Size) +pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long long Size) { - if (Fd.IsOpen() == false) + d = new pkgTagFilePrivate(pFd, Size); + + if (d->Fd.IsOpen() == false) { - Buffer = 0; - Start = End = Buffer = 0; - Done = true; - iOffset = 0; + d->Start = d->End = d->Buffer = 0; + d->Done = true; + d->iOffset = 0; return; } - Buffer = new char[Size]; - Start = End = Buffer; - Done = false; - iOffset = 0; + d->Buffer = new char[Size]; + d->Start = d->End = d->Buffer; + d->Done = false; + d->iOffset = 0; Fill(); } /*}}}*/ @@ -52,7 +72,14 @@ pkgTagFile::pkgTagFile(FileFd *pFd,unsigned long Size) : /* */ pkgTagFile::~pkgTagFile() { - delete [] Buffer; + delete [] d->Buffer; + delete d; +} + /*}}}*/ +// TagFile::Offset - Return the current offset in the buffer /*{{{*/ +unsigned long pkgTagFile::Offset() +{ + return d->iOffset; } /*}}}*/ // TagFile::Resize - Resize the internal buffer /*{{{*/ @@ -63,22 +90,22 @@ pkgTagFile::~pkgTagFile() bool pkgTagFile::Resize() { char *tmp; - unsigned long EndSize = End - Start; + unsigned long long EndSize = d->End - d->Start; // fail is the buffer grows too big - if(Size > 1024*1024+1) + if(d->Size > 1024*1024+1) return false; // get new buffer and use it - tmp = new char[2*Size]; - memcpy(tmp, Buffer, Size); - Size = Size*2; - delete [] Buffer; - Buffer = tmp; + tmp = new char[2*d->Size]; + memcpy(tmp, d->Buffer, d->Size); + d->Size = d->Size*2; + delete [] d->Buffer; + d->Buffer = tmp; // update the start/end pointers to the new buffer - Start = Buffer; - End = Start + EndSize; + d->Start = d->Buffer; + d->End = d->Start + EndSize; return true; } /*}}}*/ @@ -90,20 +117,20 @@ bool pkgTagFile::Resize() */ bool pkgTagFile::Step(pkgTagSection &Tag) { - while (Tag.Scan(Start,End - Start) == false) + while (Tag.Scan(d->Start,d->End - d->Start) == false) { if (Fill() == false) return false; - if(Tag.Scan(Start,End - Start)) + if(Tag.Scan(d->Start,d->End - d->Start)) break; if (Resize() == false) return _error->Error(_("Unable to parse package file %s (1)"), - Fd.Name().c_str()); + d->Fd.Name().c_str()); } - Start += Tag.size(); - iOffset += Tag.size(); + d->Start += Tag.size(); + d->iOffset += Tag.size(); Tag.Trim(); return true; @@ -115,37 +142,37 @@ bool pkgTagFile::Step(pkgTagSection &Tag) then fills the rest from the file */ bool pkgTagFile::Fill() { - unsigned long EndSize = End - Start; - unsigned long Actual = 0; + unsigned long long EndSize = d->End - d->Start; + unsigned long long Actual = 0; - memmove(Buffer,Start,EndSize); - Start = Buffer; - End = Buffer + EndSize; + memmove(d->Buffer,d->Start,EndSize); + d->Start = d->Buffer; + d->End = d->Buffer + EndSize; - if (Done == false) + if (d->Done == false) { // See if only a bit of the file is left - if (Fd.Read(End,Size - (End - Buffer),&Actual) == false) + if (d->Fd.Read(d->End, d->Size - (d->End - d->Buffer),&Actual) == false) return false; - if (Actual != Size - (End - Buffer)) - Done = true; - End += Actual; + if (Actual != d->Size - (d->End - d->Buffer)) + d->Done = true; + d->End += Actual; } - if (Done == true) + if (d->Done == true) { if (EndSize <= 3 && Actual == 0) return false; - if (Size - (End - Buffer) < 4) + if (d->Size - (d->End - d->Buffer) < 4) return true; // Append a double new line if one does not exist unsigned int LineCount = 0; - for (const char *E = End - 1; E - End < 6 && (*E == '\n' || *E == '\r'); E--) + for (const char *E = d->End - 1; E - d->End < 6 && (*E == '\n' || *E == '\r'); E--) if (*E == '\n') LineCount++; for (; LineCount < 2; LineCount++) - *End++ = '\n'; + *d->End++ = '\n'; return true; } @@ -157,36 +184,36 @@ bool pkgTagFile::Fill() // --------------------------------------------------------------------- /* This jumps to a pre-recorded file location and reads the record that is there */ -bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long Offset) +bool pkgTagFile::Jump(pkgTagSection &Tag,unsigned long long Offset) { // We are within a buffer space of the next hit.. - if (Offset >= iOffset && iOffset + (End - Start) > Offset) + if (Offset >= d->iOffset && d->iOffset + (d->End - d->Start) > Offset) { - unsigned long Dist = Offset - iOffset; - Start += Dist; - iOffset += Dist; + unsigned long long Dist = Offset - d->iOffset; + d->Start += Dist; + d->iOffset += Dist; return Step(Tag); } // Reposition and reload.. - iOffset = Offset; - Done = false; - if (Fd.Seek(Offset) == false) + d->iOffset = Offset; + d->Done = false; + if (d->Fd.Seek(Offset) == false) return false; - End = Start = Buffer; + d->End = d->Start = d->Buffer; if (Fill() == false) return false; - if (Tag.Scan(Start,End - Start) == true) + if (Tag.Scan(d->Start, d->End - d->Start) == true) return true; // This appends a double new line (for the real eof handling) if (Fill() == false) return false; - if (Tag.Scan(Start,End - Start) == false) - return _error->Error(_("Unable to parse package file %s (2)"),Fd.Name().c_str()); + if (Tag.Scan(d->Start, d->End - d->Start) == false) + return _error->Error(_("Unable to parse package file %s (2)"),d->Fd.Name().c_str()); return true; } @@ -457,6 +484,7 @@ static const char *iTFRewritePackageOrder[] = { "MD5Sum", "SHA1", "SHA256", + "SHA512", "MSDOS-Filename", // Obsolete "Description", 0}; diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h index a101d7b1e..fd24471c1 100644 --- a/apt-pkg/tagfile.h +++ b/apt-pkg/tagfile.h @@ -20,19 +20,25 @@ #ifndef PKGLIB_TAGFILE_H #define PKGLIB_TAGFILE_H +#include <stdio.h> + +#include <string> +#ifndef APT_8_CLEANER_HEADERS #include <apt-pkg/fileutl.h> -#include <stdio.h> - +#endif + +class FileFd; + class pkgTagSection { const char *Section; - // We have a limit of 256 tags per section. unsigned int Indexes[256]; unsigned int AlphaIndexes[0x100]; - unsigned int TagCount; + // dpointer placeholder (for later in case we need it) + void *d; /* This very simple hash function for the last 8 letters gives very good performance on the debian package files */ @@ -44,7 +50,6 @@ class pkgTagSection return Res & 0xFF; } - protected: const char *Stop; @@ -55,7 +60,7 @@ class pkgTagSection bool Find(const char *Tag,const char *&Start, const char *&End) const; bool Find(const char *Tag,unsigned &Pos) const; - string FindS(const char *Tag) const; + std::string FindS(const char *Tag) const; signed int FindI(const char *Tag,signed long Default = 0) const ; unsigned long long FindULL(const char *Tag, unsigned long long const &Default = 0) const; bool FindFlag(const char *Tag,unsigned long &Flags, @@ -80,17 +85,13 @@ class pkgTagSection }; pkgTagSection() : Section(0), TagCount(0), Stop(0) {}; + virtual ~pkgTagSection() {}; }; +class pkgTagFilePrivate; class pkgTagFile { - FileFd &Fd; - char *Buffer; - char *Start; - char *End; - bool Done; - unsigned long iOffset; - unsigned long Size; + pkgTagFilePrivate *d; bool Fill(); bool Resize(); @@ -98,11 +99,11 @@ class pkgTagFile public: bool Step(pkgTagSection &Section); - inline unsigned long Offset() {return iOffset;}; - bool Jump(pkgTagSection &Tag,unsigned long Offset); + unsigned long Offset(); + bool Jump(pkgTagSection &Tag,unsigned long long Offset); - pkgTagFile(FileFd *F,unsigned long Size = 32*1024); - ~pkgTagFile(); + pkgTagFile(FileFd *F,unsigned long long Size = 32*1024); + virtual ~pkgTagFile(); }; /* This is the list of things to rewrite. The rewriter diff --git a/apt-pkg/vendor.cc b/apt-pkg/vendor.cc index 2350afe69..36fc25957 100644 --- a/apt-pkg/vendor.cc +++ b/apt-pkg/vendor.cc @@ -1,3 +1,5 @@ +#include<config.h> + #include <iostream> #include <apt-pkg/error.h> #include <apt-pkg/vendor.h> @@ -20,16 +22,16 @@ Vendor::Vendor(std::string VendorID, delete FingerprintList; } -const string Vendor::LookupFingerprint(string Print) const +const std::string Vendor::LookupFingerprint(std::string Print) const { - std::map<string,string>::const_iterator Elt = Fingerprints.find(Print); + std::map<std::string,std::string>::const_iterator Elt = Fingerprints.find(Print); if (Elt == Fingerprints.end()) return ""; else return (*Elt).second; } -bool Vendor::CheckDist(string Dist) +bool Vendor::CheckDist(std::string Dist) { return true; } diff --git a/apt-pkg/vendor.h b/apt-pkg/vendor.h index df229737a..6484adf9b 100644 --- a/apt-pkg/vendor.h +++ b/apt-pkg/vendor.h @@ -6,29 +6,31 @@ #include <apt-pkg/macros.h> +#ifndef APT_8_CLEANER_HEADERS using std::string; +#endif -// A class representing a particular software provider. +// A class representing a particular software provider. class __deprecated Vendor { public: struct Fingerprint { - string Print; - string Description; + std::string Print; + std::string Description; }; protected: - string VendorID; - string Origin; - std::map<string, string> Fingerprints; + std::string VendorID; + std::string Origin; + std::map<std::string, std::string> Fingerprints; public: - Vendor(string VendorID, string Origin, + Vendor(std::string VendorID, std::string Origin, std::vector<struct Fingerprint *> *FingerprintList); - virtual const string& GetVendorID() const { return VendorID; }; - virtual const string LookupFingerprint(string Print) const; - virtual bool CheckDist(string Dist); + virtual const std::string& GetVendorID() const { return VendorID; }; + virtual const std::string LookupFingerprint(std::string Print) const; + virtual bool CheckDist(std::string Dist); virtual ~Vendor(){}; }; diff --git a/apt-pkg/vendorlist.cc b/apt-pkg/vendorlist.cc index 4cc500727..ecfc7db87 100644 --- a/apt-pkg/vendorlist.cc +++ b/apt-pkg/vendorlist.cc @@ -1,13 +1,20 @@ +#include<config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/error.h> +#include <apt-pkg/configuration.h> #include <apti18n.h> #if __GNUC__ >= 4 #pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif +#include <apt-pkg/vendor.h> #include <apt-pkg/vendorlist.h> +using std::string; +using std::vector; + pkgVendorList::~pkgVendorList() { for (vector<const Vendor *>::const_iterator I = VendorList.begin(); diff --git a/apt-pkg/vendorlist.h b/apt-pkg/vendorlist.h index eaeecb173..a86ccde7c 100644 --- a/apt-pkg/vendorlist.h +++ b/apt-pkg/vendorlist.h @@ -15,26 +15,30 @@ #include <string> #include <vector> -#include <apt-pkg/vendor.h> -#include <apt-pkg/configuration.h> #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; class __deprecated pkgVendorList { protected: - vector<Vendor const *> VendorList; + std::vector<Vendor const *> VendorList; bool CreateList(Configuration& Cnf); - const Vendor* LookupFingerprint(string Fingerprint); + const Vendor* LookupFingerprint(std::string Fingerprint); public: - typedef vector<Vendor const *>::const_iterator const_iterator; + typedef std::vector<Vendor const *>::const_iterator const_iterator; bool ReadMainList(); - bool Read(string File); + bool Read(std::string File); // List accessors inline const_iterator begin() const {return VendorList.begin();}; @@ -42,7 +46,7 @@ class __deprecated pkgVendorList inline unsigned int size() const {return VendorList.size();}; inline bool empty() const {return VendorList.empty();}; - const Vendor* FindVendor(const vector<string> GPGVOutput); + const Vendor* FindVendor(const std::vector<std::string> GPGVOutput); ~pkgVendorList(); }; diff --git a/apt-pkg/version.cc b/apt-pkg/version.cc index 42e449d36..cb2c34c0f 100644 --- a/apt-pkg/version.cc +++ b/apt-pkg/version.cc @@ -8,6 +8,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/version.h> #include <apt-pkg/pkgcache.h> @@ -21,10 +23,10 @@ unsigned long pkgVersioningSystem::GlobalListLen = 0; // pkgVS::pkgVersioningSystem - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Link to the global list of versioning systems supported */ -pkgVersioningSystem::pkgVersioningSystem() +pkgVersioningSystem::pkgVersioningSystem() : Label(NULL) { VSList[GlobalListLen] = this; - GlobalListLen++; + ++GlobalListLen; } /*}}}*/ // pkgVS::GetVS - Find a VS by name /*{{{*/ diff --git a/apt-pkg/version.h b/apt-pkg/version.h index 49c53a93a..e0e0e6c14 100644 --- a/apt-pkg/version.h +++ b/apt-pkg/version.h @@ -20,11 +20,12 @@ #ifndef PKGLIB_VERSION_H #define PKGLIB_VERSION_H - -#include <apt-pkg/strutl.h> +#include <apt-pkg/strutl.h> #include <string> +#ifndef APT_8_CLEANER_HEADERS using std::string; +#endif class pkgVersioningSystem { @@ -43,7 +44,7 @@ class pkgVersioningSystem virtual bool CheckDep(const char *PkgVer,int Op,const char *DepVer) = 0; virtual int DoCmpReleaseVer(const char *A,const char *Aend, const char *B,const char *Bend) = 0; - virtual string UpstreamVersion(const char *A) = 0; + virtual std::string UpstreamVersion(const char *A) = 0; // See if the given VS is compatible with this one.. virtual bool TestCompatibility(pkgVersioningSystem const &Against) @@ -57,8 +58,4 @@ class pkgVersioningSystem virtual ~pkgVersioningSystem() {}; }; -#ifdef APT_COMPATIBILITY -#include <apt-pkg/debversion.h> -#endif - #endif diff --git a/apt-pkg/versionmatch.cc b/apt-pkg/versionmatch.cc index 6d667acad..e4fa0ea65 100644 --- a/apt-pkg/versionmatch.cc +++ b/apt-pkg/versionmatch.cc @@ -11,8 +11,9 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include <apt-pkg/versionmatch.h> +#include<config.h> +#include <apt-pkg/versionmatch.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> @@ -21,9 +22,10 @@ #include <fnmatch.h> #include <sys/types.h> #include <regex.h> - /*}}}*/ +using std::string; + // VersionMatch::pkgVersionMatch - Constructor /*{{{*/ // --------------------------------------------------------------------- /* Break up the data string according to the selected type */ diff --git a/apt-pkg/versionmatch.h b/apt-pkg/versionmatch.h index 39639a23d..433396fc9 100644 --- a/apt-pkg/versionmatch.h +++ b/apt-pkg/versionmatch.h @@ -39,40 +39,42 @@ #include <string> #include <apt-pkg/pkgcache.h> +#ifndef APT_8_CLEANER_HEADERS using std::string; +#endif class pkgVersionMatch { // Version Matching - string VerStr; + std::string VerStr; bool VerPrefixMatch; // Release Matching - string RelVerStr; + std::string RelVerStr; bool RelVerPrefixMatch; - string RelOrigin; - string RelRelease; - string RelCodename; - string RelArchive; - string RelLabel; - string RelComponent; - string RelArchitecture; + std::string RelOrigin; + std::string RelRelease; + std::string RelCodename; + std::string RelArchive; + std::string RelLabel; + std::string RelComponent; + std::string RelArchitecture; bool MatchAll; // Origin Matching - string OrSite; + std::string OrSite; public: enum MatchType {None = 0,Version,Release,Origin} Type; - bool MatchVer(const char *A,string B,bool Prefix); + bool MatchVer(const char *A,std::string B,bool Prefix); bool ExpressionMatches(const char *pattern, const char *string); bool ExpressionMatches(const std::string& pattern, const char *string); bool FileMatch(pkgCache::PkgFileIterator File); pkgCache::VerIterator Find(pkgCache::PkgIterator Pkg); - pkgVersionMatch(string Data,MatchType Type); + pkgVersionMatch(std::string Data,MatchType Type); }; #endif diff --git a/buildlib/config.h.in b/buildlib/config.h.in index b3609a700..87918bbec 100644 --- a/buildlib/config.h.in +++ b/buildlib/config.h.in @@ -33,11 +33,16 @@ /* If there is no socklen_t, define this for the netdb shim */ #undef NEED_SOCKLEN_T_DEFINE +/* Define to the size of the filesize containing structures */ +#undef _FILE_OFFSET_BITS + /* Define the arch name string */ #undef COMMON_ARCH -/* The version number string */ -#undef VERSION - /* The package name string */ #undef PACKAGE + +/* The version number string */ +#undef PACKAGE_VERSION + +#define APT_8_CLEANER_HEADERS diff --git a/buildlib/defaults.mak b/buildlib/defaults.mak index edb089160..c10813e9d 100644 --- a/buildlib/defaults.mak +++ b/buildlib/defaults.mak @@ -121,7 +121,7 @@ MKDIRS := $(BIN) all: dirs binary doc binary: library program maintainer-clean dist-clean distclean pristine sanity: veryclean -headers library clean veryclean program test: +startup headers library clean veryclean program test update-po: veryclean: echo Very Clean done for $(SUBDIR) diff --git a/buildlib/environment.mak.in b/buildlib/environment.mak.in index fdac3e6c3..b8ddb34a2 100644 --- a/buildlib/environment.mak.in +++ b/buildlib/environment.mak.in @@ -2,6 +2,7 @@ # if you want you can edit it, just don't re-run configure. PACKAGE = @PACKAGE@ +PACKAGE_VERSION = @PACKAGE_VERSION@ # C++ compiler options CC = @CC@ diff --git a/buildlib/podomain.mak b/buildlib/podomain.mak index 511a5cae2..bb1c77e47 100644 --- a/buildlib/podomain.mak +++ b/buildlib/podomain.mak @@ -14,7 +14,7 @@ MKDIRS += $(PO_DOMAINS)/$(MY_DOMAIN) $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: SRC := $(addprefix $(SUBDIR)/,$(SOURCE)) $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list: makefile (echo $(SRC) | xargs -n1 echo) > $@ -binary program clean: $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list +startup binary program clean: $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list veryclean: veryclean/$(LOCAL) veryclean/po/$(LOCAL): LIST := $(PO_DOMAINS)/$(MY_DOMAIN)/$(LOCAL).$(TYPE)list diff --git a/cmdline/acqprogress.cc b/cmdline/acqprogress.cc index ba334ce05..3ac350aca 100644 --- a/cmdline/acqprogress.cc +++ b/cmdline/acqprogress.cc @@ -8,19 +8,21 @@ ##################################################################### */ /*}}}*/ // Include files /*{{{*/ -#include "acqprogress.h" +#include<config.h> + #include <apt-pkg/acquire-item.h> #include <apt-pkg/acquire-worker.h> #include <apt-pkg/configuration.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> -#include <apti18n.h> - #include <stdio.h> #include <signal.h> #include <iostream> #include <unistd.h> + +#include "acqprogress.h" +#include <apti18n.h> /*}}}*/ using namespace std; @@ -29,8 +31,9 @@ using namespace std; // --------------------------------------------------------------------- /* */ AcqTextStatus::AcqTextStatus(unsigned int &ScreenWidth,unsigned int Quiet) : - ScreenWidth(ScreenWidth), Quiet(Quiet) + ScreenWidth(ScreenWidth), ID(0), Quiet(Quiet) { + BlankLine[0] = 0; } /*}}}*/ // AcqTextStatus::Start - Downloading has started /*{{{*/ @@ -161,7 +164,7 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner) ScreenWidth = sizeof(Buffer)-1; // Put in the percent done - sprintf(S,"%ld%%",long(double((CurrentBytes + CurrentItems)*100.0)/double(TotalBytes+TotalItems))); + sprintf(S,"%.0f%%",((CurrentBytes + CurrentItems)*100.0)/(TotalBytes+TotalItems)); bool Shown = false; for (pkgAcquire::Worker *I = Owner->WorkersBegin(); I != 0; @@ -200,7 +203,7 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner) // Add the current progress if (Mode == Long) - snprintf(S,End-S," %lu",I->CurrentSize); + snprintf(S,End-S," %llu",I->CurrentSize); else { if (Mode == Medium || I->TotalSize == 0) @@ -212,11 +215,11 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner) if (I->TotalSize > 0 && I->CurrentItem->Owner->Complete == false) { if (Mode == Short) - snprintf(S,End-S," %lu%%", - long(double(I->CurrentSize*100.0)/double(I->TotalSize))); + snprintf(S,End-S," %.0f%%", + (I->CurrentSize*100.0)/I->TotalSize); else - snprintf(S,End-S,"/%sB %lu%%",SizeToStr(I->TotalSize).c_str(), - long(double(I->CurrentSize*100.0)/double(I->TotalSize))); + snprintf(S,End-S,"/%sB %.0f%%",SizeToStr(I->TotalSize).c_str(), + (I->CurrentSize*100.0)/I->TotalSize); } S += strlen(S); snprintf(S,End-S,"]"); @@ -236,7 +239,7 @@ bool AcqTextStatus::Pulse(pkgAcquire *Owner) if (CurrentCPS != 0) { char Tmp[300]; - unsigned long ETA = (unsigned long)((TotalBytes - CurrentBytes)/CurrentCPS); + unsigned long long ETA = (TotalBytes - CurrentBytes)/CurrentCPS; sprintf(Tmp," %sB/s %s",SizeToStr(CurrentCPS).c_str(),TimeToStr(ETA).c_str()); unsigned int Len = strlen(Buffer); unsigned int LenT = strlen(Tmp); diff --git a/cmdline/acqprogress.h b/cmdline/acqprogress.h index 48f90ae59..8f0903923 100644 --- a/cmdline/acqprogress.h +++ b/cmdline/acqprogress.h @@ -12,6 +12,8 @@ #include <apt-pkg/acquire.h> +#include <string> + class AcqTextStatus : public pkgAcquireStatus { unsigned int &ScreenWidth; @@ -21,7 +23,7 @@ class AcqTextStatus : public pkgAcquireStatus public: - virtual bool MediaChange(string Media,string Drive); + virtual bool MediaChange(std::string Media,std::string Drive); virtual void IMSHit(pkgAcquire::ItemDesc &Itm); virtual void Fetch(pkgAcquire::ItemDesc &Itm); virtual void Done(pkgAcquire::ItemDesc &Itm); diff --git a/cmdline/apt-cache.cc b/cmdline/apt-cache.cc index db5475227..ce869581b 100644 --- a/cmdline/apt-cache.cc +++ b/cmdline/apt-cache.cc @@ -13,9 +13,9 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/error.h> -#include <cassert> -#include <apt-pkg/pkgcachegen.h> #include <apt-pkg/cachefile.h> #include <apt-pkg/cacheset.h> #include <apt-pkg/init.h> @@ -23,6 +23,7 @@ #include <apt-pkg/sourcelist.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> #include <apt-pkg/pkgrecords.h> #include <apt-pkg/srcrecords.h> #include <apt-pkg/version.h> @@ -30,18 +31,21 @@ #include <apt-pkg/tagfile.h> #include <apt-pkg/algorithms.h> #include <apt-pkg/sptr.h> +#include <apt-pkg/pkgsystem.h> +#include <apt-pkg/indexfile.h> +#include <apt-pkg/metaindex.h> -#include <config.h> -#include <apti18n.h> - +#include <cassert> #include <locale.h> #include <iostream> #include <unistd.h> #include <errno.h> #include <regex.h> #include <stdio.h> - #include <iomanip> +#include <algorithm> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -61,12 +65,12 @@ public: 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 /*{{{*/ @@ -104,7 +108,7 @@ void LocalitySort(pkgCache::DescFile **begin, // 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;) @@ -195,9 +199,9 @@ bool UnMet(CommandLine &CmdL) 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; } @@ -211,9 +215,9 @@ bool DumpPackage(CommandLine &CmdL) { 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; @@ -584,7 +588,7 @@ bool ShowDepends(CommandLine &CmdL, bool const RevDepends) 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); @@ -1139,7 +1143,7 @@ bool DisplayRecord(pkgCacheFile &CacheFile, pkgCache::VerIterator V) 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 @@ -1361,10 +1365,10 @@ bool ShowPackage(CommandLine &CmdL) { 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; @@ -1527,8 +1531,8 @@ bool Policy(CommandLine &CmdL) // 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; @@ -1604,8 +1608,8 @@ bool Madison(CommandLine &CmdL) 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) { @@ -1672,7 +1676,7 @@ bool GenCaches(CommandLine &Cmd) /* */ bool ShowHelp(CommandLine &Cmd) { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) @@ -1735,7 +1739,7 @@ int main(int argc,const char *argv[]) /*{{{*/ {'c',"config-file",0,CommandLine::ConfigFile}, {'o',"option",0,CommandLine::ArbItem}, {0,"installed","APT::Cache::Installed",0}, - {0,"pre-depends","APT::Cache::ShowPreDepends",0}, + {0,"pre-depends","APT::Cache::ShowPre-Depends",0}, {0,"depends","APT::Cache::ShowDepends",0}, {0,"recommends","APT::Cache::ShowRecommends",0}, {0,"suggests","APT::Cache::ShowSuggests",0}, diff --git a/cmdline/apt-cdrom.cc b/cmdline/apt-cdrom.cc index d1268edf9..2551f4916 100644 --- a/cmdline/apt-cdrom.cc +++ b/cmdline/apt-cdrom.cc @@ -11,6 +11,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/cmndline.h> #include <apt-pkg/error.h> #include <apt-pkg/init.h> @@ -21,10 +23,8 @@ #include <apt-pkg/acquire.h> #include <apt-pkg/acquire-item.h> #include <apt-pkg/cdrom.h> -#include <config.h> -#include <apti18n.h> - -//#include "indexcopy.h" +#include <apt-pkg/configuration.h> +#include <apt-pkg/pkgsystem.h> #include <locale.h> #include <iostream> @@ -36,6 +36,8 @@ #include <dirent.h> #include <unistd.h> #include <stdio.h> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -148,10 +150,9 @@ bool DoAdd(CommandLine &) bool res = true; bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect", true); - unsigned int count = 0; - if (AutoDetect && UdevCdroms.Dlopen()) { + unsigned int count = 0; while (AutoDetectCdrom(UdevCdroms, count)) res &= cdrom.Add(&log); } else { @@ -176,10 +177,10 @@ bool DoIdent(CommandLine &) bool res = true; bool AutoDetect = _config->FindB("Acquire::cdrom::AutoDetect"); - unsigned int count = 0; - + if (AutoDetect && UdevCdroms.Dlopen()) { + unsigned int count = 0; while (AutoDetectCdrom(UdevCdroms, count)) res &= cdrom.Ident(ident, &log); } else { @@ -194,7 +195,7 @@ bool DoIdent(CommandLine &) /* */ int ShowHelp() { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) return 0; diff --git a/cmdline/apt-config.cc b/cmdline/apt-config.cc index 589ee7ada..79ae944df 100644 --- a/cmdline/apt-config.cc +++ b/cmdline/apt-config.cc @@ -16,20 +16,22 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/cmndline.h> #include <apt-pkg/error.h> #include <apt-pkg/init.h> #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> - -#include <config.h> -#include <apti18n.h> +#include <apt-pkg/pkgsystem.h> #include <locale.h> #include <iostream> #include <string> #include <vector> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -70,7 +72,7 @@ bool DoDump(CommandLine &CmdL) /* */ int ShowHelp() { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) return 0; @@ -132,6 +134,22 @@ int main(int argc,const char *argv[]) /*{{{*/ 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); diff --git a/cmdline/apt-dump-solver.cc b/cmdline/apt-dump-solver.cc new file mode 100644 index 000000000..aa16b1271 --- /dev/null +++ b/cmdline/apt-dump-solver.cc @@ -0,0 +1,51 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ##################################################################### + + dummy solver to get quickly a scenario file out of APT + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include <apt-pkg/edsp.h> + +#include <config.h> + +#include <cstdio> +#include <iostream> + /*}}}*/ + +// ShowHelp - Show a help screen /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool ShowHelp() { + + std::cout << + PACKAGE " " PACKAGE_VERSION " for " COMMON_ARCH " compiled on " __DATE__ " " __TIME__ << std::endl << + "Usage: apt-dump-resolver\n" + "\n" + "apt-dump-resolver is a dummy solver who just dumps its input to the\n" + "file /tmp/dump.edsp and exists with a proper EDSP error.\n" + "\n" + " This dump has lost Super Cow Powers.\n"; + return true; +} + /*}}}*/ +int main(int argc,const char *argv[]) /*{{{*/ +{ + if (argc > 1 && (strcmp(argv[1], "--help") == 0 || strcmp(argv[1],"-h") == 0 || + strcmp(argv[1],"-v") == 0 || strcmp(argv[1],"--version") == 0)) { + ShowHelp(); + return 0; + } + + FILE* input = fdopen(STDIN_FILENO, "r"); + FILE* output = fopen("/tmp/dump.edsp", "w"); + char buffer[400]; + while (fgets(buffer, sizeof(buffer), input) != NULL) + fputs(buffer, output); + fclose(output); + fclose(input); + + EDSP::WriteError("ERR_JUST_DUMPING", "I am too dumb, i can just dump!\nPlease use one of my friends instead!", stdout); +} diff --git a/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc index 07bc0c25d..60efafba5 100644 --- a/cmdline/apt-extracttemplates.cc +++ b/cmdline/apt-extracttemplates.cc @@ -13,6 +13,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include<config.h> + #include <apt-pkg/init.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/pkgcache.h> @@ -28,7 +30,8 @@ #include <apt-pkg/error.h> #include <apt-pkg/strutl.h> #include <apt-pkg/fileutl.h> - +#include <apt-pkg/pkgsystem.h> + #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -36,7 +39,6 @@ #include <fstream> #include <locale.h> -#include <config.h> #include <apti18n.h> #include "apt-extracttemplates.h" /*}}}*/ @@ -51,8 +53,8 @@ pkgCache *DebFile::Cache = 0; // --------------------------------------------------------------------- /* */ DebFile::DebFile(const char *debfile) - : File(debfile, FileFd::ReadOnly), Control(0), DepOp(0), - PreDepOp(0), Config(0), Template(0), Which(None) + : File(debfile, FileFd::ReadOnly), Size(0), Control(NULL), ControlLen(0), + DepOp(0), PreDepOp(0), Config(0), Template(0), Which(None) { } /*}}}*/ @@ -222,7 +224,7 @@ bool DebFile::ParseInfo() /* */ int ShowHelp(void) { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) diff --git a/cmdline/apt-extracttemplates.h b/cmdline/apt-extracttemplates.h index d0f90d3f4..6d07a09c2 100644 --- a/cmdline/apt-extracttemplates.h +++ b/cmdline/apt-extracttemplates.h @@ -14,6 +14,8 @@ #include <apt-pkg/pkgcache.h> #include <apt-pkg/dirstream.h> +#include <string> + class DebFile : public pkgDirStream { FileFd File; @@ -31,11 +33,11 @@ public: 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; diff --git a/cmdline/apt-get.cc b/cmdline/apt-get.cc index 49ac8f2cf..ac1566f30 100644 --- a/cmdline/apt-get.cc +++ b/cmdline/apt-get.cc @@ -25,8 +25,7 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#define _LARGEFILE_SOURCE -#define _LARGEFILE64_SOURCE +#include <config.h> #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/error.h> @@ -37,6 +36,7 @@ #include <apt-pkg/algorithms.h> #include <apt-pkg/acquire-item.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> #include <apt-pkg/clean.h> #include <apt-pkg/srcrecords.h> #include <apt-pkg/version.h> @@ -45,9 +45,10 @@ #include <apt-pkg/sptr.h> #include <apt-pkg/md5.h> #include <apt-pkg/versionmatch.h> - -#include <config.h> -#include <apti18n.h> +#include <apt-pkg/progress.h> +#include <apt-pkg/pkgsystem.h> +#include <apt-pkg/pkgrecords.h> +#include <apt-pkg/indexfile.h> #include "acqprogress.h" @@ -68,8 +69,7 @@ #include <sys/wait.h> #include <sstream> -#define statfs statfs64 -#define statvfs statvfs64 +#include <apti18n.h> /*}}}*/ #define RAMFS_MAGIC 0x858458f6 @@ -135,6 +135,11 @@ bool YnPrompt(bool Default=true) c1out << _("Y") << endl; return true; } + else if (_config->FindB("APT::Get::Assume-No",false) == true) + { + c1out << _("N") << endl; + return false; + } char response[1024] = ""; cin.getline(response, sizeof(response)); @@ -623,20 +628,18 @@ public: 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)); @@ -702,7 +705,7 @@ public: 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); } @@ -710,11 +713,32 @@ public: } virtual pkgCache::VerIterator canNotFindNewestVer(pkgCacheFile &Cache, pkgCache::PkgIterator const &Pkg) { - APT::VersionSet const verset = tryVirtualPackage(Cache, Pkg, APT::VersionSet::NEWEST); - if (verset.empty() == false) - return *(verset.begin()); - if (ShowError == true) - ioprintf(out, _("Virtual packages like '%s' can't be removed\n"), Pkg.FullName(true).c_str()); + if (Pkg->ProvidesList != 0) + { + APT::VersionSet const verset = tryVirtualPackage(Cache, Pkg, APT::VersionSet::NEWEST); + if (verset.empty() == false) + return *(verset.begin()); + if (ShowError == true) + ioprintf(out, _("Virtual packages like '%s' can't be removed\n"), Pkg.FullName(true).c_str()); + } + else + { + pkgCache::GrpIterator Grp = Pkg.Group(); + pkgCache::PkgIterator P = Grp.PackageList(); + for (; P.end() != true; P = Grp.NextPkg(P)) + { + if (P == Pkg) + continue; + if (P->CurrentVer != 0) { + // TRANSLATORS: Note, this is not an interactive question + ioprintf(c1out,_("Package '%s' is not installed, so not removed. Did you mean '%s'?\n"), + Pkg.FullName(true).c_str(), P.FullName(true).c_str()); + break; + } + } + if (P.end() == true) + ioprintf(c1out,_("Package '%s' is not installed, so not removed\n"),Pkg.FullName(true).c_str()); + } return pkgCache::VerIterator(Cache, 0); } @@ -739,6 +763,19 @@ public: 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; } @@ -764,7 +801,7 @@ struct TryToInstall { 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) { @@ -888,7 +925,23 @@ struct TryToRemove { if ((Pkg->CurrentVer == 0 && PurgePkgs == false) || (PurgePkgs == true && Pkg->CurrentState == pkgCache::State::NotInstalled)) { - ioprintf(c1out,_("Package %s is not installed, so not removed\n"),Pkg.FullName(true).c_str()); + pkgCache::GrpIterator Grp = Pkg.Group(); + pkgCache::PkgIterator P = Grp.PackageList(); + for (; P.end() != true; P = Grp.NextPkg(P)) + { + if (P == Pkg) + continue; + if (P->CurrentVer != 0 || (PurgePkgs == true && P->CurrentState != pkgCache::State::NotInstalled)) + { + // TRANSLATORS: Note, this is not an interactive question + ioprintf(c1out,_("Package '%s' is not installed, so not removed. Did you mean '%s'?\n"), + Pkg.FullName(true).c_str(), P.FullName(true).c_str()); + break; + } + } + if (P.end() == true) + ioprintf(c1out,_("Package '%s' is not installed, so not removed\n"),Pkg.FullName(true).c_str()); + // MarkInstall refuses to install packages on hold Pkg->SelectedState = pkgCache::State::Hold; } @@ -1714,7 +1767,7 @@ bool DoAutomaticRemove(CacheFile &Cache) Pkg != tooMuch.end() && Changed == false; ++Pkg) { APT::PackageSet too; - too.insert(Pkg); + too.insert(*Pkg); for (pkgCache::PrvIterator Prv = Cache[Pkg].CandidateVerIter(Cache).ProvidesList(); Prv.end() == false; ++Prv) too.insert(Prv.ParentPkg()); @@ -1902,8 +1955,7 @@ bool DoInstall(CommandLine &CmdL) { // Call the scored problem resolver Fix->InstallProtect(); - if (Fix->Resolve(true) == false) - _error->Discard(); + Fix->Resolve(true); delete Fix; } @@ -1929,8 +1981,11 @@ bool DoInstall(CommandLine &CmdL) c1out << _("The following information may help to resolve the situation:") << endl; c1out << endl; ShowBroken(c1out,Cache,false); - return _error->Error(_("Broken packages")); - } + if (_error->PendingError() == true) + return false; + else + return _error->Error(_("Broken packages")); + } } if (!DoAutomaticRemove(Cache)) return false; @@ -2288,8 +2343,8 @@ bool DoDownload(CommandLine &CmdL) 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; @@ -2301,7 +2356,7 @@ bool DoDownload(CommandLine &CmdL) 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) { @@ -2320,6 +2375,8 @@ bool DoDownload(CommandLine &CmdL) strprintf(descr, _("Downloading %s %s"), Pkg.Name(), Ver.VerStr()); // get the most appropriate hash HashString hash; + if (rec.SHA512Hash() != "") + hash = HashString("sha512", rec.SHA512Hash()); if (rec.SHA256Hash() != "") hash = HashString("sha256", rec.SHA256Hash()); else if (rec.SHA1Hash() != "") @@ -2843,21 +2900,27 @@ bool DoBuildDep(CommandLine &CmdL) if ((BADVER(Ver)) == false) { string forbidden; - if (Ver->MultiArch == pkgCache::Version::None || Ver->MultiArch == pkgCache::Version::All); + if (Ver->MultiArch == pkgCache::Version::None || Ver->MultiArch == pkgCache::Version::All) + { + if (colon == string::npos) + { + Pkg = Ver.ParentPkg().Group().FindPkg(hostArch); + } + } else if (Ver->MultiArch == pkgCache::Version::Same) { - if (colon != string::npos) + if (colon == string::npos) Pkg = Ver.ParentPkg().Group().FindPkg(hostArch); else if (strcmp(D->Package.c_str() + colon, ":any") == 0) forbidden = "Multi-Arch: same"; // :native gets the buildArch } - else if (Ver->MultiArch == pkgCache::Version::Foreign || Ver->MultiArch == pkgCache::Version::AllForeign) + else if ((Ver->MultiArch & pkgCache::Version::Foreign) == pkgCache::Version::Foreign) { if (colon != string::npos) forbidden = "Multi-Arch: foreign"; } - else if (Ver->MultiArch == pkgCache::Version::Allowed || Ver->MultiArch == pkgCache::Version::AllAllowed) + else if ((Ver->MultiArch & pkgCache::Version::Allowed) == pkgCache::Version::Allowed) { if (colon == string::npos) Pkg = Ver.ParentPkg().Group().FindPkg(hostArch); @@ -3158,14 +3221,14 @@ bool DoChangelog(CommandLine &CmdL) 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, ""); @@ -3188,7 +3251,7 @@ bool DoChangelog(CommandLine &CmdL) 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) { @@ -3232,7 +3295,7 @@ bool DoMoo(CommandLine &CmdL) /* */ bool ShowHelp(CommandLine &CmdL) { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) @@ -3354,7 +3417,8 @@ int main(int argc,const char *argv[]) /*{{{*/ {'s',"dry-run","APT::Get::Simulate",0}, {'s',"no-act","APT::Get::Simulate",0}, {'y',"yes","APT::Get::Assume-Yes",0}, - {'y',"assume-yes","APT::Get::Assume-Yes",0}, + {'y',"assume-yes","APT::Get::Assume-Yes",0}, + {0,"assume-no","APT::Get::Assume-No",0}, {'f',"fix-broken","APT::Get::Fix-Broken",0}, {'u',"show-upgraded","APT::Get::Show-Upgraded",0}, {'m',"ignore-missing","APT::Get::Fix-Missing",0}, @@ -3384,6 +3448,7 @@ int main(int argc,const char *argv[]) /*{{{*/ {0,"install-recommends","APT::Install-Recommends",CommandLine::Boolean}, {0,"install-suggests","APT::Install-Suggests",CommandLine::Boolean}, {0,"fix-policy","APT::Get::Fix-Policy-Broken",0}, + {0,"solver","APT::Solver",CommandLine::HasArg}, {'c',"config-file",0,CommandLine::ConfigFile}, {'o',"option",0,CommandLine::ArbItem}, {0,0,0,0}}; diff --git a/cmdline/apt-internal-solver.cc b/cmdline/apt-internal-solver.cc new file mode 100644 index 000000000..25ecb7af1 --- /dev/null +++ b/cmdline/apt-internal-solver.cc @@ -0,0 +1,192 @@ +// -*- mode: cpp; mode: fold -*- +// Description /*{{{*/ +/* ##################################################################### + + cover around the internal solver to be able to run it like an external + + ##################################################################### */ + /*}}}*/ +// Include Files /*{{{*/ +#include <apt-pkg/error.h> +#include <apt-pkg/cmndline.h> +#include <apt-pkg/init.h> +#include <apt-pkg/cachefile.h> +#include <apt-pkg/cacheset.h> +#include <apt-pkg/strutl.h> +#include <apt-pkg/edsp.h> +#include <apt-pkg/algorithms.h> +#include <apt-pkg/fileutl.h> +#include <apt-pkg/pkgsystem.h> + +#include <config.h> +#include <apti18n.h> + +#include <unistd.h> +#include <cstdio> + /*}}}*/ + +// ShowHelp - Show a help screen /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool ShowHelp(CommandLine &CmdL) { + ioprintf(std::cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, + COMMON_ARCH,__DATE__,__TIME__); + + std::cout << + _("Usage: apt-internal-resolver\n" + "\n" + "apt-internal-resolver is an interface to use the current internal\n" + "like an external resolver for the APT family for debugging or alike\n" + "\n" + "Options:\n" + " -h This help text.\n" + " -q Loggable output - no progress indicator\n" + " -c=? Read this configuration file\n" + " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" + "apt.conf(5) manual pages for more information and options.\n" + " This APT has Super Cow Powers.\n"); + return true; +} + /*}}}*/ +int main(int argc,const char *argv[]) /*{{{*/ +{ + CommandLine::Args Args[] = { + {'h',"help","help",0}, + {'v',"version","version",0}, + {'q',"quiet","quiet",CommandLine::IntLevel}, + {'q',"silent","quiet",CommandLine::IntLevel}, + {'c',"config-file",0,CommandLine::ConfigFile}, + {'o',"option",0,CommandLine::ArbItem}, + {0,0,0,0}}; + + CommandLine CmdL(Args,_config); + if (pkgInitConfig(*_config) == false || + CmdL.Parse(argc,argv) == false) { + _error->DumpErrors(); + return 2; + } + + // See if the help should be shown + if (_config->FindB("help") == true || + _config->FindB("version") == true) { + ShowHelp(CmdL); + return 1; + } + + if (CmdL.FileList[0] != 0 && strcmp(CmdL.FileList[0], "scenario") == 0) + { + if (pkgInitSystem(*_config,_system) == false) { + std::cerr << "System could not be initialized!" << std::endl; + return 1; + } + pkgCacheFile CacheFile; + CacheFile.Open(NULL, false); + APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1); + FILE* output = stdout; + if (pkgset.empty() == true) + EDSP::WriteScenario(CacheFile, output); + else + EDSP::WriteLimitedScenario(CacheFile, output, pkgset); + fclose(output); + _error->DumpErrors(std::cerr); + return 0; + } + + // Deal with stdout not being a tty + if (!isatty(STDOUT_FILENO) && _config->FindI("quiet", -1) == -1) + _config->Set("quiet","1"); + + if (_config->FindI("quiet", 0) < 1) + _config->Set("Debug::EDSP::WriteSolution", true); + + _config->Set("APT::Solver", "internal"); + _config->Set("edsp::scenario", "stdin"); + int input = STDIN_FILENO; + FILE* output = stdout; + SetNonBlock(input, false); + + EDSP::WriteProgress(0, "Start up solver…", output); + + if (pkgInitSystem(*_config,_system) == false) { + std::cerr << "System could not be initialized!" << std::endl; + return 1; + } + + EDSP::WriteProgress(1, "Read request…", output); + + if (WaitFd(input, false, 5) == false) + std::cerr << "WAIT timed out in the resolver" << std::endl; + + std::list<std::string> install, remove; + bool upgrade, distUpgrade, autoRemove; + if (EDSP::ReadRequest(input, install, remove, upgrade, distUpgrade, autoRemove) == false) { + std::cerr << "Parsing the request failed!" << std::endl; + return 2; + } + + EDSP::WriteProgress(5, "Read scenario…", output); + + pkgCacheFile CacheFile; + CacheFile.Open(NULL, false); + + EDSP::WriteProgress(50, "Apply request on scenario…", output); + + if (EDSP::ApplyRequest(install, remove, CacheFile) == false) { + std::cerr << "Failed to apply request to depcache!" << std::endl; + return 3; + } + + pkgProblemResolver Fix(CacheFile); + for (std::list<std::string>::const_iterator i = remove.begin(); + i != remove.end(); ++i) { + pkgCache::PkgIterator P = CacheFile->FindPkg(*i); + Fix.Clear(P); + Fix.Protect(P); + Fix.Remove(P); + } + + for (std::list<std::string>::const_iterator i = install.begin(); + i != install.end(); ++i) { + pkgCache::PkgIterator P = CacheFile->FindPkg(*i); + Fix.Clear(P); + Fix.Protect(P); + } + + for (std::list<std::string>::const_iterator i = install.begin(); + i != install.end(); ++i) + CacheFile->MarkInstall(CacheFile->FindPkg(*i), true); + + EDSP::WriteProgress(60, "Call problemresolver on current scenario…", output); + + if (upgrade == true) { + if (pkgAllUpgrade(CacheFile) == false) { + EDSP::WriteError("ERR_UNSOLVABLE_UPGRADE", "An upgrade error occured", output); + return 0; + } + } else if (distUpgrade == true) { + if (pkgDistUpgrade(CacheFile) == false) { + EDSP::WriteError("ERR_UNSOLVABLE_DIST_UPGRADE", "An dist-upgrade error occured", output); + return 0; + } + } else if (Fix.Resolve() == false) { + EDSP::WriteError("ERR_UNSOLVABLE", "An error occured", output); + return 0; + } + + EDSP::WriteProgress(95, "Write solution…", output); + + if (EDSP::WriteSolution(CacheFile, output) == false) { + std::cerr << "Failed to output the solution!" << std::endl; + return 4; + } + + EDSP::WriteProgress(100, "Done", output); + + bool const Errors = _error->PendingError(); + if (_config->FindI("quiet",0) > 0) + _error->DumpErrors(std::cerr); + else + _error->DumpErrors(std::cerr, GlobalError::DEBUG); + return Errors == true ? 100 : 0; +} + /*}}}*/ diff --git a/cmdline/apt-mark.cc b/cmdline/apt-mark.cc index b2c664979..2d5eed29d 100644 --- a/cmdline/apt-mark.cc +++ b/cmdline/apt-mark.cc @@ -5,17 +5,26 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/cachefile.h> #include <apt-pkg/cacheset.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/error.h> #include <apt-pkg/init.h> #include <apt-pkg/strutl.h> - -#include <config.h> -#include <apti18n.h> +#include <apt-pkg/pkgsystem.h> +#include <apt-pkg/fileutl.h> #include <algorithm> +#include <errno.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/wait.h> +#include <fcntl.h> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -32,14 +41,14 @@ bool DoAuto(CommandLine &CmdL) 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) { @@ -79,7 +88,7 @@ bool DoMarkAuto(CommandLine &CmdL) 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")); @@ -87,7 +96,7 @@ bool DoMarkAuto(CommandLine &CmdL) 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) @@ -155,13 +164,63 @@ bool DoHold(CommandLine &CmdL) if (unlikely(Cache == NULL)) return false; - APT::PackageSet pkgset = APT::PackageSet::FromCommandLine(CacheFile, CmdL.FileList + 1); + // Generate the base argument list for dpkg + std::vector<const char *> Args; + string Tmp = _config->Find("Dir::Bin::dpkg","dpkg"); + { + string const dpkgChrootDir = _config->FindDir("DPkg::Chroot-Directory", "/"); + size_t dpkgChrootLen = dpkgChrootDir.length(); + if (dpkgChrootDir != "/" && Tmp.find(dpkgChrootDir) == 0) + { + if (dpkgChrootDir[dpkgChrootLen - 1] == '/') + --dpkgChrootLen; + Tmp = Tmp.substr(dpkgChrootLen); + } + } + Args.push_back(Tmp.c_str()); + + // Stick in any custom dpkg options + Configuration::Item const *Opts = _config->Tree("DPkg::Options"); + if (Opts != 0) + { + Opts = Opts->Child; + for (; Opts != 0; Opts = Opts->Next) + { + if (Opts->Value.empty() == true) + continue; + Args.push_back(Opts->Value.c_str()); + } + } + + size_t const BaseArgs = Args.size(); + // we need to detect if we can qualify packages with the architecture or not + Args.push_back("--assert-multi-arch"); + Args.push_back(NULL); + + + pid_t dpkgAssertMultiArch = ExecFork(); + if (dpkgAssertMultiArch == 0) + { + std::string const chrootDir = _config->FindDir("DPkg::Chroot-Directory"); + if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0) + _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --assert-multi-arch", chrootDir.c_str()); + // redirect everything to the ultimate sink as we only need the exit-status + int const nullfd = open("/dev/null", O_RDONLY); + dup2(nullfd, STDIN_FILENO); + dup2(nullfd, STDOUT_FILENO); + dup2(nullfd, STDERR_FILENO); + execvp(Args[0], (char**) &Args[0]); + _error->WarningE("dpkgGo", "Can't detect if dpkg supports multi-arch!"); + _exit(2); + } + + 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();) { if ((Pkg->SelectedState == pkgCache::State::Hold) == MarkHold) { @@ -169,9 +228,25 @@ bool DoHold(CommandLine &CmdL) ioprintf(c1out,_("%s was already set on hold.\n"), Pkg.FullName(true).c_str()); else ioprintf(c1out,_("%s was already not hold.\n"), Pkg.FullName(true).c_str()); - pkgset.erase(Pkg); - continue; + Pkg = pkgset.erase(Pkg, true); + } + else + ++Pkg; + } + + bool dpkgMultiArch = false; + if (dpkgAssertMultiArch > 0) + { + int Status = 0; + while (waitpid(dpkgAssertMultiArch, &Status, 0) != dpkgAssertMultiArch) + { + if (errno == EINTR) + continue; + _error->WarningE("dpkgGo", _("Waited for %s but it wasn't there"), "dpkg --assert-multi-arch"); + break; } + if (WIFEXITED(Status) == true && WEXITSTATUS(Status) == 0) + dpkgMultiArch = true; } if (pkgset.empty() == true) @@ -179,7 +254,7 @@ bool DoHold(CommandLine &CmdL) 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()); @@ -189,36 +264,60 @@ bool DoHold(CommandLine &CmdL) return true; } - string dpkgcall = _config->Find("Dir::Bin::dpkg", "dpkg"); - std::vector<string> const dpkgoptions = _config->FindVector("DPkg::options"); - for (std::vector<string>::const_iterator o = dpkgoptions.begin(); - o != dpkgoptions.end(); ++o) - dpkgcall.append(" ").append(*o); - dpkgcall.append(" --set-selections"); - FILE *dpkg = popen(dpkgcall.c_str(), "w"); - if (dpkg == NULL) - return _error->Errno("DoHold", "fdopen on dpkg stdin failed"); - - for (APT::PackageSet::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg) + Args.erase(Args.begin() + BaseArgs, Args.end()); + Args.push_back("--set-selections"); + Args.push_back(NULL); + + int external[2] = {-1, -1}; + if (pipe(external) != 0) + return _error->WarningE("DoHold", "Can't create IPC pipe for dpkg --set-selections"); + + pid_t dpkgSelection = ExecFork(); + if (dpkgSelection == 0) + { + close(external[1]); + std::string const chrootDir = _config->FindDir("DPkg::Chroot-Directory"); + if (chrootDir != "/" && chroot(chrootDir.c_str()) != 0) + _error->WarningE("getArchitecture", "Couldn't chroot into %s for dpkg --set-selections", chrootDir.c_str()); + int const nullfd = open("/dev/null", O_RDONLY); + dup2(external[0], STDIN_FILENO); + dup2(nullfd, STDOUT_FILENO); + dup2(nullfd, STDERR_FILENO); + execvp(Args[0], (char**) &Args[0]); + _error->WarningE("dpkgGo", "Can't detect if dpkg supports multi-arch!"); + _exit(2); + } + + FILE* dpkg = fdopen(external[1], "w"); + for (APT::PackageList::iterator Pkg = pkgset.begin(); Pkg != pkgset.end(); ++Pkg) { if (MarkHold == true) { - fprintf(dpkg, "%s hold\n", Pkg.FullName(true).c_str()); + fprintf(dpkg, "%s hold\n", Pkg.FullName(!dpkgMultiArch).c_str()); ioprintf(c1out,_("%s set on hold.\n"), Pkg.FullName(true).c_str()); } else { - fprintf(dpkg, "%s install\n", Pkg.FullName(true).c_str()); + fprintf(dpkg, "%s install\n", Pkg.FullName(!dpkgMultiArch).c_str()); ioprintf(c1out,_("Canceled hold on %s.\n"), Pkg.FullName(true).c_str()); } } + fclose(dpkg); - int const status = pclose(dpkg); - if (status == -1) - return _error->Errno("DoHold", "dpkg execution failed in the end"); - if (WIFEXITED(status) == false || WEXITSTATUS(status) != 0) - return _error->Error(_("Executing dpkg failed. Are you root?")); - return true; + if (dpkgSelection > 0) + { + int Status = 0; + while (waitpid(dpkgSelection, &Status, 0) != dpkgSelection) + { + if (errno == EINTR) + continue; + _error->WarningE("dpkgGo", _("Waited for %s but it wasn't there"), "dpkg --set-selection"); + break; + } + if (WIFEXITED(Status) == true && WEXITSTATUS(Status) == 0) + return true; + } + return _error->Error(_("Executing dpkg failed. Are you root?")); } /*}}}*/ /* ShowHold - show packages set on hold in dpkg status {{{*/ @@ -261,7 +360,7 @@ bool ShowHold(CommandLine &CmdL) /* */ bool ShowHelp(CommandLine &CmdL) { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); cout << diff --git a/cmdline/apt-sortpkgs.cc b/cmdline/apt-sortpkgs.cc index f95a434cc..46989044e 100644 --- a/cmdline/apt-sortpkgs.cc +++ b/cmdline/apt-sortpkgs.cc @@ -12,21 +12,24 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/tagfile.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/init.h> #include <apt-pkg/strutl.h> +#include <apt-pkg/fileutl.h> +#include <apt-pkg/pkgsystem.h> -#include <config.h> -#include <apti18n.h> - #include <vector> #include <algorithm> #include <locale.h> #include <unistd.h> + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -141,7 +144,7 @@ bool DoIt(string InFile) /* */ int ShowHelp() { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) return 0; diff --git a/cmdline/makefile b/cmdline/makefile index e867dae73..f3712232a 100644 --- a/cmdline/makefile +++ b/cmdline/makefile @@ -33,20 +33,6 @@ LIB_MAKES = apt-pkg/makefile SOURCE = apt-cdrom.cc include $(PROGRAM_H) -# The apt-sortpkgs program -PROGRAM=apt-sortpkgs -SLIBS = -lapt-pkg $(INTLLIBS) -LIB_MAKES = apt-pkg/makefile -SOURCE = apt-sortpkgs.cc -include $(PROGRAM_H) - -# The apt-extracttemplates program -PROGRAM=apt-extracttemplates -SLIBS = -lapt-pkg -lapt-inst $(INTLLIBS) -LIB_MAKES = apt-pkg/makefile -SOURCE = apt-extracttemplates.cc -include $(PROGRAM_H) - # The apt-key program SOURCE=apt-key TO=$(BIN) @@ -65,3 +51,36 @@ include $(PROGRAM_H) #TO=$(BIN) #TARGET=program #include $(COPY_H) + +# +# the following programs are shipped in apt-utils +# +APT_DOMAIN:=apt-utils + +# The apt-sortpkgs program +PROGRAM=apt-sortpkgs +SLIBS = -lapt-pkg $(INTLLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = apt-sortpkgs.cc +include $(PROGRAM_H) + +# The apt-extracttemplates program +PROGRAM=apt-extracttemplates +SLIBS = -lapt-pkg -lapt-inst $(INTLLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = apt-extracttemplates.cc +include $(PROGRAM_H) + +# The internal solver acting as an external +PROGRAM=apt-internal-solver +SLIBS = -lapt-pkg $(INTLLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = apt-internal-solver.cc +include $(PROGRAM_H) + +# This just dumps out the state +PROGRAM=apt-dump-solver +SLIBS = -lapt-pkg $(INTLLIBS) +LIB_MAKES = apt-pkg/makefile +SOURCE = apt-dump-solver.cc +include $(PROGRAM_H) diff --git a/configure.in b/configure.in index b2880c99c..78ad06b72 100644 --- a/configure.in +++ b/configure.in @@ -17,11 +17,12 @@ AC_INIT(configure.in) AC_CONFIG_AUX_DIR(buildlib) AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) -dnl -- SET THIS TO THE RELEASE VERSION -- -AC_DEFINE_UNQUOTED(VERSION,"0.8.2") PACKAGE="apt" +PACKAGE_VERSION="0.8.16~exp14" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") +AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION") AC_SUBST(PACKAGE) +AC_SUBST(PACKAGE_VERSION) dnl Check the archs, we want the target type. AC_CANONICAL_SYSTEM @@ -31,6 +32,10 @@ AC_CHECK_TOOL_PREFIX AC_PROG_CC AC_ISC_POSIX +dnl check for large file support and enable it if possible +dnl do this early as other stuff might depend on it +AC_SYS_LARGEFILE + dnl Check for other programs AC_PROG_CXX AC_PROG_CPP @@ -151,7 +156,7 @@ if test "$cross_compiling" = "yes" -a "x$archline" = "x"; then AC_MSG_ERROR(When cross compiling, architecture must be present in sizetable) fi AC_C_BIGENDIAN - + dnl We do not need this if we have inttypes! HAVE_C9X=yes if test x"$apt_cv_c9x_ints" = x"no"; then @@ -214,4 +219,4 @@ fi AC_SUBST(USE_NLS) AC_PATH_PROG(BASH, bash) -AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile,make -s dirs) +AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile:doc/Doxyfile.in,make -s dirs) diff --git a/debian/apt-doc.docs b/debian/apt-doc.docs index 86aa69ceb..4ec23f55d 100644 --- a/debian/apt-doc.docs +++ b/debian/apt-doc.docs @@ -1,2 +1,3 @@ README.progress-reporting README.MultiArch +doc/external-dependency-solver-protocol.txt diff --git a/debian/apt-utils.dirs b/debian/apt-utils.dirs index 14f5b95d7..681e55192 100644 --- a/debian/apt-utils.dirs +++ b/debian/apt-utils.dirs @@ -1,2 +1,2 @@ -usr/lib +usr/lib/apt/solvers usr/bin diff --git a/debian/apt-utils.install b/debian/apt-utils.install index d947f26d4..cdbcb2f37 100644 --- a/debian/apt-utils.install +++ b/debian/apt-utils.install @@ -1 +1 @@ -bin/libapt-inst*.so.* usr/lib/ +usr/share/locale/*/*/apt-utils.mo diff --git a/debian/apt-utils.links b/debian/apt-utils.links new file mode 100644 index 000000000..5bf138c4a --- /dev/null +++ b/debian/apt-utils.links @@ -0,0 +1 @@ +usr/bin/apt-internal-solver usr/lib/apt/solvers/apt diff --git a/debian/apt.cron.daily b/debian/apt.cron.daily index 69f97a36b..6f6dc92a4 100644 --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@ -8,7 +8,7 @@ # Dir "/"; # - RootDir for all configuration files # -# Dir::Cache "var/apt/cache/"; +# Dir::Cache "var/cache/apt/"; # - Set apt package cache directory # # Dir::Cache::Archives "archives/"; diff --git a/debian/apt.dirs b/debian/apt.dirs index 2770d79bb..f9c0b6c3e 100644 --- a/debian/apt.dirs +++ b/debian/apt.dirs @@ -1,5 +1,6 @@ usr/bin usr/lib/apt/methods +usr/lib/apt/solvers usr/lib/dpkg/methods/apt etc/apt etc/apt/apt.conf.d diff --git a/debian/apt.install b/debian/apt.install index 979e04ce2..9d4008fab 100644 --- a/debian/apt.install +++ b/debian/apt.install @@ -1,5 +1,4 @@ bin/apt-* usr/bin/ -bin/libapt-pkg*.so.* usr/lib/ bin/methods/* usr/lib/apt/methods/ scripts/dselect/* usr/lib/dpkg/methods/apt/ -locale usr/share/ +usr/share/locale/*/*/apt.mo diff --git a/debian/changelog b/debian/changelog index 97b9a182d..72ecc2f27 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,460 @@ +apt (0.8.16~exp14) UNRELEASED; urgency=low + + [ Michael Vogt ] + * apt-pkg/packagemanager.cc: + - fix inconsistent clog/cout usage in the debug output + + [ David Kalnischkies ] + * do not update po and pot files in the process of the build as this + causes timestamp changes for the mo files which therefore can't + be refcounted by dpkg for your M-A: same packages + (Closes: #659333, LP: #924628) + * apt-inst/database.{cc,h}, apt-inst/deb/dpkgdb.{cc,h}: + - drop instead of fix as it is only needed if you want to reimplement dpkg + and comes straight from the beginning of last decade (Closes: #663372) + * apt-inst/deb/debfile.cc: + - {Extract,Merge}Control() is another instance of "lets reimplement dpkg" + so shot of this code before someone ends up using this… + * debian/libapt-pkg4.12: + - update symbols file + * debian/apt-utils.install: + - ship the ftparchive, apt-extractemplates and apt-sortpkgs locales + in the apt-utils package instead of the apt package + * apt-pkg/packagemanager.cc: + - recheck all dependencies if we changed a package in SmartConfigure + as this could break an earlier dependency (LP: #940396) + - recheck dependencies in SmartUnpack after a change, too + * apt-pkg/acquire-worker.cc: + - check return of write() as gcc recommends + * apt-pkg/acquire.cc: + - check return of write() as gcc recommends + * apt-pkg/cdrom.cc: + - check return of chdir() and link() as gcc recommends + * apt-pkg/clean.cc: + - check return of chdir() as gcc recommends + * apt-pkg/contrib/netrc.cc: + - check return of asprintf() as gcc recommends + * methods/rred.cc: + - check return of writev() as gcc recommends + * methods/mirror.cc: + - check return of chdir() as gcc recommends + * apt-pkg/deb/dpkgpm.cc: + - check return of write() a gcc recommends + * apt-inst/deb/debfile.cc: + - check return of chdir() as gcc recommends + * apt-inst/deb/dpkgdb.cc: + - check return of chdir() as gcc recommends + * methods/makefile: + - do not link rred against libz anymore as FileFd handles all + this transparently now + * debian/control: + - bump Standards-Version to 3.9.3 (no changes needed) + * doc/apt-get.8.xml: + - typofix: respect → respecting, thanks Mike Erickson! (Closes: #664833) + + -- David Kalnischkies <kalnischkies@gmail.com> Thu, 22 Mar 2012 12:53:34 +0100 + +apt (0.8.16~exp13) experimental; urgency=low + + [ David Kalnischkies ] + * apt-pkg/acquire-item.cc: + - remove 'old' InRelease file if we can't get a new one before + proceeding with Release.gpg to avoid the false impression of a still + trusted repository by a (still present) old InRelease file. + Thanks to Simon Ruderich for reporting this issue! (CVE-2012-0214) + - add Debug::pkgAcqArchive::NoQueue to disable package downloading + * apt-pkg/deb/dpkgpm.cc: + - chroot if needed before dpkg --assert-multi-arch + - ensure that dpkg binary doesn't have the chroot-directory prefixed + - call dpkg --assert-multi-arch with execvp instead of execv + - save the universe by not printing messages about apport if a package + with this name is not installed (Closes: #619646) + - handle a SIGINT in all modes as a break after the currently running + dpkg transaction instead of ignoring it completely + * apt-pkg/depcache.cc: + - if a M-A:same package is marked for reinstall, mark all it's installed + silbings for reinstallation as well (LP: #859188) + * apt-pkg/contrib/configuration.cc: + - do not stop parent transversal in FindDir if the value is empty + * methods/http{s,}.cc: + - if a file without an extension is requested send an 'Accept: text/*' + header to avoid that the server chooses unsupported compressed files + in a content-negotation attempt (Closes: #657560) + - remove the arbitrary MAXLEN limit for response lines (Closes: #658346) + * apt-pkg/aptconfiguration.cc: + - chroot if needed before calling dpkg --print-foreign-architectures + - ensure that architectures are not added multiple times + * cmdline/apt-mark.cc: + - detect if dpkg has multiarch support before calling --set-selections + - correctly ignore already (un)hold packages + * apt-pkg/cachefile.cc: + - clean up lost atomic cachefiles with 'clean' (Closes: #650513) + * apt-pkg/indexrecords.cc: + - do not create empty Entries as a sideeffect of Lookup() + * apt-pkg/acquire-item.cc: + - drop support for i18n/Index file (introduced in 0.8.11) and use + the Release file instead to get the Translations (Closes: #649314) + - use pdiff for Translation-* files if available (Closes: #657902) + * ftparchive/writer.cc: + - add 'Translation-*' to the default patterns + * cmdline/apt-get.cc: + - if a package can't be removed as it is not installed, suggest to + the user an (installed) multiarch silbing with 'Did you mean?' + - improve 'error' message for packages which are only referenced + e.g. in a Depends line and are now requested for removal + * cmdline/apt-cache.cc: + - correct --pre-depends option by using dash consistently (LP: #940837) + * apt-pkg/packagemanager.cc: + - do not try to a void a breaks if the broken package pre-depends + on the breaker, but let dpkg auto-deconfigure it + * apt-pkg/contrib/fileutl.cc: + - do not warn about the ignoring of directories (Closes: #662762) + + [ Steve Langasek ] + * cmdline/apt-get.cc: + - for cross-build-dependencies M-A: none should be DEB_HOST_ARCH, + not DEB_BUILD_ARCH (Closes: #646288) + + [ Colin Watson ] + * apt-pkg/algorithms.cc: + - don't break out of the main-resolver loop for Breaks to deal with all + of them in a single iteration (Closes: #657695, LP: #922485) + - use a signed int instead of short for score calculation as upgrades + become so big now that it can overflow (Closes: #657732, LP: #917173) + * Fix IndexCopy::CopyPackages and TranslationsCopy::CopyTranslations to + handle compressed files again (LP: #924182, closes: #658096) + + [ Michael Vogt ] + * apt-pkg/deb/dpkgpm.cc: + - fix crash when a package is in removed but residual config state + (LP: #923807) + * apt-pkg/contrib/fileutl.h: + - fix compat with FileFd::OpenDescriptor() in ReadOnlyGzip mode + * apt-pkg/packagemanager.cc: + - fix bug in predepends handling - ensure that packages that needs + unpackaging are unpacked before they are configured (LP: #927993) + + [ Julian Andres Klode ] + * apt-pkg/deb/deblistparser.cc: + - Set the Essential flag on APT instead of only Important + * apt-pkg/packagemanager.cc: + - Do not use immediate configuration for packages with the Important flag + * Treat the Important flag like the Essential flag with those differences: + - No Immediate configuration (see above) + - Not automatically installed during dist-upgrade + - No higher score for installation ordering + + -- Michael Vogt <mvo@debian.org> Tue, 06 Mar 2012 18:12:57 +0100 + +apt (0.8.16~exp12) experimental; urgency=low + + [ Michael Vogt ] + * apt-pkg/deb/dpkgpm.cc: + - fix segfault on pkg removal + + [ David Kalnischkies ] + * apt-pkg/cacheiterators.h: + - return the correct version arch for all+foreign, too + * apt-pkg/packagemanager.cc: + - ignore breaks on not-installed versions while searching for + breakage loops as we don't have to avoid them + * debian/control: + - remove APT from the short descriptions as lintian doesn't like it + and it doesn't transport any information for a reader anyway + - apply typofixes by Pascal De Vuyst, thanks! (Closes: #652834, #652835) + * debian/rules: + - apply patch to enable usage of hardning CPPFLAGS and LDFLAGS by + Moritz Muehlenhoff, thanks! (Closes: #653504) + * methods/https.cc: + - use curls list append instead of appending Range and If-Range by hand + which generates malformed requests, thanks Mel Collins for the hint! + (Closes: #646381) + * test/libapt/run-tests: + - hurd doesn't have dmesg yet and we don't really need it either, + so use with $0 a more stable data source for hashsumming + + [ Pino Toscano ] + * test/libapt/globalerror_test.cc: + - errno 0 has a different strerror on hurd, so generate the expected + message dynamically instead of hardcoding 'Success' (Closes: #656530) + + -- Michael Vogt <mvo@debian.org> Tue, 24 Jan 2012 12:24:38 +0100 + +apt (0.8.16~exp11) experimental; urgency=low + + [ David Kalnischkies ] + * apt-pkg/deb/dpkgpm.cc: + - redirect out/input of dpkg --assert-multi-arch to /dev/null + - if multi-arch is detected ensure that pkg:all is reported as pkg:all + + -- Michael Vogt <mvo@debian.org> Thu, 19 Jan 2012 13:48:18 +0100 + +apt (0.8.16~exp10) experimental; urgency=low + + [ David Kalnischkies ] + * apt-pkg/depcache.cc: + - implicit conflicts (for multiarch) are supposed to conflict + only with real packages, not with virtual providers + * apt-pkg/pkgcache.cc: + - ignore implicit conflicts on providers in AllTarget, too + * apt-pkg/deb/dpkgpm.cc: + - check if dpkg supports multiarch with --assert-multi-arch + and if it does be always explicit about the architecture + * apt-pkg/contrib/fileutl.h: + - store the offset in the internal fd before calculate size of + the zlib-handled file to jump back to this place again + * apt-pkg/aptconfiguration.cc: + - parse dpkg --print-foreign-architectures correctly in + case archs are separated by newline instead of space, too. + (Closes: #655590) + + [ Michael Vogt ] + * apt-pkg/contrib/fileutl.h: + - fix segfault triggered by the python-apt testsuite + + -- Michael Vogt <mvo@debian.org> Wed, 18 Jan 2012 12:52:26 +0100 + +apt (0.8.16~exp9) experimental; 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 + * g++ 4.7 fixes + + [ 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 <mvo@debian.org> Thu, 05 Jan 2012 20:26:31 +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 + - do not enter an endless loop for (essential) pre-dependency loops + * apt-pkg/contrib/sha2_internal.cc: + - use a pointer-union to peace gcc strict-aliasing warning + * apt-pkg/deb/deblistparser.cc: + - M-A: foreign packages provide for other archs, too + + -- David Kalnischkies <kalnischkies@gmail.com> Thu, 03 Nov 2011 09:40:29 -0500 + +apt (0.8.16~exp7) experimental; urgency=low + + [ David Kalnischkies ] + * do not pollute namespace in the headers with using (Closes: #500198) + * use forward declaration in headers if possible instead of includes + * remove old APT_COMPATIBILITY ifdef's + * apt-pkg/deb/dpkgpm.cc: + - use std::vector instead of fixed size arrays to store args and + multiarch-packagename strings + - load the dpkg base arguments only one time and reuse them later + * cmdline/apt-get.cc: + - follow Provides in the evaluation of saving candidates, too, for + statisfying garbage package dependencies (Closes: #640590) + * apt-pkg/algorithms.cc: + - if a package is garbage, don't try to save it with FixByInstall + * apt-pkg/deb/debsrcrecords.cc: + - remove the limit of 400 Binaries for a source package (Closes: #622110) + * apt-pkg/deb/deblistparser.cc: + - fix crash when the dynamic mmap needs to be grown in + LoadReleaseInfo (LP: #854090) + * apt-pkg/deb/debmetaindex.cc: + - none is a separator, not a language: no need for Index (Closes: #624218) + * apt-pkg/aptconfiguration.cc: + - do not builtin languages only if none is forced (Closes: #643787) + * apt-pkg/pkgcachegen.cc: + - refactor MergeList by creating -Group, -Package and -Version specialist + - share description list between "same" versions (LP: #868977) + This also means that descriptions are shared across archives now. + - add implicit dependencies needed for Multi-Arch at the time a Version + struct is created and not at the end of the cache generation + * apt-pkg/pkgcache.cc: + - always prefer "en" over "" for "en"-language regardless of cache-order + + [ Michael Vogt ] + * apt-pkg/contrib/configuration.cc: + - fix double delete (LP: #848907) + - ignore only the invalid regexp instead of all options + * apt-pkg/acquire-item.h, apt-pkg/deb/debmetaindex.cc: + - fix fetching language information by adding OptionalSubIndexTarget + * methods/https.cc: + - cleanup broken downloads properly + + [ Colin Watson ] + * ftparchive/cachedb.cc: + - fix buffersize in bytes2hex + + -- Michael Vogt <mvo@debian.org> Fri, 14 Oct 2011 13:51:35 +0200 + +apt (0.8.16~exp6) experimental; urgency=low + + [ Christopher Baines ] + * enable APT in unpack/configure ordering to handle loops as well + as tight dependencies between immediate packages better + enabling also the possibility to mark all packages as immediate + (at least Closes: #353290, #540227, #559733, #621836, #639290) + + [ David Kalnischkies ] + * [abi-break] Support large files in the complete toolset. Indexes of this + size are pretty unlikely for now, but we need it for deb + packages which could become bigger than 4GB now (LP: #815895) + * merged the debian-sid branch + + [ Michael Vogt ] + * bump ABI version + + -- Michael Vogt <mvo@debian.org> Wed, 14 Sep 2011 21:06:51 +0200 + +apt (0.8.16~exp5) experimental; urgency=low + + * merged the latest debian-sid fixes + * apt-pkg/makefile: + - install sha256.h compat header + * apt-pkg/pkgcachegen.{cc,h}: + - use ref-to-ptr semantic in NewDepends() to ensure that the + libapt does not segfault if the cache is remapped in between + (LP: #812862) + - fix crash when P.Arch() was used but the cache got remapped + * apt-pkg/acquire-item.{cc,h}: + - do not check for a "Package" tag in optional index targets + like the translations index + * apt-pkg/acquire.cc: + - fix potential divide-by-zero + * methods/mirror.cc: + - include the architecture(s) in the query string as well so + that the server can make better decisions + + -- Michael Vogt <mvo@debian.org> Mon, 15 Aug 2011 14:52:54 +0200 + +apt (0.8.16~exp4) experimental; urgency=low + + [ Julian Andres Klode ] + * apt-pkg/pkgcache.h: + - [ABI break] Add pkgCache::Header::CacheFileSize, storing the cache size + * apt-pkg/pkgcachegen.cc: + - Write the file size to the cache + * apt-pkg/pkgcache.cc: + - Check that cache is at least CacheFileSize bytes large (LP: #16467) + + [ Michael Vogt ] + * merged latest fixes from debian-sid + * apt-pkg/cdrom.{cc,h}: + - cleanup old ABI break avoidance hacks + * [ABI break] apt-pkg/acquire-item.{cc,h}: + - cleanup around OptionalIndexTarget and SubIndexTarget + * [ABI break] merged patch from Jonathan Thomas to have a new + RecordField() function in the pkgRecorder parser. Many thanks + Thomas + * [ABI break] merge patch from Jonathan Thomas to speed up the + depcache by caching the install-recommends and install-suggests + values + * apt-pkg/contrib/fileutl.{cc,h}: + - add GetModificationTime() helper + * apt-pkg/pkgcachegen.cc: + - regenerate the cache if the sources.list changes to ensure + that changes in the ordering there will be honored by apt + * apt-pkg/sourcelist.{cc,h}: + - add pkgSourceList::GetLastModifiedTime() helper + + -- Michael Vogt <mvo@debian.org> Thu, 28 Jul 2011 16:57:08 +0200 + +apt (0.8.16~exp3) experimental; urgency=low + + [ David Kalnischkies ] + * apt-pkg/pkgcache.h: + - readd All{Foreign,Allowed} as suggested by Julian to + remain strictly API compatible + * apt-pkg/acquire*.{cc,h}: + - try even harder to support really big files in the fetcher by + converting (hopefully) everything to 'long long' (Closes: #632271) + * ftparchive/writer.cc: + - generate all checksums in one run over the file for Release + * cmdline/apt-get.cc: + - add an --assume-no option for testing to say 'no' to everything + * apt-pkg/deb/debmetaindex.cc: + - add trusted=yes option to mark unsigned (local) repository as trusted + based on a patch from Ansgar Burchardt, thanks a lot! (Closes: #596498) + + [ Michael Vogt ] + * merge fixes from the debian/unstable upload + * merge lp:~mvo/apt/sha512-template to get fixes for the + sha1/md5 verifiation (closes: #632520) + + -- Michael Vogt <mvo@debian.org> Fri, 15 Jul 2011 09:56:17 +0200 + +apt (0.8.16~exp2) experimental; urgency=low + + [ David Kalnischkies ] + * [ABI-Break] Implement EDSP in libapt-pkg so that all front-ends which + use the internal resolver can now be used also with external + ones as the usage is hidden in between the old API + * provide two edsp solvers in apt-utils: + - 'dump' to quickly output a complete scenario and + - 'apt' to use the internal as an external resolver + * apt-pkg/pkgcache.h: + - clean up mess with the "all" handling in MultiArch to + fix LP: #733741 cleanly for everyone now + * apt-pkg/depcache.cc: + - use a boolean instead of an int for Add/Remove in AddStates + similar to how it works with AddSizes + - let the Mark methods return if their marking was successful + - if a Breaks can't be upgraded, remove it. If it or a Conflict + can't be removed the installation of the breaker fails. + * cmdline/apt-get.cc: + - do not discard the error messages from the resolver and instead + only show the general 'Broken packages' message if nothing else + + [ Stefano Zacchiroli ] + * doc/external-dependency-solver-protocol.txt: + - describe EDSP and the configuration interface around it + + [ Michael Vogt ] + * [ABI-Break] merge lp:~mvo/apt/sha512-template to add support for sha512 + * [ABI-Break] merge lp:~mvo/apt/dpointer to support easier extending + without breaking the ABI + * increase ABI version and update package names + + -- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 13:57:28 +0200 + +apt (0.8.16~exp1) experimental; urgency=low + + * merged with the debian/unstable upload + + -- Michael Vogt <mvo@debian.org> Wed, 29 Jun 2011 12:40:31 +0200 + apt (0.8.15.10) unstable; urgency=high [ David Kalnischkies ] @@ -26,9 +483,9 @@ apt (0.8.15.10) unstable; urgency=high * Polish (Michał Kułach). Closes: #656908 * Danish (Joe Hansen). Closes: #658643 * French: replace "étiquetage" by "épinglage" for "pinning" - + [ Michael Vogt ] - * merged patch from lp:~uusijani/apt/uusi-branch: + * merged patch from lp:~uusijani/apt/uusi-branch: Correct fi translation for hash sum mismatches (lp:420403) Thanks to Jani Uusitalo @@ -81,7 +538,7 @@ apt (0.8.15.8) unstable; urgency=low * cmdline/apt-get.cc: - output list of virtual package providers to c1out in -q=1 instead of /dev/null to unbreak sbuild (LP: #816155) - + [ Michael Vogt ] * apt-pkg/contrib/configuration.cc: - fix double delete (LP: #848907) @@ -368,6 +825,185 @@ apt (0.8.15) unstable; urgency=low -- Michael Vogt <mvo@debian.org> Tue, 28 Jun 2011 18:00:48 +0200 +apt (0.8.15~exp3) experimental; urgency=low + + * debian/control: + - add Breaks: 0.8.15~exp3) for libapt-pkg4.10 and + libapt-inst1.2 (thanks to Jonathan Nieder, closes: #630214) + - use depends for the ${shlibs:Depends} to make the breaks work + + -- Michael Vogt <mvo@debian.org> Fri, 17 Jun 2011 21:51:41 +0200 + +apt (0.8.15~exp2) experimental; urgency=low + + * debian/control: + - fix incorrect Replaces (closes: #630204) for libapt-inst1.2 + + -- Michael Vogt <mvo@debian.org> Wed, 15 Jun 2011 16:51:14 +0200 + +apt (0.8.15~exp1) experimental; urgency=low + + [ Julian Andres Klode ] + * apt-pkg/depcache.cc: + - Really release action groups only once (Closes: #622744) + - Make purge work again for config-files (LP: #244598) (Closes: #150831) + * apt-pkg/acquire-item.cc: + - Reject files known to be invalid (LP: #346386) (Closes: #627642) + * debian/apt.cron.daily: + - Check power after wait, patch by manuel-soto (LP: #705269) + * debian/control: + - Move ${shlibs:Depends} to Pre-Depends, as we do not want APT + unpacked if a library is too old and thus break upgrades + * doc/apt-key.8.xml: + - Document apt-key net-update (LP: #192810) + + [ Christian Perrier ] + * Galician translation update (Miguel Anxo Bouzada). Closes: #626505 + * Italian translation update (Milo Casagrande). Closes: #627834 + * German documentation translation update (Chris Leick). Closes: #629949 + + [ David Kalnischkies ] + * fix a bunch of cppcheck warnings/errors based on a patch by + Niels Thykier, thanks! (Closes: #622805) + * apt-pkg/depcache.cc: + - really include 'rc' packages in the delete count by fixing a + typo which exists since 1999 in the source… (LP: #761175) + - if critical or-group can't be satisfied, exit directly. + * apt-pkg/acquire-method.cc: + - write directly to stdout instead of creating the message in + memory first before writing to avoid hitting limits + - fix order of CurrentURI and UsedMirror in Status() and Log() + * apt-pkg/orderlist.cc: + - let VisitRProvides report if the calls were successful + * apt-pkg/deb/dpkgpm.cc: + - replace obsolete usleep with nanosleep + * debian/apt{,-utils}.symbols: + - update both experimental symbol-files to reflect 0.8.14 state + * debian/rules: + - remove unused embedded jquery by doxygen from libapt-pkg-doc + * cmdline/apt-mark.cc: + - reimplement apt-mark in c++ + - provide a 'showmanual' command (Closes: #582791) + - provide a 'dpkg --set-selections' wrapper to set/release holds + * cmdline/apt-get.cc: + - deprecate mostly undocumented 'markauto' in favor of 'apt-mark' + * cmdline/apt-cache.cc: + - deprecate mostly undocumented 'showauto' in favor of 'apt-mark' + * apt-pkg/pkgcache.cc: + - really ignore :arch in FindPkg() in non-multiarch environment + * doc/po/de.po: + - undo the translation of the command 'dump' in manpage of apt-config + as report by Burghard Grossmann on debian-l10n-german, thanks! + * apt-pkg/deb/debmetaindex.cc: + - do not download TranslationIndex if no Translation-* will be + downloaded later on anyway (Closes: #624218) + * test/versions.lst: + - disable obscure version number tests with versions dpkg doesn't + allow any more as they don't start with a number + * apt-pkg/acquire-worker.cc: + - print filename in the unmatching size warning (Closes: #623137) + * apt-pkg/acquire-item.cc: + - apply fix for poorly worded 'locate file' error message from + Ben Finney, thanks! (Closes: #623171) + * methods/http.cc: + - add config option to ignore a closed stdin to be able to easily + use the method as a simple standalone downloader + - Location header in redirects should be absolute URI, but some + servers just send an absolute path so still deal with it properly + - dequote URL taken from Location in redirects as we will otherwise + quote an already quoted string in the request later (Closes: #602412) + * apt-pkg/contrib/netrc.cc: + - replace non-posix gnu-extension strdupa with strdup + * apt-pkg/packagemanager.cc: + - ensure for Multi-Arch:same packages that they are unpacked in + lock step even in immediate configuration (Closes: #618288) + + [ Michael Vogt ] + * methods/mirror.cc: + - ignore lines starting with "#" in the mirror file + - ignore non http urls in the mirrors + - append the dist (e.g. sid, wheezy) as a query string when + asking for a suitable mirror + * debian/control: + - add libapt-pkg4.10 and libapt-inst1.2 library packages + + -- Michael Vogt <mvo@debian.org> Fri, 10 Jun 2011 15:32:07 +0200 + +apt (0.8.14.2) UNRELEASED; urgency=low + + [ Julian Andres Klode ] + * apt-pkg/depcache.cc: + - Really release action groups only once (Closes: #622744) + - Make purge work again for config-files (LP: #244598) (Closes: #150831) + * debian/apt.cron.daily: + - Check power after wait, patch by manuel-soto (LP: #705269) + * debian/control: + - Move ${shlibs:Depends} to Pre-Depends, as we do not want APT + unpacked if a library is too old and thus break upgrades + * doc/apt-key.8.xml: + - Document apt-key net-update (LP: #192810) + + [ Christian Perrier ] + * Galician translation update (Miguel Anxo Bouzada). Closes: #626505 + + [ David Kalnischkies ] + * fix a bunch of cppcheck warnings/errors based on a patch by + Niels Thykier, thanks! (Closes: #622805) + * apt-pkg/depcache.cc: + - really include 'rc' packages in the delete count by fixing a + typo which exists since 1999 in the source… (LP: #761175) + - if critical or-group can't be satisfied, exit directly. + * apt-pkg/acquire-method.cc: + - write directly to stdout instead of creating the message in + memory first before writing to avoid hitting limits + - fix order of CurrentURI and UsedMirror in Status() and Log() + * apt-pkg/orderlist.cc: + - let VisitRProvides report if the calls were successful + * apt-pkg/deb/dpkgpm.cc: + - replace obsolete usleep with nanosleep + * debian/apt{,-utils}.symbols: + - update both experimental symbol-files to reflect 0.8.14 state + * debian/rules: + - remove unused embedded jquery by doxygen from libapt-pkg-doc + * cmdline/apt-mark.cc: + - reimplement apt-mark in c++ + - provide a 'showmanual' command (Closes: #582791) + - provide a 'dpkg --set-selections' wrapper to set/release holds + * cmdline/apt-get.cc: + - deprecate mostly undocumented 'markauto' in favor of 'apt-mark' + * cmdline/apt-cache.cc: + - deprecate mostly undocumented 'showauto' in favor of 'apt-mark' + * apt-pkg/pkgcache.cc: + - really ignore :arch in FindPkg() in non-multiarch environment + * doc/po/de.po: + - undo the translation of the command 'dump' in manpage of apt-config + as report by Burghard Grossmann on debian-l10n-german, thanks! + * apt-pkg/deb/debmetaindex.cc: + - do not download TranslationIndex if no Translation-* will be + downloaded later on anyway (Closes: #624218) + * test/versions.lst: + - disable obscure version number tests with versions dpkg doesn't + allow any more as they don't start with a number + * apt-pkg/acquire-worker.cc: + - print filename in the unmatching size warning (Closes: #623137) + * apt-pkg/acquire-item.cc: + - apply fix for poorly worded 'locate file' error message from + Ben Finney, thanks! (Closes: #623171) + * methods/http.cc: + - add config option to ignore a closed stdin to be able to easily + use the method as a simple standalone downloader + - Location header in redirects should be absolute URI, but some + servers just send an absolute path so still deal with it properly + - dequote URL taken from Location in redirects as we will otherwise + quote an already quoted string in the request later (Closes: #602412) + * apt-pkg/contrib/netrc.cc: + - replace non-posix gnu-extension strdupa with strdup + * apt-pkg/packagemanager.cc: + - ensure for Multi-Arch:same packages that they are unpacked in + lock step even in immediate configuration (Closes: #618288) + + -- Michael Vogt <mvo@debian.org> Mon, 16 May 2011 14:57:52 +0200 + apt (0.8.14.1) unstable; urgency=low * apt-pkg/acquire-item.cc: diff --git a/debian/control b/debian/control index 6d0f16b70..528468c7c 100644 --- a/debian/control +++ b/debian/control @@ -5,43 +5,84 @@ Maintainer: APT Development Team <deity@lists.debian.org> Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>, 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, 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 +Standards-Version: 3.9.3 +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 Build-Conflicts: autoconf2.13, automake1.4 Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/ Vcs-Browser: http://bzr.debian.org/loggerhead/apt/debian-sid/ Package: apt Architecture: any -Pre-Depends: ${shlibs:Depends} -Depends: debian-archive-keyring, ${misc:Depends}, gnupg +Depends: ${shlibs:Depends}, ${misc:Depends}, debian-archive-keyring, gnupg Replaces: manpages-pl (<< 20060617-3~) -Provides: ${libapt-pkg:provides} Conflicts: python-apt (<< 0.7.93.2~) Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt -Description: Advanced front-end for dpkg - This is Debian's next generation front-end for the dpkg package manager. - It provides the apt-get utility and APT dselect method that provides a - simpler, safer way to install and upgrade packages. +Description: commandline package manager + This package provides commandline tools for searching and + managing as well as querying information about packages + as a low-level access to all features of the libapt-pkg library. . - APT features complete installation ordering, multiple source capability - and several other unique features, see the Users Guide in apt-doc. + These include: + * apt-get for retrieval of packages and information about them + from authenticated sources and for installation, upgrade and + removal of packages together with their dependencies + * apt-cache for querying available information about installed + as well as installable packages + * apt-cdrom to use removable media as a source for packages + * apt-config as an interface to the configuration settings + * apt-key as an interface to manage authentication keys + +Package: libapt-pkg4.12 +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: package managment runtime library + This library provides the common functionality for searching and + managing packages as well as information about packages. + Higher-level package managers can depend upon this library. + . + This includes: + * retrieval of information about packages from multiple sources + * retrieval of packages and all dependent packages + needed to satisfy a request either through an internal + solver or by interfacing with an external one + * authenticating the sources and validating the retrieved data + * installation and removal of packages in the system + * providing different transports to retrieve data over cdrom, ftp, + http, rsh as well as an interface to add more transports like + https (apt-transport-https) and debtorrent (apt-transport-debtorrent). + +Package: libapt-inst1.4 +Architecture: any +Multi-Arch: same +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: deb package format runtime library + This library provides methods to query and extract information + from deb packages. This includes the control data and the package + file content. Package: apt-doc Architecture: all Priority: optional Depends: ${misc:Depends} Section: doc -Description: Documentation for APT - This package contains the user guide and offline guide, for APT, an - Advanced Package Tool. +Description: documentation for APT + This package contains the user guide and offline guide for various + APT tools which are provided in a html and a text-only version. Package: libapt-pkg-dev Architecture: any +Multi-Arch: same Priority: optional -Depends: apt (= ${binary:Version}), apt-utils (= ${binary:Version}), ${libapt-pkg:provides}, ${libapt-inst:provides}, ${misc:Depends}, zlib1g-dev | zlib-dev +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 +Description: development files for APT's libapt-pkg and libapt-inst This package contains the header files and libraries for developing with APT's libapt-pkg Debian package manipulation library and the libapt-inst deb/tar/ar library. @@ -51,7 +92,7 @@ Architecture: all Priority: optional Depends: ${misc:Depends} Section: doc -Description: Documentation for APT development +Description: documentation for APT development This package contains documentation for development of the APT Debian package manipulation program and its libraries. . @@ -61,19 +102,25 @@ Description: Documentation for APT development Package: apt-utils Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} -Provides: ${libapt-inst:provides} -Description: APT utility programs - This package contains some APT utility programs such as apt-ftparchive, - apt-sortpkgs and apt-extracttemplates. +Description: package managment related utility programs + This package contains some less used commandline utilities related + to package managment with APT. . - apt-extracttemplates is used by debconf to prompt for configuration - questions before installation. apt-ftparchive is used to create Package - and other index files. apt-sortpkgs is a Package/Source file normalizer. + * apt-extracttemplates is used by debconf to prompt for configuration + questions before installation. + * apt-ftparchive is used to create Packages and other index files + needed to publish an archive of debian packages + * apt-sortpkgs is a Packages/Sources file normalizer. Package: apt-transport-https Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Priority: optional -Description: APT https transport - This package contains a APT https transport. It makes it possible to - use 'deb https://foo distro main' lines in the sources.list. +Description: https download transport for APT + This package enables the usage of 'deb https://foo distro main' lines + in the /etc/apt/sources.list so that all package managers using the + libapt-pkg library can access metadata and packages available in sources + accessible over https (Hypertext Transfer Protocol Secure). + . + This transport supports server as well as client authentication + with certificates. diff --git a/debian/libapt-inst1.4.install.in b/debian/libapt-inst1.4.install.in new file mode 100644 index 000000000..8bcce2c28 --- /dev/null +++ b/debian/libapt-inst1.4.install.in @@ -0,0 +1,2 @@ +bin/libapt-inst*.so.* usr/lib/@DEB_HOST_MULTIARCH@/ +usr/share/locale/*/*/libapt-inst*.mo diff --git a/debian/apt-utils.symbols b/debian/libapt-inst1.4.symbols index 9ba283a51..cade0990d 100644 --- a/debian/apt-utils.symbols +++ b/debian/libapt-inst1.4.symbols @@ -1,5 +1,4 @@ -libapt-inst.so.1.2 libapt-inst1.2 -| apt-utils #MINVER# +libapt-inst.so.1.4 libapt-inst1.4 #MINVER# * Build-Depends-Package: libapt-pkg-dev (c++)"ExtractTar::Done(bool)@Base" 0.8.0 (c++)"ExtractTar::Go(pkgDirStream&)@Base" 0.8.0 @@ -8,11 +7,9 @@ libapt-inst.so.1.2 libapt-inst1.2 (c++)"ExtractTar::~ExtractTar()@Base" 0.8.0 (c++)"debDebFile::GotoMember(char const*)@Base" 0.8.0 (c++)"debDebFile::CheckMember(char const*)@Base" 0.8.0 - (c++)"debDebFile::MergeControl(pkgDataBase&)@Base" 0.8.0 (c++)"debDebFile::ControlExtract::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0 (c++)"debDebFile::ControlExtract::~ControlExtract()@Base" 0.8.0 (c++)"debDebFile::ExtractArchive(pkgDirStream&)@Base" 0.8.0 - (c++)"debDebFile::ExtractControl(pkgDataBase&)@Base" 0.8.0 (c++)"debDebFile::MemControlExtract::TakeControl(void const*, unsigned long)@Base" 0.8.0 (c++)"debDebFile::MemControlExtract::Read(debDebFile&)@Base" 0.8.0 (c++)"debDebFile::MemControlExtract::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0 @@ -40,16 +37,11 @@ libapt-inst.so.1.2 libapt-inst1.2 (c++)"pkgFLCache::HashNode(pkgFLCache::NodeIterator const&)@Base" 0.8.0 (c++)"pkgFLCache::PrintTree(unsigned int, unsigned long)@Base" 0.8.0 (c++)"pkgFLCache::pkgFLCache(DynamicMMap&)@Base" 0.8.0 - (c++)"pkgDataBase::GetMetaTmp(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 - (c++)"pkgDataBase::~pkgDataBase()@Base" 0.8.0 (c++)"pkgDirStream::FinishedFile(pkgDirStream::Item&, int)@Base" 0.8.0 (c++)"pkgDirStream::Fail(pkgDirStream::Item&, int)@Base" 0.8.0 (c++)"pkgDirStream::DoItem(pkgDirStream::Item&, int&)@Base" 0.8.0 (c++)"pkgDirStream::Process(pkgDirStream::Item&, unsigned char const*, unsigned long, unsigned long)@Base" 0.8.0 (c++)"pkgDirStream::~pkgDirStream()@Base" 0.8.0 - (c++|optional)"debListParser::~debListParser()@Base" 0.8.0 - (c++|optional)"pkgCacheGenerator::ListParser::CollectFileProvides(pkgCache&, pkgCache::VerIterator&)@Base" 0.8.0 - (c++|optional)"pkgCacheGenerator::ListParser::~ListParser()@Base" 0.8.0 (c++|optional)"pkgCache::DepIterator::operator++(int)@Base" 0.8.0 (c++|optional)"pkgCache::DepIterator::operator++()@Base" 0.8.0 (c++|optional)"pkgCache::VerIterator::operator++(int)@Base" 0.8.0 @@ -57,15 +49,6 @@ libapt-inst.so.1.2 libapt-inst1.2 (c++)"ARArchive::LoadHeaders()@Base" 0.8.0 (c++)"ARArchive::ARArchive(FileFd&)@Base" 0.8.0 (c++)"ARArchive::~ARArchive()@Base" 0.8.0 - (c++)"debDpkgDB::InitMetaTmp(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 - (c++)"debDpkgDB::LoadChanges()@Base" 0.8.0 - (c++)"debDpkgDB::ReadConfFiles()@Base" 0.8.0 - (c++)"debDpkgDB::ReadyFileList(OpProgress&)@Base" 0.8.0 - (c++)"debDpkgDB::ReadyPkgCache(OpProgress&)@Base" 0.8.0 - (c++)"debDpkgDB::ReadDiversions()@Base" 0.8.0 - (c++)"debDpkgDB::ReadFList(OpProgress&)@Base" 0.8.0 - (c++)"debDpkgDB::debDpkgDB()@Base" 0.8.0 - (c++)"debDpkgDB::~debDpkgDB()@Base" 0.8.0 (c++)"pkgFLCache::NodeIterator::RealPackage() const@Base" 0.8.0 (c++)"pkgFLCache::Header::CheckSizes(pkgFLCache::Header&) const@Base" 0.8.0 (c++|optional)"pkgCache::DepIterator::OwnerPointer() const@Base" 0.8.0 @@ -73,48 +56,36 @@ libapt-inst.so.1.2 libapt-inst1.2 (c++)"ARArchive::FindMember(char const*) const@Base" 0.8.0 (c++)"typeinfo for ExtractTar@Base" 0.8.0 (c++)"typeinfo for pkgExtract@Base" 0.8.0 - (c++)"typeinfo for pkgDataBase@Base" 0.8.0 (c++)"typeinfo for pkgDirStream@Base" 0.8.0 - (c++)"typeinfo for debDpkgDB@Base" 0.8.0 (c++)"typeinfo for debDebFile::ControlExtract@Base" 0.8.0 (c++)"typeinfo for debDebFile::MemControlExtract@Base" 0.8.0 - (c++|optional)"typeinfo for pkgCacheGenerator::ListParser@Base" 0.8.0 (c++|optional)"typeinfo for pkgCache::DepIterator@Base" 0.8.0 (c++|optional)"typeinfo for pkgCache::VerIterator@Base" 0.8.0 (c++|optional)"typeinfo for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 - (c++|optional)"typeinfo for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 (c++|optional)"typeinfo for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 (c++)"typeinfo name for ExtractTar@Base" 0.8.0 (c++)"typeinfo name for pkgExtract@Base" 0.8.0 - (c++)"typeinfo name for pkgDataBase@Base" 0.8.0 (c++)"typeinfo name for pkgDirStream@Base" 0.8.0 - (c++)"typeinfo name for debDpkgDB@Base" 0.8.0 (c++)"typeinfo name for debDebFile::ControlExtract@Base" 0.8.0 (c++)"typeinfo name for debDebFile::MemControlExtract@Base" 0.8.0 - (c++|optional)"typeinfo name for pkgCacheGenerator::ListParser@Base" 0.8.0 (c++|optional)"typeinfo name for pkgCache::DepIterator@Base" 0.8.0 (c++|optional)"typeinfo name for pkgCache::VerIterator@Base" 0.8.0 (c++|optional)"typeinfo name for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 - (c++|optional)"typeinfo name for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 (c++|optional)"typeinfo name for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 (c++)"vtable for ExtractTar@Base" 0.8.0 (c++)"vtable for pkgExtract@Base" 0.8.0 - (c++)"vtable for pkgDataBase@Base" 0.8.0 (c++)"vtable for pkgDirStream@Base" 0.8.0 - (c++)"vtable for debDpkgDB@Base" 0.8.0 (c++)"vtable for debDebFile::ControlExtract@Base" 0.8.0 (c++)"vtable for debDebFile::MemControlExtract@Base" 0.8.0 - (c++|optional)"vtable for pkgCacheGenerator::ListParser@Base" 0.8.0 (c++|optional)"vtable for pkgCache::DepIterator@Base" 0.8.0 (c++|optional)"vtable for pkgCache::VerIterator@Base" 0.8.0 (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Dependency, pkgCache::DepIterator>@Base" 0.8.0 - (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Package, pkgCache::PkgIterator>@Base" 0.8.0 (c++|optional)"vtable for pkgCache::Iterator<pkgCache::Version, pkgCache::VerIterator>@Base" 0.8.0 ### gcc-4.4 specific # (c++|regex|optional=std)"^char\* std::[^ ]+<.+ >::_.+@Base$" 0.8.0 # (c++|optional=std)"std::basic_string<char, std::char_traits<char>, std::allocator<char> >& std::basic_string<char, std::char_traits<char>, std::allocator<char> >::append<unsigned char*>(unsigned char*, unsigned char*)@Base" 0.8.0 ### gcc-4.6 specific - (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@Base" 0.8.12 1 + (c++|optional=std)"std::vector<APT::Configuration::Compressor, std::allocator<APT::Configuration::Compressor> >::~vector()@Base" 0.8.12 (c++|optional=std)"std::basic_string<char, std::char_traits<char>, std::allocator<char> >& std::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_dispatch<unsigned char*>(__gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, unsigned char*, unsigned char*, std::__false_type)@Base" 0.8.0 ### try to ignore std:: template instances (c++|regex|optional=std)"^std::basic_string<.+ >\(.+\)@Base$" 0.8.0 diff --git a/debian/libapt-pkg-dev.dirs b/debian/libapt-pkg-dev.dirs deleted file mode 100644 index 844642ab0..000000000 --- a/debian/libapt-pkg-dev.dirs +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib -usr/include/apt-pkg diff --git a/debian/libapt-pkg-dev.install b/debian/libapt-pkg-dev.install deleted file mode 100644 index bd1a6c174..000000000 --- a/debian/libapt-pkg-dev.install +++ /dev/null @@ -1,3 +0,0 @@ -bin/libapt-pkg*.so usr/lib/ -bin/libapt-inst*.so usr/lib/ -include/apt-pkg/*.h usr/include/apt-pkg/ diff --git a/debian/libapt-pkg-dev.install.in b/debian/libapt-pkg-dev.install.in new file mode 100644 index 000000000..be8022107 --- /dev/null +++ b/debian/libapt-pkg-dev.install.in @@ -0,0 +1,3 @@ +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/ diff --git a/debian/libapt-pkg4.12.install.in b/debian/libapt-pkg4.12.install.in new file mode 100644 index 000000000..56bed39d3 --- /dev/null +++ b/debian/libapt-pkg4.12.install.in @@ -0,0 +1,2 @@ +bin/libapt-pkg*.so.* usr/lib/@DEB_HOST_MULTIARCH@/ +usr/share/locale/*/*/libapt-pkg*.mo diff --git a/debian/apt.symbols b/debian/libapt-pkg4.12.symbols index 11994afeb..012617eb6 100644 --- a/debian/apt.symbols +++ b/debian/libapt-pkg4.12.symbols @@ -1,5 +1,4 @@ -libapt-pkg.so.4.10 libapt-pkg4.10 -| apt #MINVER# +libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# * Build-Depends-Package: libapt-pkg-dev TFRewritePackageOrder@Base 0.8.0 TFRewriteSourceOrder@Base 0.8.0 @@ -56,12 +55,10 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgMinimizeUpgrade(pkgDepCache&)@Base" 0.8.0 (c++)"GetListOfFilesInDir(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, bool const&)@Base" 0.8.0 (c++)"GetListOfFilesInDir(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, bool const&)@Base" 0.8.0 - (c++)"pkgMakeStatusCacheMem(pkgSourceList&, OpProgress&)@Base" 0.8.0 (c++)"pkgMakeOnlyStatusCache(OpProgress&, DynamicMMap**)@Base" 0.8.0 (c++)"WaitFd(int, bool, unsigned long)@Base" 0.8.0 (c++)"GetLock(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)@Base" 0.8.0 (c++)"Hex2Num(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned char*, unsigned int)@Base" 0.8.0 - (c++)"AddCRC16(unsigned short, void const*, unsigned long)@Base" 0.8.0 (c++)"CopyFile(FileFd&, FileFd&)@Base" 0.8.0 (c++)"ExecFork()@Base" 0.8.0 (c++)"ExecWait(int, char const*, bool)@Base" 0.8.0 @@ -98,25 +95,18 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"HashString::HashString()@Base" 0.8.0 (c++)"HashString::~HashString()@Base" 0.8.0 (c++)"OpProgress::CheckChange(float)@Base" 0.8.0 - (c++)"OpProgress::SubProgress(unsigned long)@Base" 0.8.0 - (c++)"OpProgress::SubProgress(unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 - (c++)"OpProgress::OverallProgress(unsigned long, unsigned long, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 (c++)"OpProgress::Done()@Base" 0.8.0 (c++)"OpProgress::Update()@Base" 0.8.0 - (c++)"OpProgress::Progress(unsigned long)@Base" 0.8.0 (c++)"OpProgress::OpProgress()@Base" 0.8.0 (c++)"OpProgress::~OpProgress()@Base" 0.8.0 (c++)"SourceCopy::GetFileName()@Base" 0.8.0 (c++)"SourceCopy::RewriteEntry(_IO_FILE*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"SourceCopy::Type()@Base" 0.8.0 - (c++)"SourceCopy::GetFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)@Base" 0.8.0 (c++)"SourceCopy::~SourceCopy()@Base" 0.8.0 (c++)"pkgAcqFile::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqFile::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqFile::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqFile::DescURI()@Base" 0.8.0 (c++)"pkgAcqFile::HashSum()@Base" 0.8.0 - (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@Base" 0.8.0 (c++)"pkgAcqFile::~pkgAcqFile()@Base" 0.8.0 (c++)"pkgAcquire::WorkerStep(pkgAcquire::Worker*)@Base" 0.8.0 (c++)"pkgAcquire::FetchNeeded()@Base" 0.8.0 @@ -129,8 +119,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgAcquire::Bump()@Base" 0.8.0 (c++)"pkgAcquire::Item::Custom600Headers()@Base" 0.8.0 (c++)"pkgAcquire::Item::ReportMirrorFailure(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"pkgAcquire::Item::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 - (c++)"pkgAcquire::Item::Start(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long)@Base" 0.8.0 (c++)"pkgAcquire::Item::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcquire::Item::Rename(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"pkgAcquire::Item::HashSum()@Base" 0.8.0 @@ -200,10 +188,8 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgRecords::pkgRecords(pkgCache&)@Base" 0.8.0 (c++)"pkgRecords::~pkgRecords()@Base" 0.8.0 (c++)"pkgTagFile::Fill()@Base" 0.8.0 - (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long)@Base" 0.8.0 (c++)"pkgTagFile::Step(pkgTagSection&)@Base" 0.8.0 (c++)"pkgTagFile::Resize()@Base" 0.8.0 - (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long)@Base" 0.8.0 (c++)"pkgTagFile::~pkgTagFile()@Base" 0.8.0 (c++)"CdromDevice::~CdromDevice()@Base" 0.8.0 (c++)"CommandLine::DispatchArg(CommandLine::Dispatch*, bool)@Base" 0.8.0 @@ -212,7 +198,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"CommandLine::HandleOpt(int&, int, char const**, char const*&, CommandLine::Args*, bool)@Base" 0.8.0 (c++)"CommandLine::CommandLine(CommandLine::Args*, Configuration*)@Base" 0.8.0 (c++)"CommandLine::~CommandLine()@Base" 0.8.0 - (c++)"DynamicMMap::RawAllocate(unsigned long, unsigned long)@Base" 0.8.0 (c++)"DynamicMMap::WriteString(char const*, unsigned long)@Base" 0.8.0 (c++)"DynamicMMap::Grow()@Base" 0.8.0 (c++)"DynamicMMap::Allocate(unsigned long)@Base" 0.8.0 @@ -238,16 +223,11 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"GlobalError::Warning(char const*, ...)@Base" 0.8.0 (c++)"GlobalError::WarningE(char const*, char const*, ...)@Base" 0.8.0 (c++)"GlobalError::GlobalError()@Base" 0.8.0 - (c++)"MD5SumValue::Set(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"MD5SumValue::MD5SumValue(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"MD5SumValue::MD5SumValue()@Base" 0.8.0 (c++)"PackageCopy::GetFileName()@Base" 0.8.0 (c++)"PackageCopy::RewriteEntry(_IO_FILE*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"PackageCopy::Type()@Base" 0.8.0 - (c++)"PackageCopy::GetFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)@Base" 0.8.0 (c++)"PackageCopy::~PackageCopy()@Base" 0.8.0 (c++)"pkgAcqIndex::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqIndex::DescURI()@Base" 0.8.0 (c++)"pkgAcqIndex::HashSum()@Base" 0.8.0 @@ -286,12 +266,9 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgDepCache::Update(pkgCache::DepIterator)@Base" 0.8.0 (c++)"pkgDepCache::Update(OpProgress*)@Base" 0.8.0 (c++)"pkgDepCache::Update(pkgCache::PkgIterator const&)@Base" 0.8.0 - (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool const&)@Base" 0.8.0 - (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, long)@Base" 0.8.0 (c++)"pkgDepCache::CheckDep(pkgCache::DepIterator, int, pkgCache::PkgIterator&)@Base" 0.8.0 (c++)"pkgDepCache::MarkAuto(pkgCache::PkgIterator const&, bool)@Base" 0.8.0 (c++)"pkgDepCache::MarkKeep(pkgCache::PkgIterator const&, bool, bool, unsigned long)@Base" 0.8.0 - (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, int)@Base" 0.8.0 (c++)"pkgDepCache::pkgDepCache(pkgCache*, pkgDepCache::Policy*)@Base" 0.8.0 (c++)"pkgDepCache::~pkgDepCache()@Base" 0.8.0 (c++)"pkgSimulate::ShortBreaks()@Base" 0.8.0 @@ -303,13 +280,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgSimulate::Configure(pkgCache::PkgIterator)@Base" 0.8.0 (c++)"pkgSimulate::pkgSimulate(pkgDepCache*)@Base" 0.8.0 (c++)"pkgSimulate::~pkgSimulate()@Base" 0.8.0 - (c++)"MD5Summation::Add(unsigned char const*, unsigned long)@Base" 0.8.0 - (c++)"MD5Summation::AddFD(int, unsigned long)@Base" 0.8.0 - (c++)"MD5Summation::Result()@Base" 0.8.0 - (c++)"MD5Summation::MD5Summation()@Base" 0.8.0 - (c++)"SHA1SumValue::Set(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"SHA1SumValue::SHA1SumValue(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"SHA1SumValue::SHA1SumValue()@Base" 0.8.0 (c++)"debIFTypePkg::~debIFTypePkg()@Base" 0.8.0 (c++)"debIFTypeSrc::~debIFTypeSrc()@Base" 0.8.0 (c++)"debSLTypeDeb::~debSLTypeDeb()@Base" 0.8.0 @@ -391,10 +361,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"Configuration::Configuration(Configuration::Item const*)@Base" 0.8.0 (c++)"Configuration::Configuration()@Base" 0.8.0 (c++)"Configuration::~Configuration()@Base" 0.8.0 - (c++)"SHA1Summation::Add(unsigned char const*, unsigned long)@Base" 0.8.0 - (c++)"SHA1Summation::AddFD(int, unsigned long)@Base" 0.8.0 - (c++)"SHA1Summation::Result()@Base" 0.8.0 - (c++)"SHA1Summation::SHA1Summation()@Base" 0.8.0 (c++)"WeakPointable::~WeakPointable()@Base" 0.8.0 (c++)"debListParser::NewVersion(pkgCache::VerIterator&)@Base" 0.8.0 (c++)"debListParser::UsePackage(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.0 @@ -420,7 +386,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"debListParser::GrabWord(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, debListParser::WordList*, unsigned char&)@Base" 0.8.0 (c++)"debListParser::debListParser(FileFd*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 (c++)"debListParser::~debListParser()@Base" 0.8.0 - (c++)"pkgAcqArchive::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqArchive::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqArchive::DescURI()@Base" 0.8.0 (c++)"pkgAcqArchive::HashSum()@Base" 0.8.0 @@ -431,7 +396,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgAcqArchive::pkgAcqArchive(pkgAcquire*, pkgSourceList*, pkgRecords*, pkgCache::VerIterator const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.0 (c++)"pkgAcqArchive::~pkgAcqArchive()@Base" 0.8.0 (c++)"pkgAcqMetaSig::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqMetaSig::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqMetaSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqMetaSig::DescURI()@Base" 0.8.0 (c++)"pkgAcqMetaSig::~pkgAcqMetaSig()@Base" 0.8.0 @@ -470,16 +434,9 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"OpTextProgress::Update()@Base" 0.8.0 (c++)"OpTextProgress::OpTextProgress(Configuration&)@Base" 0.8.0 (c++)"OpTextProgress::~OpTextProgress()@Base" 0.8.0 - (c++)"SHA256SumValue::Set(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"SHA256SumValue::SHA256SumValue(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"SHA256SumValue::SHA256SumValue()@Base" 0.8.0 (c++)"debIFTypeTrans::~debIFTypeTrans()@Base" 0.8.0 (c++)"debStatusIndex::debStatusIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"debStatusIndex::~debStatusIndex()@Base" 0.8.0 - (c++)"SHA256Summation::Add(unsigned char const*, unsigned long)@Base" 0.8.0 - (c++)"SHA256Summation::AddFD(int, unsigned long)@Base" 0.8.0 - (c++)"SHA256Summation::Result()@Base" 0.8.0 - (c++)"SHA256Summation::SHA256Summation()@Base" 0.8.0 (c++)"debIFTypeStatus::~debIFTypeStatus()@Base" 0.8.0 (c++)"debRecordParser::Maintainer()@Base" 0.8.0 (c++)"debRecordParser::SHA256Hash()@Base" 0.8.0 @@ -510,7 +467,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"debSourcesIndex::~debSourcesIndex()@Base" 0.8.0 (c++)"pkgAcqDiffIndex::ParseDiffIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"pkgAcqDiffIndex::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqDiffIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqDiffIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqDiffIndex::DescURI()@Base" 0.8.0 (c++)"pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, HashString)@Base" 0.8.0 @@ -519,7 +475,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgAcqMetaIndex::VerifyVendor(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"pkgAcqMetaIndex::RetrievalDone(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"pkgAcqMetaIndex::Custom600Headers()@Base" 0.8.0 - (c++)"pkgAcqMetaIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqMetaIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqMetaIndex::DescURI()@Base" 0.8.0 (c++)"pkgAcqMetaIndex::AuthDone(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 @@ -536,7 +491,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"debPackagesIndex::debPackagesIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 (c++)"debPackagesIndex::~debPackagesIndex()@Base" 0.8.0 (c++)"pkgAcqIndexDiffs::QueueNextDiff()@Base" 0.8.0 - (c++)"pkgAcqIndexDiffs::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqIndexDiffs::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.0 (c++)"pkgAcqIndexDiffs::Finish(bool)@Base" 0.8.0 (c++)"pkgAcqIndexDiffs::DescURI()@Base" 0.8.0 @@ -553,7 +507,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgAcquireStatus::Pulse(pkgAcquire*)@Base" 0.8.0 (c++)"pkgAcquireStatus::Start()@Base" 0.8.0 (c++)"pkgAcquireStatus::IMSHit(pkgAcquire::ItemDesc&)@Base" 0.8.0 - (c++)"pkgAcquireStatus::Fetched(unsigned long, unsigned long)@Base" 0.8.0 (c++)"pkgAcquireStatus::pkgAcquireStatus()@Base" 0.8.0 (c++)"pkgAcquireStatus::~pkgAcquireStatus()@Base" 0.8.0 (c++)"PreferenceSection::TrimRecord(bool, char const*&)@Base" 0.8.0 @@ -569,7 +522,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgCacheGenerator::FinishCache(OpProgress*)@Base" 0.8.0 (c++)"pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 (c++)"pkgCacheGenerator::AllocateInMap(unsigned long const&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::NewDescription(pkgCache::DescIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, MD5SumValue const&, unsigned int)@Base" 0.8.0 (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@Base" 0.8.0 (c++)"pkgCacheGenerator::WriteUniqString(char const*, unsigned int)@Base" 0.8.0 (c++)"pkgCacheGenerator::WriteStringInMap(char const*)@Base" 0.8.0 @@ -598,13 +550,11 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgPackageManager::ImmediateAdd(pkgCache::PkgIterator, bool, unsigned int const&)@Base" 0.8.0 (c++)"pkgPackageManager::OrderInstall()@Base" 0.8.0 (c++)"pkgPackageManager::DepAlwaysTrue(pkgCache::DepIterator)@Base" 0.8.0 - (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator)@Base" 0.8.0 (c++)"pkgPackageManager::CheckRConflicts(pkgCache::PkgIterator, pkgCache::DepIterator, char const*)@Base" 0.8.0 (c++)"pkgPackageManager::CreateOrderList()@Base" 0.8.0 (c++)"pkgPackageManager::DoInstallPostFork(int)@Base" 0.8.0 (c++)"pkgPackageManager::Go(int)@Base" 0.8.0 (c++)"pkgPackageManager::Reset()@Base" 0.8.0 - (c++)"pkgPackageManager::DepAdd(pkgOrderList&, pkgCache::PkgIterator, int)@Base" 0.8.0 (c++)"pkgPackageManager::Remove(pkgCache::PkgIterator, bool)@Base" 0.8.0 (c++)"pkgPackageManager::Install(pkgCache::PkgIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"pkgPackageManager::Configure(pkgCache::PkgIterator)@Base" 0.8.0 @@ -648,20 +598,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgVersioningSystem::~pkgVersioningSystem()@Base" 0.8.0 (c++)"debTranslationsIndex::debTranslationsIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, char const*)@Base" 0.8.0 (c++)"debTranslationsIndex::~debTranslationsIndex()@Base" 0.8.0 - (c++)"APT::PackageSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::FromCommandLine(pkgCacheFile&, char const**, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::PackageSet::Modifier, std::allocator<APT::PackageSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::FromName(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::FromTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::FromRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::PackageSet::~PackageSet()@Base" 0.8.0 - (c++)"APT::VersionSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::VersionSet::Version const&, APT::CacheSetHelper&, bool const&)@Base" 0.8.0 - (c++)"APT::VersionSet::FromPackage(pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::VersionSet::FromCommandLine(pkgCacheFile&, char const**, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::VersionSet::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::VersionSet::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::VersionSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::VersionSet::Modifier, std::allocator<APT::VersionSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 - (c++)"APT::VersionSet::~VersionSet()@Base" 0.8.0 (c++)"APT::CacheFilter::PackageNameMatchesRegEx::PackageNameMatchesRegEx(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 (c++)"APT::CacheFilter::PackageNameMatchesRegEx::~PackageNameMatchesRegEx()@Base" 0.8.0 (c++)"APT::CacheFilter::PackageNameMatchesRegEx::operator()(pkgCache::GrpIterator const&)@Base" 0.8.0 @@ -670,17 +606,8 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"APT::Configuration::getArchitectures(bool const&)@Base" 0.8.0 (c++)"APT::Configuration::checkArchitecture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 (c++)"APT::Configuration::getCompressionTypes(bool const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindAllVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindPackage(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 (c++)"APT::CacheSetHelper::canNotFindPkgName(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::showTaskSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::showRegExSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 (c++)"APT::CacheSetHelper::canNotFindNewestVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 - (c++)"APT::CacheSetHelper::canNotFindInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 (c++)"APT::CacheSetHelper::canNotFindCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 (c++)"APT::CacheSetHelper::canNotFindInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 (c++)"APT::CacheSetHelper::~CacheSetHelper()@Base" 0.8.0 @@ -696,19 +623,11 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"MMap::MMap(FileFd&, unsigned long)@Base" 0.8.0 (c++)"MMap::MMap(unsigned long)@Base" 0.8.0 (c++)"MMap::~MMap()@Base" 0.8.0 - (c++)"FileFd::OpenDescriptor(int, FileFd::OpenMode, bool)@Base" 0.8.0 - (c++)"FileFd::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 - (c++)"FileFd::Read(void*, unsigned long, unsigned long*)@Base" 0.8.0 - (c++)"FileFd::Seek(unsigned long)@Base" 0.8.0 (c++)"FileFd::Size()@Base" 0.8.0 - (c++)"FileFd::Skip(unsigned long)@Base" 0.8.0 (c++)"FileFd::Sync()@Base" 0.8.0 (c++)"FileFd::Tell()@Base" 0.8.0 (c++)"FileFd::Close()@Base" 0.8.0 - (c++)"FileFd::Write(void const*, unsigned long)@Base" 0.8.0 - (c++)"FileFd::Truncate(unsigned long)@Base" 0.8.0 (c++)"FileFd::~FileFd()@Base" 0.8.0 - (c++)"Hashes::AddFD(int, unsigned long)@Base" 0.8.0 (c++)"Vendor::CheckDist(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 (c++)"Vendor::Vendor(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<Vendor::Fingerprint*, std::allocator<Vendor::Fingerprint*> >*)@Base" 0.8.0 (c++)"Vendor::~Vendor()@Base" 0.8.0 @@ -796,7 +715,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgDPkgPM::~pkgDPkgPM()@Base" 0.8.0 (c++)"pkgPolicy::GetPriority(pkgCache::PkgIterator const&)@Base" 0.8.0 (c++)"pkgPolicy::InitDefaults()@Base" 0.8.0 - (c++)"pkgPolicy::IsImportantDep(pkgCache::DepIterator const&)@Base" 0.8.0 (c++)"pkgPolicy::GetCandidateVer(pkgCache::PkgIterator const&)@Base" 0.8.0 (c++)"pkgPolicy::PkgPin::~PkgPin()@Base" 0.8.0 (c++)"pkgPolicy::GetMatch(pkgCache::PkgIterator const&)@Base" 0.8.0 @@ -815,10 +733,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"HashString::toStr() const@Base" 0.8.0 (c++)"CommandLine::FileSize() const@Base" 0.8.0 (c++)"GlobalError::empty(GlobalError::MsgType const&) const@Base" 0.8.0 - (c++)"MD5SumValue::Value() const@Base" 0.8.0 - (c++)"MD5SumValue::operator==(MD5SumValue const&) const@Base" 0.8.0 - (c++)"SHA1SumValue::Value() const@Base" 0.8.0 - (c++)"SHA1SumValue::operator==(SHA1SumValue const&) const@Base" 0.8.0 (c++)"debIFTypePkg::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.0 (c++)"debSLTypeDeb::CreateItem(std::vector<metaIndex*, std::allocator<metaIndex*> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > const&) const@Base" 0.8.0 (c++)"indexRecords::GetValidUntil() const@Base" 0.8.0 @@ -857,8 +771,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgTagSection::FindS(char const*) const@Base" 0.8.0 (c++)"pkgTagSection::FindULL(char const*, unsigned long long const&) const@Base" 0.8.0 (c++)"pkgTagSection::FindFlag(char const*, unsigned long&, unsigned long) const@Base" 0.8.0 - (c++)"SHA256SumValue::Value() const@Base" 0.8.0 - (c++)"SHA256SumValue::operator==(SHA256SumValue const&) const@Base" 0.8.0 (c++)"debStatusIndex::FindInCache(pkgCache&) const@Base" 0.8.0 (c++)"debStatusIndex::HasPackages() const@Base" 0.8.0 (c++)"debStatusIndex::Size() const@Base" 0.8.0 @@ -937,7 +849,6 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++)"pkgCache::VerIterator::Downloadable() const@Base" 0.8.0 (c++)"pkgCache::VerIterator::OwnerPointer() const@Base" 0.8.0 (c++)"pkgCache::VerIterator::TranslatedDescription() const@Base" 0.8.0 - (c++)"pkgCache::VerIterator::Pseudo() const@Base" 0.8.0 (c++)"pkgCache::VerIterator::RelStr() const@Base" 0.8.0 (c++)"pkgCache::VerIterator::Automatic() const@Base" 0.8.0 (c++)"pkgCache::DescIterator::OwnerPointer() const@Base" 0.8.0 @@ -1233,40 +1144,39 @@ libapt-pkg.so.4.10 libapt-pkg4.10 # (c++|regex|optional=template)"^SPtrArray<[^ ]+>::~SPtrArray\(\)@Base$" 0.8.0 # (c++|optional=template)"SPtrArray<unsigned char>::~SPtrArray()@Base" 0.8.0 ### gcc-4.6 specific - (c++|optional=template)"SPtrArray<pkgCache::Version*>::~SPtrArray()@Base" 0.8.0 +# (c++|optional=template)"SPtrArray<pkgCache::Version*>::~SPtrArray()@Base" 0.8.0 +# (c++|optional=inline)"IndexTarget::~IndexTarget()@Base" 0.8.11 (c++|regex|optional=std)"^std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<char( const|)\*>\(.+\)@Base$" 0.8.0 (c++|regex|optional=std)"^std::vector<DiffInfo, .+@Base$" 0.8.0 (c++|regex|optional=std)"^std::vector<.+ >::(vector|push_back|erase|_[^ ]+)\(.+\)( const|)@Base$" 0.8.0 -# (c++|optional=strange)"pkgCache::VerIterator::VerIterator(pkgCache&, pkgCache::Version*)@Base" 0.8.0 + (c++|optional=template)"HashSumValue<160>::operator std::basic_string<char, std::char_traits<char>, std::allocator<char> >() const@Base" 0.8.16~exp14 ### architecture specific: va_list - (arch=armel armhf|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, std::__va_list&) const@Base" 0.8.15~exp1 1 - (arch=i386 hurd-i386 kfreebsd-i386|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@Base" 0.8.15~exp1 1 - (arch=hppa ia64 mips mipsel sparc sparc64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, void*&) const@Base" 0.8.15~exp1 1 - (arch=amd64 kfreebsd-amd64 powerpc powerpcspe s390|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag (&) [1]) const@Base" 0.8.15~exp1 1 - (arch=sh4|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __builtin_va_list&) const@Base" 0.8.15~exp1 1 - (arch=alpha|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag&) const@Base" 0.8.15~exp1 1 + (arch=armel armhf|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, std::__va_list&) const@Base" 0.8.15~exp1 + (arch=i386 hurd-i386 kfreebsd-i386|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, char*&) const@Base" 0.8.15~exp1 + (arch=hppa ia64 mips mipsel sparc sparc64|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, void*&) const@Base" 0.8.15~exp1 + (arch=amd64 kfreebsd-amd64 powerpc powerpcspe s390|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag (&) [1]) const@Base" 0.8.15~exp1 + (arch=sh4|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __builtin_va_list&) const@Base" 0.8.15~exp1 + (arch=alpha|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag&) const@Base" 0.8.15~exp1 ### architecture specific: va_list & size_t - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 1 - (arch=armel armhf|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 1 - (arch=alpha|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@Base" 0.8.11.4 1 - (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@Base" 0.8.11.4 1 - (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@Base" 0.8.11.4 1 - (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 1 - (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 1 - (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 1 - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 1 - (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 1 - (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 1 - (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@Base" 0.8.11.4 1 - (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@Base" 0.8.11.4 1 - (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 1 + (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 + (arch=armel armhf|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 + (arch=alpha|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@Base" 0.8.11.4 + (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@Base" 0.8.11.4 + (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@Base" 0.8.11.4 + (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 + (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 + (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 + (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 + (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 + (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 + (arch=powerpc powerpcspe|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@Base" 0.8.11.4 + (arch=amd64 kfreebsd-amd64 s390|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@Base" 0.8.11.4 + (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 (arch=ia64 sparc64|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@Base" 0.8.11.4 1 - (arch=sh4|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@Base" 0.8.11.4 1 + (arch=sh4|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@Base" 0.8.11.4 ### architecture specific: size_t (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc|c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"_strtabexpand(char*, unsigned long)@Base" 0.8.0 - (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&)@Base" 0.8.0 - (arch=alpha amd64 ia64 kfreebsd-amd64 s390 sparc64|c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long&)@Base" 0.8.0 ### try to ignore std:: template instances (c++|regex|optional=std)"^(void |)std::[^ ]+<.+ >::(_|~).+\(.*\)@Base$" 0.8.0 (c++|regex|optional=std)"^std::[^ ]+<.+ >::(append|insert|reserve|operator[^ ]+)\(.*\)@Base$" 0.8.0 @@ -1278,58 +1188,345 @@ libapt-pkg.so.4.10 libapt-pkg4.10 (c++|regex|optional=std)"^typeinfo name for std::iterator<.*>@Base$" 0.8.0 (c++|regex|optional=std)"^typeinfo for std::iterator<.*>@Base$" 0.8.0 ### - (c++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.1 1 - (c++)"CreateAPTDirectoryIfNeeded(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.2 1 - (c++)"FileFd::FileSize()@Base" 0.8.8 1 - (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@Base" 0.8.11 1 - (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator>, std::allocator<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > >&)@Base" 0.8.11 1 - (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"RealFileExists(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.11 1 - (c++)"StripEpoch(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"IndexTarget::~IndexTarget()@Base" 0.8.11 1 - (c++)"pkgAcqIndex::Init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashString const&)@Base" 0.8.11 1 - (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.11 1 - (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 1 - (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 1 - (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 1 - (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 1 - (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 1 - (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 1 - (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 1 - (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 1 - (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 1 - (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 1 - (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 1 - (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator, bool const&)@Base" 0.8.12 1 - (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 1 - (c++|optional=private)"debListParser::NewProvidesAllArch(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.13.2 1 - (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 1 - (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 1 - (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool)@Base" 0.8.15~exp1 1 - (c++)"pkgCache::DepIterator::IsNegative() const@Base" 0.8.15~exp1 1 - (c++)"Configuration::CndSet(char const*, int)@Base" 0.8.15.3 1 - (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@Base" 0.8.15.3 1 - (c++)"DeEscapeString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.15.4 1 - (c++)"GetModificationTime(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.15.6 1 - (c++)"pkgSourceList::GetLastModifiedTime()@Base" 0.8.15.6 1 - (c++)"pkgCacheGenerator::NewDepends(pkgCache::PkgIterator&, pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int const&, unsigned int const&, unsigned int*&)@Base" 0.8.15.6 1 - (c++)"pkgCacheFile::RemoveCaches()@Base" 0.8.15.7 1 - (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@Base" 0.8.15.7 1 + (c++)"Configuration::MatchAgainstConfig::clearPatterns()@Base" 0.8.1 + (c++)"CreateAPTDirectoryIfNeeded(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.2 + (c++)"FileFd::FileSize()@Base" 0.8.8 + (c++)"Base256ToNum(char const*, unsigned long&, unsigned int)@Base" 0.8.11 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::list<std::pair<pkgCache::VerIterator, pkgCache::VerIterator>, std::allocator<std::pair<pkgCache::VerIterator, pkgCache::VerIterator> > >&)@Base" 0.8.11 + (c++)"pkgDepCache::SetCandidateRelease(pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"RealFileExists(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.11 + (c++)"StripEpoch(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"pkgAcqIndex::Init(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"pkgAcqIndex::pkgAcqIndex(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 + (c++)"pkgTagSection::FindFlag(unsigned long&, unsigned long, char const*, char const*)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::ParseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::Custom600Headers()@Base" 0.8.11 + (c++)"pkgAcqSubIndex::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::DescURI()@Base" 0.8.11 + (c++)"pkgAcqSubIndex::pkgAcqSubIndex(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashString const&)@Base" 0.8.11 + (c++)"pkgAcqSubIndex::~pkgAcqSubIndex()@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::Failed(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::pkgAcqMetaClearSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.11 + (c++)"pkgAcqMetaClearSig::~pkgAcqMetaClearSig()@Base" 0.8.11 + (c++)"pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire*, IndexTarget const*, HashString const&, indexRecords const*)@Base" 0.8.11 + (c++)"IndexTarget::IsOptional() const@Base" 0.8.11 + (c++)"IndexTarget::IsSubIndex() const@Base" 0.8.11 + (c++)"debReleaseIndex::TranslationIndexURI(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 + (c++)"debReleaseIndex::TranslationIndexURISuffix(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.8.11 + (c++)"typeinfo for pkgAcqSubIndex@Base" 0.8.11 + (c++)"typeinfo for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"typeinfo name for pkgAcqSubIndex@Base" 0.8.11 + (c++)"typeinfo name for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"vtable for pkgAcqSubIndex@Base" 0.8.11 + (c++)"vtable for pkgAcqMetaClearSig@Base" 0.8.11 + (c++)"FindMountPointForDevice(char const*)@Base" 0.8.12 + (c++)"pkgUdevCdromDevices::ScanForRemovable(bool)@Base" 0.8.12 + (c++)"APT::Configuration::Compressor::Compressor(char const*, char const*, char const*, char const*, char const*, unsigned short)@Base" 0.8.12 + (c++)"APT::Configuration::Compressor::~Compressor()@Base" 0.8.12 + (c++)"APT::Configuration::getCompressors(bool)@Base" 0.8.12 + (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 + (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 + (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 + (c++|optional=private)"debListParser::NewProvidesAllArch(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.13.2 + (c++|optional=private)"PrintMode(char)@Base" 0.8.13.2 + (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 + (c++)"pkgCache::DepIterator::IsNegative() const@Base" 0.8.15~exp1 + (c++)"Configuration::CndSet(char const*, int)@Base" 0.8.15.3 + (c++)"pkgProblemResolver::InstOrNewPolicyBroken(pkgCache::PkgIterator)@Base" 0.8.15.3 + (c++)"DeEscapeString(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.15.4 + (c++)"GetModificationTime(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.15.6 + (c++)"pkgSourceList::GetLastModifiedTime()@Base" 0.8.15.6 + (c++)"pkgCacheGenerator::NewDepends(pkgCache::PkgIterator&, pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int const&, unsigned int const&, unsigned int*&)@Base" 0.8.15.6 + (c++)"pkgCacheFile::RemoveCaches()@Base" 0.8.15.7 + (c++)"pkgOrderList::VisitNode(pkgCache::PkgIterator, char const*)@Base" 0.8.15.7 +### external dependency resolver ### + (c++)"edspIFType::~edspIFType()@Base" 0.8.16~exp2 + (c++)"edspSystem::Initialize(Configuration&)@Base" 0.8.16~exp2 + (c++)"edspSystem::AddStatusFiles(std::vector<pkgIndexFile*, std::allocator<pkgIndexFile*> >&)@Base" 0.8.16~exp2 + (c++)"edspSystem::ArchiveSupported(char const*)@Base" 0.8.16~exp2 + (c++)"edspSystem::Lock()@Base" 0.8.16~exp2 + (c++)"edspSystem::Score(Configuration const&)@Base" 0.8.16~exp2 + (c++)"edspSystem::UnLock(bool)@Base" 0.8.16~exp2 + (c++)"edspSystem::edspSystem()@Base" 0.8.16~exp2 + (c++)"edspSystem::~edspSystem()@Base" 0.8.16~exp2 + (c++)"edspListParser::NewVersion(pkgCache::VerIterator&)@Base" 0.8.16~exp2 + (c++)"edspListParser::Description()@Base" 0.8.16~exp2 + (c++)"edspListParser::ParseStatus(pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.16~exp2 + (c++)"edspListParser::VersionHash()@Base" 0.8.16~exp2 + (c++)"edspListParser::Description_md5()@Base" 0.8.16~exp2 + (c++)"edspListParser::LoadReleaseInfo(pkgCache::PkgFileIterator&, FileFd&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.16~exp2 + (c++)"edspListParser::DescriptionLanguage()@Base" 0.8.16~exp2 + (c++)"edspListParser::edspListParser(FileFd*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp2 + (c++)"edspListParser::~edspListParser()@Base" 0.8.16~exp2 + (c++)"edspIndex::edspIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.16~exp2 + (c++)"edspIndex::~edspIndex()@Base" 0.8.16~exp2 + (c++)"edspIFType::CreatePkgParser(pkgCache::PkgFileIterator) const@Base" 0.8.16~exp2 + (c++)"edspSystem::CreatePM(pkgDepCache*) const@Base" 0.8.16~exp2 + (c++)"edspSystem::FindIndex(pkgCache::PkgFileIterator, pkgIndexFile*&) const@Base" 0.8.16~exp2 + (c++)"edspIndex::Merge(pkgCacheGenerator&, OpProgress*) const@Base" 0.8.16~exp2 + (c++)"edspIndex::GetType() const@Base" 0.8.16~exp2 + (c++)"EDSP::WriteError(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, _IO_FILE*)@Base" 0.8.16~exp2 + (c++)"EDSP::ReadRequest(int, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool&, bool&, bool&)@Base" 0.8.16~exp2 + (c++)"EDSP::ApplyRequest(std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, pkgDepCache&)@Base" 0.8.16~exp2 + (c++)"EDSP::ReadResponse(int, pkgDepCache&, OpProgress*)@Base" 0.8.16~exp2 + (c++)"EDSP::StringToBool(char const*, bool)@Base" 0.8.16~exp2 + (c++)"EDSP::WriteRequest(pkgDepCache&, _IO_FILE*, bool, bool, bool, OpProgress*)@Base" 0.8.16~exp2 + (c++)"EDSP::ExecuteSolver(char const*, int*, int*)@Base" 0.8.16~exp2 + (c++)"EDSP::WriteProgress(unsigned short, char const*, _IO_FILE*)@Base" 0.8.16~exp2 + (c++)"EDSP::WriteScenario(pkgDepCache&, _IO_FILE*, OpProgress*)@Base" 0.8.16~exp2 + (c++)"EDSP::WriteSolution(pkgDepCache&, _IO_FILE*)@Base" 0.8.16~exp2 + (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, bool, bool, bool, OpProgress*)@Base" 0.8.16~exp2 + (c++)"EDSP::WriteScenarioVersion(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&)@Base" 0.8.16~exp2 + (c++)"EDSP::WriteScenarioDependency(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&)@Base" 0.8.16~exp2 + (c++)"EDSP::DepMap@Base" 0.8.16~exp2 + (c++)"EDSP::PrioMap@Base" 0.8.16~exp2 + (c++)"EDSP::ReadLine(int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.16~exp2 + (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@Base" 0.8.16~exp6 + (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@Base" 0.8.16~exp6 + (c++)"typeinfo for edspIFType@Base" 0.8.16~exp2 + (c++)"typeinfo for edspSystem@Base" 0.8.16~exp2 + (c++)"typeinfo for edspListParser@Base" 0.8.16~exp2 + (c++)"typeinfo for edspIndex@Base" 0.8.16~exp2 + (c++)"typeinfo name for edspIFType@Base" 0.8.16~exp2 + (c++)"typeinfo name for edspSystem@Base" 0.8.16~exp2 + (c++)"typeinfo name for edspListParser@Base" 0.8.16~exp2 + (c++)"typeinfo name for edspIndex@Base" 0.8.16~exp2 + (c++)"vtable for edspIFType@Base" 0.8.16~exp2 + (c++)"vtable for edspSystem@Base" 0.8.16~exp2 + (c++)"vtable for edspListParser@Base" 0.8.16~exp2 + (c++)"vtable for edspIndex@Base" 0.8.16~exp2 + edspSys@Base 0.8.16~exp2 +### generalisation of checksums (with lfs) -- mostly api-compatible available (without sha512 in previous versions) + (c++)"AddCRC16(unsigned short, void const*, unsigned long long)@Base" 0.8.16~exp2 + (c++)"MD5Summation::Add(unsigned char const*, unsigned long long)@Base" 0.8.16~exp6 + (c++)"MD5Summation::Result()@Base" 0.8.16~exp2 + (c++)"MD5Summation::MD5Summation()@Base" 0.8.16~exp2 + (c++)"SHA1Summation::SHA1Summation()@Base" 0.8.16~exp2 + (c++)"SHA1Summation::Add(unsigned char const*, unsigned long long)@Base" 0.8.16~exp6 + (c++)"SHA1Summation::Result()@Base" 0.8.16~exp2 + (c++)"SHA256Summation::Add(unsigned char const*, unsigned long long)@Base" 0.8.16~exp6 + (c++)"SHA512Summation::Add(unsigned char const*, unsigned long long)@Base" 0.8.16~exp6 + (c++)"debRecordParser::SHA512Hash()@Base" 0.8.16~exp2 + (c++)"pkgRecords::Parser::SHA512Hash()@Base" 0.8.16~exp6 + (c++)"Hashes::AddFD(int, unsigned long long, bool, bool, bool, bool)@Base" 0.8.16~exp6 + (c++)"SummationImplementation::AddFD(int, unsigned long long)@Base" 0.8.16~exp6 + (c++)"typeinfo for MD5Summation@Base" 0.8.16~exp6 + (c++)"typeinfo for SHA1Summation@Base" 0.8.16~exp6 + (c++)"typeinfo for SHA256Summation@Base" 0.8.16~exp6 + (c++)"typeinfo for SHA512Summation@Base" 0.8.16~exp6 + (c++)"typeinfo for SHA2SummationBase@Base" 0.8.16~exp6 + (c++)"typeinfo for SummationImplementation@Base" 0.8.16~exp6 + (c++)"typeinfo name for MD5Summation@Base" 0.8.16~exp6 + (c++)"typeinfo name for SHA1Summation@Base" 0.8.16~exp6 + (c++)"typeinfo name for SHA256Summation@Base" 0.8.16~exp6 + (c++)"typeinfo name for SHA512Summation@Base" 0.8.16~exp6 + (c++)"typeinfo name for SHA2SummationBase@Base" 0.8.16~exp6 + (c++)"typeinfo name for SummationImplementation@Base" 0.8.16~exp6 + (c++)"vtable for MD5Summation@Base" 0.8.16~exp6 + (c++)"vtable for SHA1Summation@Base" 0.8.16~exp6 + (c++)"vtable for SHA256Summation@Base" 0.8.16~exp6 + (c++)"vtable for SHA512Summation@Base" 0.8.16~exp6 + (c++)"vtable for SHA2SummationBase@Base" 0.8.16~exp6 + (c++)"vtable for SummationImplementation@Base" 0.8.16~exp6 +### large file support - available in older api-compatible versions without lfs ### + (c++)"StrToNum(char const*, unsigned long long&, unsigned int, unsigned int)@Base" 0.8.16~exp6 + (c++)"OpProgress::SubProgress(unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, float)@Base" 0.8.16~exp6 + (c++)"OpProgress::OverallProgress(unsigned long long, unsigned long long, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp6 + (c++)"OpProgress::Progress(unsigned long long)@Base" 0.8.16~exp6 + (c++)"SourceCopy::GetFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@Base" 0.8.16~exp6 + (c++)"pkgAcqFile::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"pkgAcqFile::pkgAcqFile(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@Base" 0.8.16~exp6 + (c++)"pkgAcquire::UriIterator::~UriIterator()@Base" 0.8.16~exp6 + (c++)"pkgAcquire::MethodConfig::~MethodConfig()@Base" 0.8.16~exp6 + (c++)"pkgAcquire::Item::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"pkgAcquire::Item::Start(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long)@Base" 0.8.16~exp6 + (c++)"pkgRecords::Parser::RecordField(char const*)@Base" 0.8.16~exp6 + (c++)"pkgTagFile::Jump(pkgTagSection&, unsigned long long)@Base" 0.8.16~exp6 + (c++)"pkgTagFile::Offset()@Base" 0.8.16~exp6 + (c++)"pkgTagFile::pkgTagFile(FileFd*, unsigned long long)@Base" 0.8.16~exp6 + (c++)"DynamicMMap::RawAllocate(unsigned long long, unsigned long)@Base" 0.8.16~exp6 + (c++)"PackageCopy::GetFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@Base" 0.8.16~exp6 + (c++)"pkgAcqIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"indexRecords::parseSumData(char const*&, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long long&)@Base" 0.8.16~exp6 + (c++)"pkgAcqArchive::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"pkgTagSection::~pkgTagSection()@Base" 0.8.16~exp6 + (c++)"pkgAcqSubIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"debRecordParser::RecordField(char const*)@Base" 0.8.16~exp6 + (c++)"debReleaseIndex::SetTrusted(bool)@Base" 0.8.16~exp6 + (c++)"debReleaseIndex::debReleaseIndex(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@Base" 0.8.16~exp6 + (c++)"pkgAcqMetaIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"pkgAcqIndexDiffs::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"pkgAcqMetaSig::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"pkgAcqDiffIndex::Done(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long long, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, pkgAcquire::MethodConfig*)@Base" 0.8.16~exp6 + (c++)"pkgAcquireStatus::Fetched(unsigned long long, unsigned long long)@Base" 0.8.16~exp6 + (c++)"PreferenceSection::~PreferenceSection()@Base" 0.8.16~exp6 + (c++)"pkgCacheGenerator::NewDescription(pkgCache::DescIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, HashSumValue<128> const&, unsigned int)@Base" 0.8.16~exp6 + (c++)"pkgProblemResolver::ResolveInternal(bool)@Base" 0.8.16~exp6 + (c++)"pkgProblemResolver::ResolveByKeepInternal()@Base" 0.8.16~exp6 + (c++)"FileFd::Read(void*, unsigned long long, unsigned long long*)@Base" 0.8.16~exp6 + (c++)"FileFd::Seek(unsigned long long)@Base" 0.8.16~exp6 + (c++)"FileFd::Skip(unsigned long long)@Base" 0.8.16~exp6 + (c++)"FileFd::Write(void const*, unsigned long long)@Base" 0.8.16~exp6 + (c++)"FileFd::Truncate(unsigned long long)@Base" 0.8.16~exp6 + (c++)"pkgCache::PkgIterator::PkgIterator(pkgCache&, pkgCache::Package*)@Base" 0.8.16~exp6 + (c++)"pkgPolicy::GetPriority(pkgCache::PkgFileIterator const&)@Base" 0.8.16~exp6 + (c++)"OptionalIndexTarget::IsOptional() const@Base" 0.8.16~exp6 + (c++)"typeinfo for pkgTagFile@Base" 0.8.16~exp6 + (c++)"typeinfo for IndexTarget@Base" 0.8.16~exp6 + (c++)"typeinfo for pkgSrcRecords@Base" 0.8.16~exp6 + (c++)"typeinfo for OptionalIndexTarget@Base" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::UriIterator@Base" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::MethodConfig@Base" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::Queue@Base" 0.8.16~exp6 + (c++)"typeinfo for pkgAcquire::Worker@Base" 0.8.16~exp6 + (c++)"typeinfo name for pkgTagFile@Base" 0.8.16~exp6 + (c++)"typeinfo name for IndexTarget@Base" 0.8.16~exp6 + (c++)"typeinfo name for pkgSrcRecords@Base" 0.8.16~exp6 + (c++)"typeinfo name for OptionalIndexTarget@Base" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::UriIterator@Base" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::MethodConfig@Base" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::Queue@Base" 0.8.16~exp6 + (c++)"typeinfo name for pkgAcquire::Worker@Base" 0.8.16~exp6 + (c++)"vtable for pkgTagFile@Base" 0.8.16~exp6 + (c++)"vtable for IndexTarget@Base" 0.8.16~exp6 + (c++)"vtable for pkgSrcRecords@Base" 0.8.16~exp6 + (c++)"vtable for OptionalIndexTarget@Base" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::UriIterator@Base" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::MethodConfig@Base" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::Queue@Base" 0.8.16~exp6 + (c++)"vtable for pkgAcquire::Worker@Base" 0.8.16~exp6 +### remove deprecated parameter + (c++)"pkgDepCache::SetCandidateVersion(pkgCache::VerIterator)@Base" 0.8.16~exp6 + (c++)"pkgDepCache::AddSizes(pkgCache::PkgIterator const&, bool)@Base" 0.8.16~exp6 + (c++)"pkgDepCache::AddStates(pkgCache::PkgIterator const&, bool)@Base" 0.8.16~exp6 +### used internally by public interfaces - if you use them directly, you can keep the pieces + (c++|optional=internal|regex)"^SHA256_.*@Base$" 0.8.16~exp2 + (c++|optional=internal|regex)"^SHA384_.*@Base$" 0.8.16~exp2 + (c++|optional=internal|regex)"^SHA512_.*@Base$" 0.8.16~exp2 +### orderlist rework: the touched methods are protected +# (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator)@Base" 0.8.0 +# (c++)"pkgPackageManager::DepAdd(pkgOrderList&, pkgCache::PkgIterator, int)@Base" 0.8.0 +# (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool)@Base" 0.8.15~exp1 + (c++)"SigINT(int)@Base" 0.8.16~exp14 + (c++)"pkgPackageManager::SigINTStop@Base" 0.8.16~exp14 + (c++)"pkgPackageManager::SmartUnPack(pkgCache::PkgIterator, bool, int)@Base" 0.8.16~exp14 + (c++)"pkgPackageManager::SmartConfigure(pkgCache::PkgIterator, int)@Base" 0.8.16~exp14 +### FileFd rework: supporting different on-the-fly (de)compressing needs more parameter (abi), but the api is stable +# (c++)"FileFd::OpenDescriptor(int, FileFd::OpenMode, bool)@Base" 0.8.0 +# (c++)"FileFd::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, FileFd::OpenMode, unsigned long)@Base" 0.8.0 + (c++)"FileFd::OpenDescriptor(int, unsigned int, FileFd::CompressMode, bool)@Base" 0.8.16~exp9 + (c++)"FileFd::OpenDescriptor(int, unsigned int, APT::Configuration::Compressor const&, bool)@Base" 0.8.16~exp9 + (c++)"FileFd::ModificationTime()@Base" 0.8.16~exp9 + (c++)"FileFd::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, FileFd::CompressMode, unsigned long)@Base" 0.8.16~exp9 + (c++)"FileFd::Open(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned int, APT::Configuration::Compressor const&, unsigned long)@Base" 0.8.16~exp9 + (c++)"FileFd::ReadLine(char*, unsigned long long)@Base" 0.8.16~exp9 + (c++)"SummationImplementation::AddFD(FileFd&, unsigned long long)@Base" 0.8.16~exp9 + (c++)"Hashes::AddFD(FileFd&, unsigned long long, bool, bool, bool, bool)@Base" 0.8.16~exp9 + (c++|optional=deprecated,previous-inline)"FileFd::gzFd()@Base" 0.8.0 + (c++|optional=private)"FileFd::OpenInternDescriptor(unsigned int, APT::Configuration::Compressor const&)@Base" 0.8.16~exp9 +### CacheSet rework: making them real containers breaks bigtime the API (for the CacheSetHelper) +# (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, _IO_FILE*, APT::PackageSet const&, OpProgress*)@Base" 0.8.16~exp2 +# (c++)"EDSP::WriteScenarioLimitedDependency(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::PackageSet const&)@Base" 0.8.16~exp2 +# (c++)"APT::PackageSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::PackageSet::FromCommandLine(pkgCacheFile&, char const**, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::PackageSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::PackageSet::Modifier, std::allocator<APT::PackageSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::PackageSet::FromName(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::PackageSet::FromTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::PackageSet::FromRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::PackageSet::~PackageSet()@Base" 0.8.0 +# (c++)"APT::VersionSet::FromString(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::VersionSet::Version const&, APT::CacheSetHelper&, bool const&)@Base" 0.8.0 +# (c++)"APT::VersionSet::FromPackage(pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::VersionSet::FromCommandLine(pkgCacheFile&, char const**, APT::VersionSet::Version const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::VersionSet::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::VersionSet::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::VersionSet::GroupedFromCommandLine(pkgCacheFile&, char const**, std::list<APT::VersionSet::Modifier, std::allocator<APT::VersionSet::Modifier> > const&, unsigned short const&, APT::CacheSetHelper&)@Base" 0.8.0 +# (c++)"APT::VersionSet::~VersionSet()@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::showTaskSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::showRegExSelection(APT::PackageSet const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::canNotFindTask(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::canNotFindRegEx(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::canNotFindAllVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::canNotFindPackage(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool const&)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::canNotFindCandInstVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 +# (c++)"APT::CacheSetHelper::canNotFindInstCandVer(pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.0 + (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator::getPkg() const@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::getConstructor() const@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::empty() const@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::const_iterator::getPkg() const@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::getConstructor() const@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::empty() const@Base" 0.8.16~exp9 + (c++)"APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::empty() const@Base" 0.8.16~exp9 + (c++)"APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator::getVer() const@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindTask(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindAllVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindPackage(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::showTaskSelection(pkgCache::PkgIterator const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::showRegExSelection(pkgCache::PkgIterator const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::showSelectedVersion(pkgCache::PkgIterator const&, pkgCache::VerIterator, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindCandInstVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.16~exp9 + (c++)"APT::CacheSetHelper::canNotFindInstCandVer(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::setConstructor(APT::PackageContainerInterface::Constructor const&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::clear()@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::insert(pkgCache::PkgIterator const&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::setConstructor(APT::PackageContainerInterface::Constructor const&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::clear()@Base" 0.8.16~exp9 + (c++)"APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::insert(pkgCache::PkgIterator const&)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::clear()@Base" 0.8.16~exp9 + (c++)"APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::insert(pkgCache::VerIterator const&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainerInterface::FromString(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainerInterface::FromCommandLine(APT::PackageContainerInterface*, pkgCacheFile&, char const**, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainerInterface::FromModifierCommandLine(unsigned short&, APT::PackageContainerInterface*, pkgCacheFile&, char const*, std::list<APT::PackageContainerInterface::Modifier, std::allocator<APT::PackageContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainerInterface::FromName(pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainerInterface::FromTask(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::PackageContainerInterface::FromRegEx(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::FromString(APT::VersionContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&, bool)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::FromPackage(APT::VersionContainerInterface*, pkgCacheFile&, pkgCache::PkgIterator const&, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::FromCommandLine(APT::VersionContainerInterface*, pkgCacheFile&, char const**, APT::VersionContainerInterface::Version const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::getCandidateVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::list<APT::VersionContainerInterface::Modifier, std::allocator<APT::VersionContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 + (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, _IO_FILE*, APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > > const&, OpProgress*)@Base" 0.8.16~exp9 + (c++)"EDSP::WriteScenarioLimitedDependency(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > > const&)@Base" 0.8.16~exp9 + (c++)"APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator std::max_element<APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator, CompareProviders>(APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator, APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator, CompareProviders)@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::PackageContainerInterface::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::PackageContainerInterface@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::VersionContainerInterface::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo for APT::VersionContainerInterface@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::PackageContainerInterface::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::PackageContainerInterface@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::VersionContainerInterface::const_iterator@Base" 0.8.16~exp9 + (c++)"typeinfo name for APT::VersionContainerInterface@Base" 0.8.16~exp9 + (c++)"vtable for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 + (c++)"vtable for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 + (c++)"vtable for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 + (c++)"vtable for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 + (c++)"vtable for APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >::iterator@Base" 0.8.16~exp9 + (c++)"vtable for APT::VersionContainer<std::list<pkgCache::VerIterator, std::allocator<pkgCache::VerIterator> > >@Base" 0.8.16~exp9 + (c++)"vtable for APT::PackageContainerInterface::const_iterator@Base" 0.8.16~exp9 + (c++)"vtable for APT::PackageContainerInterface@Base" 0.8.16~exp9 + (c++)"vtable for APT::VersionContainerInterface::const_iterator@Base" 0.8.16~exp9 + (c++)"vtable for APT::VersionContainerInterface@Base" 0.8.16~exp9 +### mixed stuff + (c++)"GetListOfFilesInDir(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool)@Base" 0.8.16~exp13 + (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PkgIterator const&) const@Base" 0.8.16~exp10 + (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PrvIterator const&) const@Base" 0.8.16~exp10 + (c++|optional=private)"pkgCacheGenerator::MergeListGroup(pkgCacheGenerator::ListParser&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp7 + (c++|optional=private)"pkgCacheGenerator::MergeListPackage(pkgCacheGenerator::ListParser&, pkgCache::PkgIterator&)@Base" 0.8.16~exp7 + (c++|optional=private)"pkgCacheGenerator::MergeListVersion(pkgCacheGenerator::ListParser&, pkgCache::PkgIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgCache::VerIterator*&)@Base" 0.8.16~exp7 + (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator&, pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.16~exp7 + (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator&, pkgCache::PkgIterator&)@Base" 0.8.16~exp7 + (c++|optional=internal)"IsDuplicateDescription(pkgCache::DescIterator, HashSumValue<128> const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp7 diff --git a/debian/rules b/debian/rules index d6c2dfa22..b819460c1 100755 --- a/debian/rules +++ b/debian/rules @@ -5,6 +5,7 @@ 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)) @@ -18,6 +19,8 @@ endif ifneq (,$(shell which dpkg-buildflags)) export CXXFLAGS = $(shell dpkg-buildflags --get CXXFLAGS) + export LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS) + export CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) else ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) export CXXFLAGS = -O0 -g -Wall @@ -32,7 +35,7 @@ build: PKG=apt DEB_BUILD_PROG:=debuild --preserve-envvar PATH --preserve-envvar CCACHE_DIR -us -uc $(DEB_BUILD_PROG_OPTS) APT_DEBVER=$(shell dpkg-parsechangelog |sed -n -e '/^Version:/s/^Version: //p' | sed -e 's/\+.*$$//') -APT_CONFVER=$(shell sed -n -e 's/^AC_DEFINE_UNQUOTED(VERSION,"\(.*\)")/\1/p' configure.in) +APT_CONFVER=$(shell sed -n -e 's/^PACKAGE_VERSION="\(.*\)"/\1/p' configure.in) APT_CVSTAG=$(shell echo "$(APT_DEBVER)" | sed -e 's/^/v/' -e 's/\./_/g') # Determine the build directory to use @@ -62,7 +65,7 @@ configure.in: endif # APT Programs in apt-utils -APT_UTILS=ftparchive sortpkgs extracttemplates +APT_UTILS=ftparchive sortpkgs extracttemplates internal-solver # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 @@ -70,9 +73,9 @@ APT_UTILS=ftparchive sortpkgs extracttemplates # Find the libapt-pkg major version for use in other control files include buildlib/libversion.mak -# Determine which package we should provide in the control files -LIBAPTPKG_PROVIDE=libapt-pkg$(LIBAPTPKG_MAJOR) -LIBAPTINST_PROVIDE=libapt-inst$(LIBAPTINST_MAJOR) +# Determine which library package names to use +LIBAPT_PKG=libapt-pkg$(LIBAPTPKG_MAJOR) +LIBAPT_INST=libapt-inst$(LIBAPTINST_MAJOR) # do not fail as we are just experimenting with symbol files for now export DPKG_GENSYMBOLS_CHECK_LEVEL=0 @@ -91,12 +94,16 @@ build/configure-stamp: configure dh_testdir -mkdir build cp COPYING debian/copyright - cd build && CXXFLAGS="$(CXXFLAGS)" ../configure $(confflags) + cd build && CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" CPPFLAGS="$(CPPFLAGS)" ../configure $(confflags) touch $@ build/build-stamp: build/configure-stamp # Add here commands to compile the package. $(MAKE) binary + # compat symlink for the locale split + mkdir -p build/usr/share + cd build/usr/share && ln -f -s ../../locale . + # compile and run tests ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS))) $(MAKE) test else @@ -114,6 +121,11 @@ clean: [ ! -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. @@ -139,7 +151,7 @@ libapt-pkg-doc: build-doc dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) + dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -167,7 +179,7 @@ apt-doc: build-doc # Build architecture-dependent files here. -binary-arch: apt libapt-pkg-dev apt-utils apt-transport-https +binary-arch: $(LIBAPT_PKG) $(LIBAPT_INST) apt libapt-pkg-dev apt-utils apt-transport-https apt_MANPAGES = apt-cache apt-cdrom apt-config apt-get apt-key apt-mark apt-secure apt apt.conf apt_preferences sources.list apt: build build-doc dh_testdir -p$@ @@ -187,7 +199,7 @@ apt: build build-doc dh_install -p$@ --sourcedir=$(BLD) # Remove the bits that are in apt-utils - rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS)) + rm $(addprefix debian/$@/usr/bin/apt-,$(APT_UTILS) dump-solver) # https has its own package rm debian/$@/usr/lib/apt/methods/https @@ -207,14 +219,13 @@ apt: build build-doc dh_strip -p$@ dh_compress -p$@ dh_fixperms -p$@ - dh_makeshlibs -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib - dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) + dh_shlibdeps -p$@ + dh_gencontrol -p$@ 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$@ @@ -229,7 +240,7 @@ libapt-pkg-dev: build dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_gencontrol -p$@ -- -Vlibapt-pkg:provides=$(LIBAPTPKG_PROVIDE) -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) + dh_gencontrol -p$@ -- -Vlibapt-pkg-name=$(LIBAPT_PKG) -Vlibapt-inst-name=$(LIBAPT_INST) dh_md5sums -p$@ dh_builddeb -p$@ @@ -241,8 +252,10 @@ apt-utils: build dh_installdirs -p$@ cp $(addprefix $(BLD)/bin/apt-,$(APT_UTILS)) debian/$@/usr/bin/ + cp $(BLD)/bin/apt-dump-solver debian/$@/usr/lib/apt/solvers/dump dh_install -p$@ --sourcedir=$(BLD) + dh_link -p$@ dh_installdocs -p$@ dh_installexamples -p$@ @@ -255,8 +268,46 @@ apt-utils: build dh_fixperms -p$@ dh_makeshlibs -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib - dh_gencontrol -p$@ -- -Vlibapt-inst:provides=$(LIBAPTINST_PROVIDE) + dh_shlibdeps -p$@ + dh_gencontrol -p$@ + dh_md5sums -p$@ + dh_builddeb -p$@ + +$(LIBAPT_PKG): build debian/$(LIBAPT_PKG).install + dh_testdir -p$@ + dh_testroot -p$@ + dh_prep -p$@ + dh_installdirs -p$@ + + dh_install -p$@ --sourcedir=$(BLD) + dh_installdocs -p$@ + dh_installchangelogs -p$@ + dh_strip -p$@ + dh_compress -p$@ + dh_fixperms -p$@ + dh_makeshlibs -p$@ + dh_installdeb -p$@ + dh_shlibdeps -p$@ + dh_gencontrol -p$@ + dh_md5sums -p$@ + dh_builddeb -p$@ + +$(LIBAPT_INST): build debian/$(LIBAPT_INST).install + dh_testdir -p$@ + dh_testroot -p$@ + dh_prep -p$@ + dh_installdirs -p$@ + + dh_install -p$@ --sourcedir=$(BLD) + dh_installdocs -p$@ + dh_installchangelogs -p$@ + dh_strip -p$@ + dh_compress -p$@ + dh_fixperms -p$@ + dh_makeshlibs -p$@ + dh_installdeb -p$@ + dh_shlibdeps -p$@ + dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ @@ -278,7 +329,7 @@ apt-transport-https: build libapt-pkg-dev dh_compress -p$@ dh_fixperms -p$@ dh_installdeb -p$@ - dh_shlibdeps -p$@ -l$(CURDIR)/debian/apt/usr/lib:$(CURDIR)/debian/$@/usr/lib + dh_shlibdeps -p$@ dh_gencontrol -p$@ dh_md5sums -p$@ dh_builddeb -p$@ diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 43d961443..cf79aff85 100644 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -31,7 +31,7 @@ PROJECT_NAME = @PACKAGE@ # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = @VERSION@ +PROJECT_NUMBER = @PACKAGE_VERSION@ # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/doc/apt-get.8.xml b/doc/apt-get.8.xml index 0b52574e6..ecd753f2d 100644 --- a/doc/apt-get.8.xml +++ b/doc/apt-get.8.xml @@ -247,7 +247,7 @@ <listitem><para><literal>source</literal> causes <command>apt-get</command> to fetch source packages. APT will examine the available packages to decide which source package to fetch. It will then find and download into the current directory the - newest available version of that source package while respect the + newest available version of that source package while respecting the default release, set with the option <literal>APT::Default-Release</literal>, the <option>-t</option> option or per package with the <literal>pkg/release</literal> syntax, if possible.</para> @@ -433,6 +433,11 @@ Configuration Item: <literal>APT::Get::Assume-Yes</literal>.</para></listitem> </varlistentry> + <varlistentry><term><option>--assume-no</option></term> + <listitem><para>Automatic "no" to all prompts. + Configuration Item: <literal>APT::Get::Assume-No</literal>.</para></listitem> + </varlistentry> + <varlistentry><term><option>-u</option></term><term><option>--show-upgraded</option></term> <listitem><para>Show upgraded packages; Print out a list of all packages that are to be upgraded. diff --git a/doc/external-dependency-solver-protocol.txt b/doc/external-dependency-solver-protocol.txt new file mode 100644 index 000000000..7a124d8f9 --- /dev/null +++ b/doc/external-dependency-solver-protocol.txt @@ -0,0 +1,299 @@ +# APT External Dependency Solver Protocol (EDSP) - version 0.4 + +This document describes the communication protocol between APT and +external dependency solvers. The protocol is called APT EDSP, for "APT +External Dependency Solver Protocol". + + +## Components + +- **APT**: we know this one. +- APT is equipped with its own **internal solver** for dependencies, + which is identified by the string `internal`. +- **External solver**: an *external* software component able to resolve + dependencies on behalf of APT. + +At each interaction with APT, a single solver is in use. When there is +a total of 2 or more solvers, internals or externals, the user can +choose which one to use. + +Each solver is identified by an unique string, the **solver +name**. Solver names must be formed using only alphanumeric ASCII +characters, dashes, and underscores; solver names must start with a +lowercase ASCII letter. The special name `internal` denotes APT's +internal solver, is reserved, and cannot be used by external solvers. + + +## Installation + +Each external solver is installed as a file under Dir::Bin::Solvers (see +below), which defaults to `/usr/lib/apt/solvers`. We will assume in the +remainder of this section that such a default value is in effect. + +The naming scheme is `/usr/lib/apt/solvers/NAME`, where `NAME` is the +name of the external solver. + +Each file under `/usr/lib/apt/solvers` corresponding to an external +solver must be executable. + +No non-solver files must be installed under `/usr/lib/apt/solvers`, so +that an index of available external solvers can be obtained by listing +the content of that directory. + + +## Configuration + +Several APT options can be used to affect dependency solving in APT. An +overview of them is given below. Please refer to proper APT +configuration documentation for more, and more up to date, information. + +- **APT::Solver**: the name of the solver to be used for + dependency solving. Defaults to `internal` + +- **APT::Solver::Strict-Pinning**: whether pinning must be strictly + respected (as the internal solver does) or can be slightly deviated + from. Defaults to `yes`. + +- **APT::Solver::NAME::Preferences** (where NAME is a solver name): + solver-specific user preference string used during dependency solving, + when the solver NAME is in use. Check solver-specific documentation + for what is supported here. Defaults to the empty string. + +- **Dir::Bin::Solvers**: absolute path of the directory where to look for + external solvers. Defaults to `/usr/lib/apt/solvers`. + +## Protocol + +When configured to use an external solver, APT will resort to it to +decide which packages should be installed or removed. + +The interaction happens **in batch**: APT will invoke the external +solver passing the current status of installed and available packages, +as well as the user request to alter the set of installed packages. The +external solver will compute a new complete set of installed packages +and gives APT a "diff" listing of which *additional* packages should be +installed and of which currently installed packages should be +*removed*. (Note: the order in which those actions have to be performed +will be up to APT to decide.) + +External solvers are invoked by executing them. Communications happens +via the file descriptors: **stdin** (standard input) and **stdout** +(standard output). stderr is not used by the EDSP protocol. Solvers can +therefore use stderr to dump debugging information that could be +inspected separately. + +After invocation, the protocol passes through a sequence of phases: + +1. APT invokes the external solver +2. APT send to the solver a dependency solving **scenario** +3. The solver solves dependencies. During this phase the solver may + send, repeatedly, **progress** information to APT. +4. The solver sends back to APT an **answer**, i.e. either a *solution* + or an *error* report. +5. The external solver exits + + +### Scenario + +A scenario is a text file encoded in a format very similar to the "Deb +822" format (AKA "the format used by Debian `Packages` files"). A +scenario consists of two distinct parts: a **request** and a **package +universe**, occurring in that order. The request consists of a single +Deb 822 stanza, while the package universe consists of several such +stanzas. All stanzas occurring in a scenario are separated by an empty +line. + + +#### Request + +Within a dependency solving scenario, a request represents the action on +installed packages requested by the user. + +A request is a single Deb 822 stanza opened by a mandatory Request field +and followed by a mixture of action and preference fields. + +The value of the **Request:** field is a string describing the EDSP +protocol which will be used to communicate. At present, the string must +be `EDSP 0.4`. + +a unique request identifier, such as an +UUID. Request fields are mainly used to identify the beginning of a +request stanza; their actual values are otherwise not used by the EDSP +protocol. + +The following **action fields** are supported in request stanzas: + +- **Install:** (optional, defaults to the empty string) A space + separated list of package names, with *no version attached*, to + install. This field denotes a list of packages that the user wants to + install, usually via an APT `install` request. + +- **Remove:** (optional, defaults to the empty string) Same syntax of + Install. This field denotes a list of packages that the user wants to + remove, usually via APT `remove` or `purge` requests. + +- **Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, an upgrade of all installed packages has been + requested, usually via an APT `upgrade` request. + +- **Dist-Upgrade:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. Same as Upgrade, but for APT `dist-upgrade` requests. + +- **Autoremove:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, a clean up of unused automatically installed + packages has been requested, usually via an APT `autoremove` request. + +The following **preference fields** are supported in request stanzas: + +- **Strict-Pinning:** (optional, defaults to `yes`). Allowed values: + `yes`, `no`. When set to `yes`, APT pinning is strict, in the sense + that the solver must not propose to install packages which are not APT + candidates (see the `APT-Pin` and `APT-Candidate` fields in the + package universe). When set to `no`, the solver does only a best + effort attempt to install APT candidates. Usually, the value of this + field comes from the `APT::Solver::Strict-Pinning` configuration + option. + +- **Preferences:** a solver-specific optimization string, usually coming + from the `APT::Solver::Preferences` configuration option. + + +#### Package universe + +A package universe is a list of Deb 822 stanzas, one per package, called +**package stanzas**. Each package stanzas starts with a Package +field. The following fields are supported in package stanzas: + +- All fields contained in the dpkg database, with the exception of + fields marked as "internal" (see the manpage `dpkg-query (1)`). Among + those fields, the following are mandatory for all package stanzas: + Package, Version, Architecture. + + It is recommended not to pass the Description field to external + solvers or, alternatively, to trim it to the short description only. + +- **Installed:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, the corresponding package is currently + installed. + + Note: the Status field present in the dpkg database must not be passed + to the external solver, as it's an internal dpkg field. Installed and + other fields permit to encode the most relevant aspects of Status in + communications with solvers. + +- **Hold:** (optional, defaults to `no`). Allowed values: `yes`, + `no`. When set to `yes`, the corresponding package is marked as "on + hold" by dpkg. + +- **APT-ID:** (mandatory). Unique package identifier, according to APT. + +- **APT-Pin:** (mandatory). Must be an integer. Package pin value, + according to APT policy. + +- **APT-Candidate:** (optional, defaults to `no`). Allowed values: + `yes`, `no`. When set to `yes`, the corresponding package is the APT + candidate for installation among all available packages with the same + name. + +- **APT-Automatic:** (optional, defaults to `no`). Allowed values: + `yes`, `no`. When set to `yes`, the corresponding package is marked by + APT as automatic installed. Note that automatic installed packages + should be removed by the solver only when the Autoremove action is + requested (see Request section). + +### Answer + +An answer from the external solver to APT is either a *solution* or an +*error*. + +The following invariant on **exit codes** must hold true. When the +external solver is *able to find a solution*, it will write the solution +to standard output and then exit with an exit code of 0. When the +external solver is *unable to find a solution* (and s aware of that), it +will write an error to standard output and then exit with an exit code +of 0. An exit code other than 0 will be interpreted as a solver crash +with no meaningful error about dependency resolution to convey to the +user. + + +#### Solution + +A solution is a list of Deb 822 stanzas. Each of them could be an +install stanza (telling APT to install a specific package), a remove +stanza (telling APT to remove one), or an autoremove stanza (telling APT +about the *future* possibility of removing a package using the +Autoremove action). + +An **install stanza** starts with an Install field and supports the +following fields: + +- **Install:** (mandatory). The value is a package identifier, + referencing one of the package stanzas of the package universe via its + APT-ID field. + +- All fields supported by package stanzas. + +**Remove stanzas** are similar to install stanzas, but have **Remove** +fields instead of Install fields. + +**Autoremove stanzas** are similar to install stanzas, but have +**Autoremove** fields instead of Install fields. Autoremove stanzas +should be output so that APT can inform the user of which packages they +can now autoremove, as a consequence of the executed action. However, +this protocol makes no assumption on the fact that a subsequent +invocation of an Autoremove action will actually remove the very same +packages indicated by Autoremove stanzas in the former solution. + +In terms of expressivity, install and remove stanzas can carry one +single field each, as APT-IDs are enough to pinpoint packages to be +installed/removed. Nonetheless, for protocol readability, it is +recommended that solvers either add unconditionally the fields Package, +Version, and Architecture to all install/remove stanzas or, +alternatively, that they support a `--verbose` command line flag that +explicitly enables the output of those fields in solutions. + + +#### Error + +An error is a single Deb 822 stanza, starting the field Error. The +following fields are supported in error stanzas: + +- **Error:** (mandatory). The value of this field is ignored, although + it should be a unique error identifier, such as a UUID. + +- **Message:** (mandatory). The value of this field is a text string, + meant to be read by humans, that explains the cause of the solver + error. Message fields might be multi-line, like the Description field + in the dpkg database. The first line conveys a short message, which + can be explained in more details using subsequent lines. + + +### Progress + +During dependency solving, an external solver may send progress +information to APT using **progress stanzas**. A progress stanza starts +with the Progress field and might contain the following fields: + +- **Progress:** (mandatory). The value of this field is a date and time + timestamp, in RFC 2822 format. The timestamp provides a time + annotation for the progress report. + +- **Percentage:** (optional). An integer from 0 to 100, representing the + completion of the dependency solving process, as declared by the + solver. + +- **Message:** (optional). A textual message, meant to be read by the + APT user, telling what is going on within the dependency solving + (e.g. the current phase of dependency solving, as declared by the + solver). + + +# Future extensions + +Potential future extensions to this protocol, listed in no specific +order, include: + +- fixed error types to identify common failures across solvers and + enable APT to translate error messages +- structured error data to explain failures in terms of packages and + dependencies diff --git a/doc/makefile b/doc/makefile index 4fcf3bd10..0817821b6 100644 --- a/doc/makefile +++ b/doc/makefile @@ -67,26 +67,21 @@ veryclean-subdirs: rm -rf $$dir; \ done +.PHONY: update-po po4a stats + ifdef PO4A doc: po4a -clean: po4a-clean - -.PHONY: update-po po4a stats update-po: po4a --previous --no-backups --force --no-translations po4a.conf -po4a-clean: - po4a --previous --rm-backups --rm-translations po4a.conf - po4a: po4a --previous --no-backups po4a.conf +endif stats: for i in po/*.po; do echo -n "$$i: "; msgfmt --statistics $$i; done -endif - ifdef DOXYGEN DOXYGEN_SOURCES = $(shell find $(BASE)/apt-pkg -not -name .\\\#* -and \( -name \*.cc -or -name \*.h \) ) @@ -96,9 +91,6 @@ doxygen-clean: rm -fr $(BUILD)/doc/doxygen rm -f $(BUILD)/doc/doxygen-stamp -$(BUILD)/doc/Doxyfile: Doxyfile.in - (cd $(BUILD) && ./config.status doc/Doxyfile) - $(BUILD)/doc/doxygen-stamp: $(DOXYGEN_SOURCES) $(BUILD)/doc/Doxyfile rm -fr $(BUILD)/doc/doxygen mkdir $(BUILD)/doc/doxygen # some versions seem to not create this directory #628799 diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index 630aec3b0..5cc0b53fe 100644 --- a/doc/po/apt-doc.pot +++ b/doc/po/apt-doc.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\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" @@ -566,7 +566,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 sources.list.5.xml:36 +#: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 sources.list.5.xml:36 msgid "Description" msgstr "" @@ -580,7 +580,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -944,7 +944,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "" @@ -967,7 +967,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 apt-sortpkgs.1.xml:61 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "" @@ -987,12 +987,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "" @@ -1067,14 +1067,14 @@ msgstr "" #: apt-cache.8.xml:317 msgid "" "Per default the <literal>depends</literal> and <literal>rdepends</literal> " -"print all dependencies. This can be tweaked with these flags which will omit " +"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>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "" @@ -1091,7 +1091,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "" @@ -1187,12 +1187,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 +#: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "" @@ -1202,7 +1202,7 @@ msgid "&file-sourceslist; &file-statelists;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 sources.list.5.xml:250 +#: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 sources.list.5.xml:234 msgid "See Also" msgstr "" @@ -1212,7 +1212,7 @@ msgid "&apt-conf;, &sources-list;, &apt-get;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 +#: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "" @@ -1311,12 +1311,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "" @@ -1352,7 +1352,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "" @@ -1397,17 +1397,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "" @@ -1519,7 +1519,7 @@ msgid "Just show the contents of the configuration space." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 apt-sortpkgs.1.xml:73 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "" @@ -1580,7 +1580,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "" @@ -1784,7 +1784,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "" @@ -2242,8 +2242,8 @@ msgid "" "non-free</literal>" msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "" @@ -2443,28 +2443,26 @@ msgid "" "Configuration Items: " "<literal>APT::FTPArchive::<replaceable>Checksum</replaceable></literal> and " "<literal>APT::FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</replaceable></literal> " -"where <literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or " -"<literal>Release</literal> and " -"<literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or " -"<literal>SHA256</literal>." +"where <literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, " +"<literal>SHA1</literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -2473,12 +2471,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -2487,12 +2485,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -2502,12 +2500,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: " @@ -2515,24 +2513,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: " "<literal>APT::FTPArchive::ReadOnlyDB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -2541,12 +2539,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -2560,12 +2558,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -2575,12 +2573,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 sources.list.5.xml:198 msgid "Examples" msgstr "" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "" "<command>apt-ftparchive</command> packages " @@ -2589,14 +2587,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -2627,9 +2625,7 @@ msgid "" "<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> <arg> " -"<option>-a=</option> <arg choice='plain'> " -"<replaceable>default_architecture</replaceable> </arg> </arg> <group " +"<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 " @@ -2656,7 +2652,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -2665,12 +2661,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -2685,12 +2681,12 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -2706,12 +2702,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, " @@ -2722,12 +2718,12 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -2741,12 +2737,12 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -2762,7 +2758,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -2773,14 +2769,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more " "already-installed packages without upgrading every package you have on your " @@ -2792,14 +2788,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -2811,12 +2807,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -2826,12 +2822,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -2839,24 +2835,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option " "<literal>APT::Default-Release</literal>, the <option>-t</option> option or " "per package with the <literal>pkg/release</literal> syntax, if possible." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via " "<literal>deb-src</literal> type lines in the &sources-list; file. This means " @@ -2867,17 +2863,16 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 msgid "" "If the <option>--compile</option> option is specified then the package will " -"be compiled to a binary .deb using <command>dpkg-buildpackage</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." +"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 "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -2887,7 +2882,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -2895,46 +2890,43 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: apt-get.8.xml:272 msgid "" "<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 natively. If desired a " -"host-architecture can be specified with the " -"<option>--host-architecture</option> option instead." +"attempt to satisfy the build dependencies for a source package." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: apt-get.8.xml:282 msgid "" "<literal>download</literal> will download the given binary package into the " -"current directory." +"current directoy." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -2946,12 +2938,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -2963,25 +2955,25 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -2994,48 +2986,48 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 msgid "<option>--install-suggests</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 msgid "" "Consider suggested packages as a dependency for installing. Configuration " "Item: <literal>APT::Install-Suggests</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -3051,17 +3043,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -3073,12 +3065,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with " "<option>--ignore-missing</option> to force APT to use only the .debs it has " @@ -3087,7 +3079,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3099,17 +3091,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: " @@ -3117,7 +3109,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking " "(<literal>Debug::NoLocking</literal>) automatic. Also a notice will be " @@ -3129,7 +3121,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -3138,22 +3130,22 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -3163,84 +3155,68 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -msgid "<option>--host-architecture</option>" -msgstr "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -3249,12 +3225,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with " "<literal>install</literal>, <literal>no-upgrade</literal> will prevent " @@ -3263,12 +3239,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 msgid "" "Do not install new packages; When used in conjunction with " "<literal>install</literal>, <literal>only-upgrade</literal> will prevent " @@ -3277,12 +3253,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -3292,12 +3268,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -3310,12 +3286,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be " @@ -3325,24 +3301,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -3353,17 +3329,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -3378,12 +3354,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where " @@ -3393,24 +3369,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or " "<literal>remove</literal>, then this option acts like running " @@ -3419,12 +3395,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and " "<literal>build-dep</literal> commands. Indicates that the given source " @@ -3436,22 +3412,22 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, " @@ -3460,24 +3436,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: " @@ -3485,14 +3461,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, " @@ -3500,29 +3476,29 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "" @@ -3636,89 +3612,84 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 msgid "net-update" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: apt-key.8.xml:162 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.d</filename> directory, through " "<filename>trusted.gpg</filename> is the primary keyring which means that " "e.g. new keys are added to this one." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "" @@ -4228,10 +4199,10 @@ msgstr "" #: apt.conf.5.xml:52 msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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 " +"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." msgstr "" @@ -4406,24 +4377,13 @@ msgid "" "compiled for." msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version " "available. Contains release name, codename or release version. Examples: " @@ -4432,24 +4392,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -4458,12 +4418,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -4496,12 +4456,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a " @@ -4512,12 +4472,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -4538,63 +4498,63 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -4606,68 +4566,54 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 msgid "" -"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." +"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." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -msgid "Min-ValidTime" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -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 "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of " "<literal>host</literal> or <literal>access</literal> which determines how " @@ -4677,36 +4623,36 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -4718,7 +4664,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -4732,7 +4678,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -4740,7 +4686,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -4752,7 +4698,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with " "<literal>Acquire::http::Dl-Limit</literal> which accepts integer values in " @@ -4762,7 +4708,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -4770,12 +4716,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -4785,7 +4731,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -4807,12 +4753,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -4832,7 +4778,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -4842,7 +4788,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the " "<envar>ftp_proxy</envar> environment variable to a http url - see the " @@ -4852,7 +4798,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -4862,18 +4808,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -4886,12 +4832,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -4899,12 +4845,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "" "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> " @@ -4912,7 +4858,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -4924,19 +4870,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -4953,18 +4899,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 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 " +"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 " @@ -4974,20 +4920,20 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:449 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 a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -4996,12 +4942,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the " @@ -5014,13 +4960,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and " "\"en\". \"<literal>environment</literal>\" has a special meaning here: It " @@ -5043,7 +4989,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" " @@ -5051,12 +4997,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -5068,7 +5014,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -5081,7 +5027,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -5091,7 +5037,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -5099,7 +5045,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by " "<literal>Dir::Bin</literal>. <literal>Dir::Bin::Methods</literal> specifies " @@ -5111,7 +5057,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -5124,7 +5070,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -5135,12 +5081,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -5148,12 +5094,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -5164,50 +5110,50 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -5215,17 +5161,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5234,12 +5180,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5249,7 +5195,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -5260,36 +5206,36 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is " "<filename>/</filename>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -5304,7 +5250,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -5314,7 +5260,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -5328,12 +5274,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -5345,12 +5291,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -5367,12 +5313,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure " "--pending</command> to let dpkg handle all required configurations and " @@ -5384,12 +5330,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -5399,12 +5345,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by " @@ -5416,12 +5362,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -5433,7 +5379,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -5447,12 +5393,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -5461,12 +5407,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -5477,7 +5423,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, " @@ -5485,7 +5431,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s " @@ -5493,7 +5439,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -5503,110 +5449,110 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the " "<literal>apt</literal> libraries." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -5614,92 +5560,92 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "Log all interactions with the sub-processes that actually perform downloads." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial " @@ -5709,12 +5655,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as " "keep/install/remove while the ProblemResolver does his work. Each addition " @@ -5732,90 +5678,90 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -5823,32 +5769,32 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from " "<filename>/etc/apt/vendors.list</filename>." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "" @@ -5919,8 +5865,8 @@ msgstr "" 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 either no or " -"\"<literal>pref</literal>\" as filename extension and only contain " +"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> " @@ -6252,8 +6198,8 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a " -"glob()-like expression) or contains the word kde (as a POSIX extended " -"regular expression surrounded by slashes)." +"glob()-like expression or contains the word kde (as a POSIX extended regular " +"expression surrounded by slashes)." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><programlisting> @@ -6269,7 +6215,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -6937,7 +6883,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml:81 #, no-wrap -msgid "deb [ options ] uri distribution [component1] [component2] [...]" +msgid "deb uri distribution [component1] [component2] [...]" msgstr "" #. type: Content of: <refentry><refsect1><para> @@ -6983,26 +6929,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -7010,12 +6936,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -7025,17 +6951,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -7043,7 +6969,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media " "swapping. Use the &apt-cdrom; program to create cdrom entries in the source " @@ -7051,7 +6977,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format " @@ -7062,7 +6988,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual " @@ -7074,12 +7000,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -7087,17 +7013,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -7107,12 +7033,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme " @@ -7126,91 +7052,75 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, no-wrap -msgid "" -"deb http://ftp.debian.org/debian &stable-codename; main\n" -"deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -7219,19 +7129,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, no-wrap msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 msgid "" "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe " "directory, and uses only files found under " @@ -7243,7 +7153,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "" diff --git a/doc/po/de.po b/doc/po/de.po index 96d7f054a..0db7a13fb 100644 --- a/doc/po/de.po +++ b/doc/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "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-10-05 23:06+0300\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\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" @@ -734,7 +734,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -755,7 +755,7 @@ msgstr "" "und Generieren von interessanten Ausgaben der Paket-Metadaten bereit." #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -1254,8 +1254,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "Optionen" @@ -1282,7 +1282,7 @@ msgstr "" "pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1310,12 +1310,12 @@ msgstr "" "srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1396,9 +1396,16 @@ msgstr "<option>--no-enhances</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 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>." msgid "" "Per default the <literal>depends</literal> and <literal>rdepends</literal> " -"print all dependencies. This can be tweaked with these flags which will omit " +"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>." @@ -1406,11 +1413,12 @@ msgstr "" "Standardmäßig geben <literal>depends</literal> und <literal>rdepends</" "literal> alle Abhängigkeiten aus. Dies kann mit diesen Schaltern optimiert " "werden, die den angegebenen Abhängigkeitstyp weglassen. " -"Konfigurationselement: <literal>APT::Cache::Show<replaceable>Abhängigkeitstyp" -"</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:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "<option>-f</option>" @@ -1429,8 +1437,7 @@ msgstr "" "Konfigurationselement: <literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1547,14 +1554,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Dateien" @@ -1565,10 +1572,10 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 msgid "See Also" msgstr "Siehe auch" @@ -1579,7 +1586,7 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnose" @@ -1709,12 +1716,12 @@ msgstr "" "<placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Optionen" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1758,7 +1765,7 @@ msgstr "" "Konfigurationselement: <literal>APT::CDROM::Rename</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "<option>-m</option>" @@ -1813,17 +1820,17 @@ msgstr "" "Dies verlängert das Durchsuchen des Mediums deutlich, nimmt aber alle auf." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "<option>--just-print</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "<option>--recon</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "<option>--no-act</option>" @@ -1968,7 +1975,7 @@ msgid "Just show the contents of the configuration space." msgstr "Nur der Inhalt des Konfigurationsbereichs wird angezeigt." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -2048,7 +2055,7 @@ msgstr "" "XXXX</filename> angegeben wurde" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "<option>-t</option>" @@ -2337,7 +2344,7 @@ msgstr "" "Verwaltung der erforderlichen Einstellungen bereitstellt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "clean" @@ -2906,8 +2913,8 @@ msgstr "" "der Distribution erscheint, typischerweise etwas wie <literal>main contrib " "non-free</literal>" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "Architekturen" @@ -3135,16 +3142,28 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 +#, fuzzy +#| msgid "" +#| "Generate the given checksum. These options default to on, when turned off " +#| "the generated index files will not have the checksum fields where " +#| "possible. Configuration Items: <literal>APT::FTPArchive::" +#| "<replaceable>Checksum</replaceable></literal> and <literal>APT::" +#| "FTPArchive::<replaceable>Index</replaceable>::<replaceable>Checksum</" +#| "replaceable></literal> where <literal><replaceable>Index</replaceable></" +#| "literal> can be <literal>Packages</literal>, <literal>Sources</literal> " +#| "or <literal>Release</literal> and <literal><replaceable>Checksum</" +#| "replaceable></literal> can be <literal>MD5</literal>, <literal>SHA1</" +#| "literal> or <literal>SHA256</literal>." msgid "" "Generate the given checksum. These options default to on, when turned off " "the generated index files will not have the checksum fields where possible. " "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" "erzeugt die vorgegebene Prüfsumme. Diese Optionen sind standardmäßig " "aktiviert. Wenn sie deaktiviert sind, werden die erzeugten Indexdateien nach " @@ -3159,12 +3178,12 @@ msgstr "" "literal> sein kann." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3174,7 +3193,7 @@ msgstr "" "DB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3188,12 +3207,12 @@ msgstr "" "Konfigurationselement: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3207,12 +3226,12 @@ msgstr "" "DeLinkAct</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3228,12 +3247,12 @@ msgstr "" "Konfigurationselement: <literal>APT::FTPArchive::Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3244,12 +3263,12 @@ msgstr "" "SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3258,12 +3277,12 @@ msgstr "" "<literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3277,12 +3296,12 @@ msgstr "" "Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3306,12 +3325,12 @@ msgstr "" "haben sollte und all diese zusätzlichen Prüfungen daher nutzlos sind." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3327,19 +3346,19 @@ msgstr "" "werden kann." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 msgid "Examples" msgstr "Beispiele" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> Pakete <replaceable>Verzeichnis</replaceable> | <command>gzip</command> > <filename>Pakete.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3349,7 +3368,7 @@ msgstr "" ">" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3379,16 +3398,46 @@ msgstr "APT-Werkzeug für den Umgang mit Paketen -- Befehlszeilenschnittstelle" #. 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> <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" +#| "\" 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> " "<option>-c= <replaceable>config_file</replaceable> </option> </arg> <arg> " "<option>-t=</option> <arg choice='plain'> <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> </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> </" @@ -3410,35 +3459,35 @@ msgid "" msgstr "" "<command>apt-get</command> <arg><option>-sqdyfmubV</option></arg> <arg> " "<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> <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-Versionsnummer</replaceable> </arg> " -"<arg choice='plain'> /<replaceable>Ziel-Release</replaceable> </arg> </" -"group> </arg> </arg> </arg> <arg choice='plain'>build-dep <arg choice=\"plain" -"\" rep=\"repeat\"><replaceable>Paket</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>" +"</arg> <arg> <option>-c= <replaceable>Konfigurationsdatei</replaceable> </" +"option> </arg> <arg> <option>-t=</option> <arg choice='plain'> " +"<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-" +"Versionsnummer</replaceable> </arg> <arg choice='plain'> /<replaceable>Ziel-" +"Release</replaceable> </arg> </group> </arg> </arg> </arg> <arg " +"choice='plain'>build-dep <arg choice=\"plain\" rep=\"repeat" +"\"><replaceable>Paket</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>" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -3451,12 +3500,12 @@ msgstr "" "Oberflächenschnittstellen, wie &dselect;, &aptitude;, &synaptic; und &wajig;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -3480,12 +3529,12 @@ msgstr "" "Größe der Pakete nicht im voraus bekannt ist." #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -3511,12 +3560,12 @@ msgstr "" "get</command> die neuen Versionen der verfügbaren Pakete kennt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "dselect-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -3533,12 +3582,12 @@ msgstr "" "Installieren von neuen Paketen)." #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "dist-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -3562,12 +3611,12 @@ msgstr "" "überschreiben der allgemeinen Einstellungen für einzelne Pakete." #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "install" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -3596,7 +3645,7 @@ msgstr "" "vom Konfliktauflösungssystem von apt-get getroffen wurden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -3614,7 +3663,7 @@ msgstr "" "ausgewählt werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." @@ -3623,7 +3672,7 @@ msgstr "" "durchführen und müssen mit Vorsicht gehandhabt werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -3644,7 +3693,7 @@ msgstr "" "heruntergeladen und installiert." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." @@ -3653,7 +3702,7 @@ msgstr "" "alternative Installationsrichtlinie für eigene Pakete zu erzeugen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -3673,12 +3722,12 @@ msgstr "" "Zeichen, um genauere reguläre Ausdruck zu erstellen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "remove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -3693,12 +3742,12 @@ msgstr "" "Leerzeichen dazwischen) wird das erkannte Paket installiert anstatt entfernt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "purge" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -3709,17 +3758,17 @@ msgstr "" "Konfigurationsdateien werden mitgelöscht)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "source" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." @@ -3734,7 +3783,7 @@ msgstr "" "wurde, wenn möglich." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -3750,13 +3799,19 @@ msgstr "" "installiert haben oder installieren könnten." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: 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> 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> 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." +"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 "" "Falls die Option <option>--compile</option> angegeben ist, dann wird das " "Paket unter Benutzung von <command>dpkg-buildpackage</command> für die " @@ -3765,7 +3820,7 @@ msgstr "" "angegeben ist, wird das Quellpaket nicht entpackt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -3781,7 +3836,7 @@ msgstr "" "literal>-Option." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -3792,18 +3847,22 @@ msgstr "" "heruntergeladenen Tarballs ähnlich." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "build-dep" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: 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. 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. 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." +"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 Bau-Abhängigkeiten eines Quellpakets zu " @@ -3813,12 +3872,12 @@ msgstr "" "angegeben werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "check" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." @@ -3827,21 +3886,25 @@ msgstr "" "Paketzwischenspeicher und prüft, ob beschädigte Abhängigkeiten vorliegen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "download" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: 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 directory." +"current directoy." msgstr "" "<literal>download</literal> wird das angegebene Binärpaket in das aktuelle " "Verzeichnis herunterladen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -3860,12 +3923,12 @@ msgstr "" "Zeit zu Zeit ausführen, um Plattenplatz freizugeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "autoclean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -3885,28 +3948,33 @@ msgstr "" "sie auf »off« gesetzt ist." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "autoremove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 +#, fuzzy +#| msgid "" +#| "<literal>autoremove</literal> is used to remove packages that were " +#| "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 other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" "<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:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "changelog" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -3927,12 +3995,12 @@ msgstr "" "Befehl <option>install</option> angeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "<option>--no-install-recommends</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." @@ -3941,12 +4009,12 @@ msgstr "" "Konfigurationselement: <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 msgid "<option>--install-suggests</option>" msgstr "<option>--install-suggests</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 msgid "" "Consider suggested packages as a dependency for installing. Configuration " "Item: <literal>APT::Install-Suggests</literal>." @@ -3955,12 +4023,12 @@ msgstr "" "Konfigurationselement: <literal>APT::Install-Suggests</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "<option>--download-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." @@ -3970,12 +4038,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "<option>--fix-broken</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -4004,17 +4072,17 @@ msgstr "" "Konfigurationselement: <literal>APT::Get::Fix-Broken</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "<option>--ignore-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "<option>--fix-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -4035,12 +4103,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "<option>--no-download</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -4052,7 +4120,7 @@ msgstr "" "<literal>APT::Get::Download</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -4072,17 +4140,17 @@ msgstr "" "Konfigurationselement: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "<option>--simulate</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "<option>--dry-run</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -4093,7 +4161,7 @@ msgstr "" "<literal>APT::Get::Simulate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -4111,7 +4179,7 @@ msgstr "" "Warnungen von <literal>apt-get</literal> wissen, was er tut)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -4124,22 +4192,22 @@ msgstr "" "eckiger Klammern bedeutet Unterbrechungen, die keine Folgen haben (selten)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "<option>-y</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "<option>--yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "<option>--assume-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -4155,17 +4223,17 @@ msgstr "" "Get::Assume-Yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "<option>-u</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "<option>--show-upgraded</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." @@ -4175,17 +4243,17 @@ msgstr "" "Konfigurationselement: <literal>APT::Get::Show-Upgraded</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "<option>-V</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "<option>--verbose-versions</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." @@ -4195,44 +4263,22 @@ msgstr "" "Versions</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -msgid "<option>--host-architecture</option>" -msgstr "<option>--host-architecture</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" -"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>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "<option>-b</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "<option>--compile</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "<option>--build</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." @@ -4241,12 +4287,12 @@ msgstr "" "Konfigurationselement: <literal>APT::Get::Compile</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "<option>--ignore-hold</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -4260,12 +4306,12 @@ msgstr "" "<literal>APT::Ignore-Hold</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "<option>--no-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -4279,12 +4325,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "<option>--only-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 msgid "" "Do not install new packages; When used in conjunction with <literal>install</" "literal>, <literal>only-upgrade</literal> will prevent packages on the " @@ -4298,12 +4344,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "<option>--force-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -4318,12 +4364,12 @@ msgstr "" "zerstören! Konfigurationselement: <literal>APT::Get::force-yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "<option>--print-uris</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -4345,12 +4391,12 @@ msgstr "" "Get::Print-URIs</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "<option>--purge</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -4363,12 +4409,12 @@ msgstr "" "option>. Konfigurationselement: <literal>APT::Get::Purge</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "<option>--reinstall</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." @@ -4377,12 +4423,12 @@ msgstr "" "Version sind. Konfigurationselement: <literal>APT::Get::ReInstall</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "<option>--list-cleanup</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -4400,17 +4446,17 @@ msgstr "" "Get::List-Cleanup</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "<option>--target-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "<option>--default-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -4435,12 +4481,12 @@ msgstr "" "auch die &apt-preferences;-Handbuchseite." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "<option>--trivial-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -4454,12 +4500,12 @@ msgstr "" "Trivial-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "<option>--no-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." @@ -4468,12 +4514,12 @@ msgstr "" "Nachfrage ab. Konfigurationselement: <literal>APT::Get::Remove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "<option>--auto-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -4487,12 +4533,12 @@ msgstr "" "AutomaticRemove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "<option>--only-source</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -4511,22 +4557,22 @@ msgstr "" "Get::Only-Source</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "<option>--diff-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "<option>--dsc-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "<option>--tar-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -4538,12 +4584,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "<option>--arch-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." @@ -4552,12 +4598,12 @@ msgstr "" "Konfigurationselement: <literal>APT::Get::Arch-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "<option>--allow-unauthenticated</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -4568,7 +4614,7 @@ msgstr "" "<literal>APT::Get::AllowUnauthenticated</literal>." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" @@ -4577,7 +4623,7 @@ msgstr "" "&file-statelists;" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -4588,7 +4634,7 @@ msgstr "" "preferences;, das APT-Howto." #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." @@ -4597,22 +4643,22 @@ msgstr "" "100 bei Fehlern." #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "ORIGINALAUTOREN" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "&apt-author.jgunthorpe;" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "AKTUELLE AUTOREN" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "&apt-author.team;" @@ -4743,43 +4789,41 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" -"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." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 msgid "net-update" msgstr "net-update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: 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 "" -"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." +"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." +"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:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4788,17 +4832,25 @@ msgstr "" "Befehlen definiert sein müssen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>Dateiname</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: 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 " "<filename>trusted.gpg</filename> file as well as on all parts in the " -"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</" +"<filename>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" @@ -4810,45 +4862,45 @@ msgstr "" "Schlüssel werden zu diesem hinzugefügt." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Lokale Datenbank vertrauenswürdiger Archivschlüssel." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Schlüsselbund vertrauenswürdiger Schlüssel des Debian-Archivs." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" "Schlüsselbund entfernter vertrauenswürdiger Schlüssel des Debian-Archivs." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" @@ -4885,13 +4937,13 @@ msgid "" "choice=\"plain\" rep=\"repeat\"><replaceable>package</replaceable></arg> </" "arg> </group>" msgstr "" -" <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\">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> </group>" +" <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" +"\">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> </group>" #. type: Content of: <refentry><refsect1><para> #: apt-mark.8.xml:57 @@ -4967,9 +5019,9 @@ 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>." +"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 @@ -4982,8 +5034,8 @@ msgid "" "<literal>unhold</literal> is used to cancel a previously set hold on a " "package to allow all actions again." msgstr "" -"<literal>unhold</literal> wird benutzt, um ein vorher gesetztes »hold« " -"auf ein Paket aufzuheben, um alle Aktionen wieder zu erlauben." +"<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 @@ -5480,8 +5532,8 @@ msgid "" msgstr "" "&apt-author.jgunthorpe; &apt-author.team; <author> <firstname>Daniel</" "firstname> <surname>Burrows</surname> <contrib>Erste Dokumentation von " -"Debug::*.</contrib> <email>dburrows@debian.org</email> " -"</author> &apt-email; &apt-product; <date>16. Januar 2010</date>" +"Debug::*.</contrib> <email>dburrows@debian.org</email> </author> &apt-email; " +"&apt-product; <date>16. Januar 2010</date>" #. type: Content of: <refentry><refnamediv><refname> #: apt.conf.5.xml:31 apt.conf.5.xml:38 @@ -5532,23 +5584,31 @@ msgstr "" #. 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 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." msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." msgstr "" "alle Dateien in <literal>Dir::Etc::Parts</literal> in aufsteigender " -"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." +"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 @@ -5805,32 +5865,13 @@ msgstr "" "heruntergeladen und Paketlisten ausgewertet werden. Die interne Vorgabe ist " "die Architektur für die APT kompiliert wurde." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" -"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." - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "Default-Release" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -5843,12 +5884,12 @@ msgstr "" "codename;«, »4.0«, »5.0*«. Siehe auch &apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "Ignore-Hold" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." @@ -5857,12 +5898,12 @@ msgstr "" "Problemlöser, gehaltene Pakete beim Treffen von Entscheidungen zu ignorieren." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "Clean-Installed" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -5877,12 +5918,12 @@ msgstr "" "Möglichkeiten bereitstellt, um sie erneut zu installieren." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "Immediate-Configure" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -5950,12 +5991,12 @@ msgstr "" "Upgrade-Prozesses arbeiten kann." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "Force-LoopBreak" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -5973,12 +6014,12 @@ msgstr "" "bash oder etwas, was davon abhängt, sind." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "Cache-Start, Cache-Grow und Cache-Limit" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -6015,24 +6056,24 @@ msgstr "" "auf 0 gesetzt ist, kann der Zwischenspeicher nicht automatisch wachsen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "Build-Essential" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" "Definiert, welche(s) Paket(e) als essentielle Bauabhängigkeiten betrachtet " "werde." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "Get" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." @@ -6042,12 +6083,12 @@ msgstr "" "erhalten." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "Cache" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." @@ -6057,12 +6098,12 @@ msgstr "" "erhalten." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "CD-ROM" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." @@ -6072,17 +6113,17 @@ msgstr "" "erhalten." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "Die Erwerbgruppe" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "Check-Valid-Until" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -6102,19 +6143,31 @@ msgstr "" "gewollt ist, kann die Option <literal>Max-ValidTime</literal> benutzt werden." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "Max-ValidTime" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 -msgid "" -"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." +#: apt.conf.5.xml:261 +#, fuzzy +#| msgid "" +#| "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 " +"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." msgstr "" "Sekunden, die die Release-Datei als gültig betrachtet werden sollte, nachdem " "sie erzeugt wurde (angezeigt durch die Kopfzeile <literal>Date</literal>). " @@ -6125,36 +6178,12 @@ msgstr "" "die Option »name« vorgenommen werden." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -msgid "Min-ValidTime" -msgstr "Min-ValidTime" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -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 "" -"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." - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "PDiffs" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." @@ -6164,12 +6193,20 @@ msgstr "" "True." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 +#, fuzzy +#| msgid "" +#| "Two sub-options to limit the use of PDiffs are also available: With " +#| "<literal>FileLimit</literal> can be specified how many PDiff files are " +#| "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " +#| "other hand is the maximum percentage of the size of all patches compared " +#| "to the size of the targeted file. If one of these limits is exceeded the " +#| "complete file is downloaded instead of the patches." msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" @@ -6182,12 +6219,12 @@ msgstr "" "der Patche heruntergeladen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "Queue-Mode" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -6203,12 +6240,12 @@ msgstr "" "URI-Art geöffnet wird." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "Retries" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." @@ -6217,12 +6254,12 @@ msgstr "" "APT fehlgeschlagene Dateien in der angegebenen Zahl erneut versuchen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "Source-Symlinks" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." @@ -6232,12 +6269,12 @@ msgstr "" "kopiert zu werden. True ist die Vorgabe." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "http" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -6255,7 +6292,7 @@ msgstr "" "die Umgebungsvariable <envar>http_proxy</envar> benutzt." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -6281,7 +6318,7 @@ msgstr "" "unterstützt keine dieser Optionen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -6292,7 +6329,7 @@ msgstr "" "Dinge, einschließlich Verbindungs- und Datenzeitüberschreitungen, angewandt." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -6312,7 +6349,7 @@ msgstr "" "gegen RFC 2068." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -6328,7 +6365,7 @@ msgstr "" "deaktiviert.)" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -6340,12 +6377,12 @@ msgstr "" "bekannten Bezeichner verwendet." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "https" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -6360,7 +6397,7 @@ msgstr "" "<literal>Pipeline-Depth</literal> wird noch nicht unterstützt." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -6399,12 +6436,12 @@ msgstr "" "SslForceVersion</literal> ist die entsprechende per-Host-Option." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "ftp" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -6439,7 +6476,7 @@ msgstr "" "entsprechenden URI-Bestandteil genommen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -6456,7 +6493,7 @@ msgstr "" "Beispielskonfiguration, um Beispiele zu erhalten)." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -6470,7 +6507,7 @@ msgstr "" "Effizienz nicht empfohlen FTP über HTTP zu benutzen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -6486,18 +6523,18 @@ msgstr "" "Server RFC2428 unterstützen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "cdrom" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "/cdrom/::Mount \"foo\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -6519,12 +6556,12 @@ msgstr "" "können per UMount angegeben werden." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "gpgv" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -6535,18 +6572,18 @@ msgstr "" "Zusätzliche Parameter werden an gpgv weitergeleitet." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "CompressionTypes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "Acquire::CompressionTypes::<replaceable>Dateierweiterung</replaceable> \"<replaceable>Methodenname</replaceable>\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -6566,19 +6603,19 @@ msgstr "" "\"synopsis\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "Acquire::CompressionTypes::Order:: \"gz\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -6609,20 +6646,32 @@ msgstr "" "explizit zur Liste hinzuzufügen, da es automatisch hinzufügt wird." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: 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 " "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 " +"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 " @@ -6641,10 +6690,16 @@ msgstr "" "wird diesen Typ nur vor die Liste setzen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: 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 don't provide " +"uncompressed files a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" "Der besondere Typ <literal>uncompressed</literal> kann benutzt werden, um " @@ -6653,12 +6708,12 @@ msgstr "" "dies meist nur für lokale Spiegel benutzt werden kann." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "GzipIndexes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -6672,12 +6727,12 @@ msgstr "" "False." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "Sprachen" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -6699,13 +6754,13 @@ msgstr "" "hier unmögliche Werte einsetzen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -6747,7 +6802,7 @@ msgstr "" "Reihenfolge »fr, de, en«. <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -6757,12 +6812,12 @@ msgstr "" "id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "Verzeichnisse" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -6782,7 +6837,7 @@ msgstr "" "filename> oder <filename>./</filename> beginnen." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -6805,7 +6860,7 @@ msgstr "" "in <literal>Dir::Cache</literal> enthalten." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -6820,7 +6875,7 @@ msgstr "" "Konfigurationsdatei erfolgt)." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -6832,7 +6887,7 @@ msgstr "" "geladen." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -6850,7 +6905,7 @@ msgstr "" "Programms an." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -6870,7 +6925,7 @@ msgstr "" "<filename>/tmp/staging/var/lib/dpkg/status</filename> nachgesehen." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -6888,12 +6943,12 @@ msgstr "" "verwandt werden." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "APT in DSelect" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -6904,12 +6959,12 @@ msgstr "" "<literal>DSelect</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "Clean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -6927,7 +6982,7 @@ msgstr "" "führt diese Aktion vor dem Herunterladen neuer Pakete durch." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." @@ -6936,12 +6991,12 @@ msgstr "" "übermittelt, wenn es für die Installationsphase durchlaufen wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "Updateoptions" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." @@ -6950,12 +7005,12 @@ msgstr "" "übermittelt, wenn es für die Aktualisierungsphase durchlaufen wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "PromptAfterUpdate" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." @@ -6964,12 +7019,12 @@ msgstr "" "nachfragen, um fortzufahren. Vorgabe ist es, nur bei Fehlern nachzufragen." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "Wie APT Dpkg aufruft" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." @@ -6978,7 +7033,7 @@ msgstr "" "stehen im Abschnitt <literal>DPkg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -6989,17 +7044,17 @@ msgstr "" "jedes Listenelement wird als einzelnes Argument an &dpkg; übermittelt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "Pre-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "Post-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7013,12 +7068,12 @@ msgstr "" "APT abgebrochen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "Pre-Install-Pkgs" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7035,7 +7090,7 @@ msgstr "" "pro Zeile." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -7051,12 +7106,12 @@ msgstr "" "literal> gegeben wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "Run-Directory" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." @@ -7065,12 +7120,12 @@ msgstr "" "die Vorgabe ist <filename>/</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "Build-options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." @@ -7080,12 +7135,12 @@ msgstr "" "Programme werden erstellt." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "Dpkd-Trigger-Benutzung (und zugehöriger Optionen)" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -7112,7 +7167,7 @@ msgstr "" "konfiguriert werden." #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -7126,7 +7181,7 @@ msgstr "" "DPkg::TriggersPending \"true\";" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -7151,12 +7206,12 @@ msgstr "" "wäre <placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "DPkg::NoTriggers" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -7177,12 +7232,12 @@ msgstr "" "außerdem an die »unpack«- und »remove«-Aufrufe anhängen." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "PackageManager::Configure" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -7211,12 +7266,12 @@ msgstr "" "mehr startbar sein könnte." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "DPkg::ConfigurePending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -7235,12 +7290,12 @@ msgstr "" "deaktivieren." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "DPkg::TriggersPending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -7256,12 +7311,12 @@ msgstr "" "benötigt werden." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "PackageManager::UnpackAll" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -7280,12 +7335,12 @@ msgstr "" "und weitere Verbesserungen benötigt, bevor sie wirklich nützlich wird." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "OrderList::Score::Immediate" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -7303,7 +7358,7 @@ msgstr "" "};" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -7327,12 +7382,12 @@ msgstr "" "mit ihren Vorgabewerten. <placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "Periodische- und Archivoptionen" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -7346,12 +7401,12 @@ msgstr "" "Dokumentation dieser Optionen zu erhalten." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "Fehlersuchoptionen" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -7369,7 +7424,7 @@ msgstr "" "könnten es sein:" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -7380,7 +7435,7 @@ msgstr "" "getroffenen Entscheidungen ein." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -7391,7 +7446,7 @@ msgstr "" "<literal>apt-get -s install</literal>) als nicht root-Anwender auszuführen." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -7403,7 +7458,7 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." @@ -7412,17 +7467,17 @@ msgstr "" "Daten in CD-ROM-IDs aus." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "Eine vollständige Liste der Fehlersuchoptionen von APT folgt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" @@ -7430,48 +7485,48 @@ msgstr "" "literal>-Quellen beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" "Gibt Informationen aus, die sich auf das Herunterladen von Paketen per FTP " "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" "Gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTP " "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "<literal>Debug::Acquire::https</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "" "Gibt Informationen aus, die sich auf das Herunterladen von Paketen per HTTPS " "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "<literal>Debug::Acquire::gpgv</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." @@ -7480,12 +7535,12 @@ msgstr "" "mittels <literal>gpg</literal> beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "<literal>Debug::aptcdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." @@ -7494,23 +7549,23 @@ msgstr "" "CD-ROMs gespeichert sind." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "<literal>Debug::BuildDeps</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" "Beschreibt den Prozess der Auflösung von Bauabhängigkeiten in &apt-get;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "<literal>Debug::Hashes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." @@ -7519,12 +7574,12 @@ msgstr "" "Bibliotheken generiert wurde." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "<literal>Debug::IdentCDROM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -7535,12 +7590,12 @@ msgstr "" "ID für eine CD-ROM generiert wird." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "<literal>Debug::NoLocking</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." @@ -7550,24 +7605,24 @@ msgstr "" "gleichen Zeit laufen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "<literal>Debug::pkgAcquire</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" "Protokollieren, wenn Elemente aus der globalen Warteschlange zum " "Herunterladen hinzugefügt oder entfernt werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "<literal>Debug::pkgAcquire::Auth</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." @@ -7576,12 +7631,12 @@ msgstr "" "und kryptografischen Signaturen von heruntergeladenen Dateien beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "<literal>Debug::pkgAcquire::Diffs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." @@ -7590,12 +7645,12 @@ msgstr "" "und Fehler, die die Paketindexlisten-Diffs betreffen, ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "<literal>Debug::pkgAcquire::RRed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." @@ -7605,12 +7660,12 @@ msgstr "" "werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" @@ -7618,12 +7673,12 @@ msgstr "" "durchführen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "<literal>Debug::pkgAutoRemove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." @@ -7633,12 +7688,12 @@ msgstr "" "beziehen." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "<literal>Debug::pkgDepCache::AutoInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -7654,12 +7709,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "<literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -7691,23 +7746,23 @@ msgstr "" "erscheint." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "<literal>Debug::pkgInitConfig</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "" "Die Vorgabekonfiguration beim Start auf der Standardfehlerausgabe ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "<literal>Debug::pkgDPkgPM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." @@ -7717,12 +7772,12 @@ msgstr "" "sind." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "<literal>Debug::pkgDPkgProgressReporting</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." @@ -7731,12 +7786,12 @@ msgstr "" "alle während deren Auswertung gefundenen Fehler ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "<literal>Debug::pkgOrderList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." @@ -7746,12 +7801,12 @@ msgstr "" "soll." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" @@ -7759,22 +7814,22 @@ msgstr "" "von &dpkg; ausgeführt werden." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "<literal>Debug::pkgPolicy</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "Die Priorität jeder Paketliste beim Start ausgeben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "<literal>Debug::pkgProblemResolver</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." @@ -7784,12 +7839,12 @@ msgstr "" "aufgetreten ist)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "<literal>Debug::pkgProblemResolver::ShowScores</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -7801,12 +7856,12 @@ msgstr "" "beschrieben." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "<literal>Debug::sourceList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." @@ -7815,7 +7870,7 @@ msgstr "" "gelesenen Anbieter ausgeben." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." @@ -7824,13 +7879,13 @@ msgstr "" "möglichen Optionen zeigen." #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "&file-aptconf;" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." @@ -7929,11 +7984,21 @@ msgstr "" #. 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 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 " -"following naming convention: The files have either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -8390,11 +8455,18 @@ msgstr "Reguläre Ausdrücke und glob()-Syntax" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml:264 +#, fuzzy +#| msgid "" +#| "APT also supports pinning by glob() expressions and regular expressions " +#| "surrounded by /. For example, the following example assigns the priority " +#| "500 to all packages from experimental where the name starts with gnome " +#| "(as a glob()-like expression) or contains the word kde (as a POSIX " +#| "extended regular expression surrounded by slashes)." msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" "APT unterstützt außerdem Pinning mittels glob()-Ausdrücken und regulären " @@ -8418,9 +8490,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> #: apt_preferences.5.xml:279 +#, fuzzy +#| msgid "" +#| "The rule for those expressions is that they can occur anywhere where a " +#| "string can occur. Thus, the following pin assigns the priority 990 to all " +#| "packages from a release starting with karmic." msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" "Die Regel für diese Ausdrücke ist, dass sie überall dort auftreten können, " @@ -8694,11 +8771,11 @@ msgstr "" "Die <filename>Packages</filename>-Datei wird normalerweise im Verzeichnis " "<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 @@ -8874,8 +8951,8 @@ msgid "" "\"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/<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 " @@ -9334,7 +9411,9 @@ msgstr "" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml:81 -msgid "deb [ options ] uri distribution [component1] [component2] [...]" +#, fuzzy, no-wrap +#| msgid "deb [ options ] uri distribution [component1] [component2] [...]" +msgid "deb uri distribution [component1] [component2] [...]" msgstr "deb [ Optionen ] URI Distribution [Komponente1] [Komponente2] […]" #. type: Content of: <refentry><refsect1><para> @@ -9406,40 +9485,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" -"<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." - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" -"<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." - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -9452,12 +9497,12 @@ msgstr "" "Rechnern, zum Beispiel)." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "Einige Beispiele:" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -9469,17 +9514,17 @@ msgstr "" " " #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "URI-Beschreibung" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "file" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -9490,7 +9535,7 @@ msgstr "" "lokale Spiegel oder Archive." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." @@ -9500,7 +9545,7 @@ msgstr "" "der Quellenliste zu erstellen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -9517,7 +9562,7 @@ msgstr "" "Beachten Sie, dass dies eine unsichere Authentifizierungsmethode ist." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -9537,12 +9582,12 @@ msgstr "" "Konfigurationsdatei HTTP benutzen, werden ignoriert." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "copy" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -9554,17 +9599,17 @@ msgstr "" "Platte benutzen, um Dateien mit APT umherzukopieren." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "rsh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "ssh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -9580,12 +9625,12 @@ msgstr "" "aus der Ferne durchzuführen." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "weitere erkennbare URI-Typen" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -9607,7 +9652,7 @@ msgstr "" "citerefentry>." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -9616,7 +9661,7 @@ msgstr "" "»ssh«, »rsh«. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." @@ -9625,58 +9670,37 @@ msgstr "" "jason/debian für stable/main, stable/contrib und stable/non-free." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "deb file:/home/jason/debian stable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" "Wie oben, außer das dies die »unstable«- (Entwicklungs-) Distribution " "benutzt." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "deb file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "Quellzeile für obiges" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "deb-src file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" -"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." - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, no-wrap -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\n" -"deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." @@ -9685,13 +9709,13 @@ msgstr "" "den hamm/main-Bereich zu benutzen." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "deb http://archive.debian.org/debian-archive hamm main" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." @@ -9701,13 +9725,13 @@ msgstr "" "benutzen." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "deb ftp://ftp.debian.org/debian &stable-codename; contrib" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -9721,19 +9745,19 @@ msgstr "" "für beide Quellzeilen benutzt." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "deb ftp://ftp.debian.org/debian unstable contrib" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, no-wrap msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 msgid "" "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe " "directory, and uses only files found under <filename>unstable/binary-i386</" @@ -9753,7 +9777,7 @@ msgstr "" "type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "&apt-cache; &apt-conf;" @@ -11309,3 +11333,119 @@ msgstr " # apt-get -o dir::cache::archives=\"/Platte/\" dist-upgrade" #: offline.sgml:234 msgid "Which will use the already fetched archives on the disc." msgstr "Es wird die bereits auf die Platte heruntergeladenen Archive benutzen." + +#~ msgid "<option>--host-architecture</option>" +#~ msgstr "<option>--host-architecture</option>" + +#~ msgid "" +#~ "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 "" +#~ "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 "" +#~ "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 "" +#~ "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 "" +#~ "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 "" +#~ "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 "Min-ValidTime" +#~ msgstr "Min-ValidTime" + +#~ 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 "" +#~ "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 "" +#~ "<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 "" +#~ "<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 "" +#~ "<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 "" +#~ "<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 "" +#~ "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 "" +#~ "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 "" +#~ "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\n" +#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" diff --git a/doc/po/es.po b/doc/po/es.po index 0849736fa..645be1ab2 100644 --- a/doc/po/es.po +++ b/doc/po/es.po @@ -36,7 +36,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.25\n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-08-25 03:25+0200\n" "Last-Translator: Omar Campagne <ocampagne@gmail.com>\n" "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n" @@ -809,7 +809,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -830,7 +830,7 @@ msgstr "" "genera información interesante a partir de los metadatos del paquete." #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -1327,8 +1327,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "Opciones" @@ -1354,7 +1354,7 @@ msgstr "" "configuración: <literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1380,12 +1380,12 @@ msgstr "" "Opción de configuración: <literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1475,7 +1475,7 @@ msgstr "<option>--no-enhances</option>" #| "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 tweaked with these flags which will omit " +"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>." @@ -1488,7 +1488,7 @@ msgstr "" "<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:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "<option>-f</option>" @@ -1507,8 +1507,7 @@ msgstr "" "Opción de configuración: <literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1625,14 +1624,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Ficheros" @@ -1643,10 +1642,10 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 msgid "See Also" msgstr "Véase también" @@ -1657,7 +1656,7 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnósticos" @@ -1787,12 +1786,12 @@ msgstr "" "option>. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Opciones" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1836,7 +1835,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "<option>-m</option>" @@ -1891,17 +1890,17 @@ msgstr "" "pero encontrará todo el contenido." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "<option>--just-print</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "<option>--recon</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "<option>--no-act</option>" @@ -2049,7 +2048,7 @@ msgid "Just show the contents of the configuration space." msgstr "Sólo muestra el contenido del espacio de configuración." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -2128,7 +2127,7 @@ msgstr "" "<filename>paquete.config.XXXX</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "<option>-t</option>" @@ -2405,7 +2404,7 @@ msgstr "" "configuración necesaria." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "clean" @@ -2979,8 +2978,8 @@ msgstr "" "distribución, generalmente es similar a <literal>main contrib non-free</" "literal>." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "Arquitecturas" @@ -3206,25 +3205,43 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." msgid "" "Generate the given checksum. These options default to on, when turned off " "the generated index files will not have the checksum fields where possible. " "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" +"Los valores para los campos de metadatos adicionales en el fichero «Release» " +"se toman de las variables correspondientes en <literal>APT::FTPArchive::" +"Release</literal>, por ejemplo <literal>APT::FTPArchive::Release::Origin</" +"literal>. Los campos permitidos son: <literal>Origin</literal>, " +"<literal>Label</literal>, <literal>Suite</literal>, <literal>Version</" +"literal>, <literal>Codename</literal>, <literal>Date</literal>, " +"<literal>Valid-Until</literal>, <literal>Architectures</literal>, " +"<literal>Components</literal> y <literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3233,7 +3250,7 @@ msgstr "" "«generate». Opción de configuración: <literal>APT::FTPArchive::DB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3247,12 +3264,12 @@ msgstr "" "configuración. Opción de configuración: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3265,12 +3282,12 @@ msgstr "" "Opción de configuración: <literal>APT::FTPArchive::DeLinkAct</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3287,12 +3304,12 @@ msgstr "" "Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3303,12 +3320,12 @@ msgstr "" "FTPArchive::SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3317,12 +3334,12 @@ msgstr "" "Opción de configuración: <literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3336,12 +3353,12 @@ msgstr "" "FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3365,12 +3382,12 @@ msgstr "" "comprobaciones adicionales son innecesarias." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3386,19 +3403,19 @@ msgstr "" "con la orden «generate»." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 msgid "Examples" msgstr "Ejemplos" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> packages <replaceable>directorio</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3407,7 +3424,7 @@ msgstr "" "paquetes binarios («.deb»): <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3472,11 +3489,10 @@ msgid "" "<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> <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> </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> </" @@ -3525,7 +3541,7 @@ msgstr "" "</group> </arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -3539,12 +3555,12 @@ msgstr "" "&synaptic; y &wajig;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -3568,12 +3584,12 @@ msgstr "" "tamaño de los archivos de paquete." #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -3598,12 +3614,12 @@ msgstr "" "hay nuevas versiones disponibles." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "dselect-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -3620,12 +3636,12 @@ msgstr "" "paquetes antiguos e instalar las nuevas versiones)." #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "dist-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -3648,12 +3664,12 @@ msgstr "" "comportamiento para paquetes individuales." #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "install" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -3681,7 +3697,7 @@ msgstr "" "conflictos de apt-get." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -3699,7 +3715,7 @@ msgstr "" "(stable, testing, unstable)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." @@ -3708,7 +3724,7 @@ msgstr "" "anterior de los paquetes y se debe usar con cuidado." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -3728,7 +3744,7 @@ msgstr "" "instalarán." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." @@ -3737,7 +3753,7 @@ msgstr "" "paquetes individuales." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -3757,12 +3773,12 @@ msgstr "" "«$», o bien crear una expresión regular más específica." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "remove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -3778,12 +3794,12 @@ msgstr "" "cuestión será instalado en vez de eliminado." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "purge" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -3794,17 +3810,17 @@ msgstr "" "también cualquier fichero de configuración)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "source" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." @@ -3818,7 +3834,7 @@ msgstr "" "release</literal>, si es posible." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -3834,7 +3850,7 @@ msgstr "" "instalada o de la que podría instalar." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 #, fuzzy #| msgid "" #| "If the <option>--compile</option> option is specified then the package " @@ -3843,10 +3859,9 @@ msgstr "" #| "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> 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." +"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 "" "Si se especifica la opción <option>--compile</option> el paquete se " "compilará en un binario «.deb» usando <command>dpkg-buildpackage</command>, " @@ -3854,7 +3869,7 @@ msgstr "" "desempaquetará." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -3869,7 +3884,7 @@ msgstr "" "activando implícitamente la opción <literal>APT::Get::Only-Source</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -3880,34 +3895,31 @@ msgstr "" "tar comprimidos con las fuentes." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "build-dep" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: 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. 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." +"attempt to satisfy the build dependencies for a source package." msgstr "" "<literal>build-dep</literal> hace que apt-get instale/desinstale paquetes en " "un intento de satisfacer las dependencias de compilación de un paquete " "fuente." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "check" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." @@ -3916,19 +3928,19 @@ msgstr "" "caché de paquetes y revisa la existencia de dependencias rotas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: apt-get.8.xml:282 msgid "" "<literal>download</literal> will download the given binary package into the " -"current directory." +"current directoy." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -3947,12 +3959,12 @@ msgstr "" "literal> de vez en cuando para liberar algo de espacio en disco." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "autoclean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -3971,12 +3983,12 @@ msgstr "" "desactivada impedirá que se borren los paquetes instalados." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "autoremove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 #, fuzzy #| msgid "" #| "<literal>autoremove</literal> is used to remove packages that were " @@ -3984,20 +3996,20 @@ msgstr "autoremove" #| "are no more needed." msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" "<literal>autoremove</literal> se usa para desinstalar paquetes que se " "instalaron automáticamente para satisfacer las dependencias de algún " "paquete, pero que ya no son necesarios." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -4010,12 +4022,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "<option>--no-install-recommends</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." @@ -4024,14 +4036,14 @@ msgstr "" "de configuración: <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 #, fuzzy #| msgid "<option>--no-suggests</option>" msgid "<option>--install-suggests</option>" msgstr "<option>--no-suggests</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 #, fuzzy #| msgid "" #| "Do not consider recommended packages as a dependency for installing. " @@ -4044,12 +4056,12 @@ msgstr "" "de configuración: <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "<option>--download-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." @@ -4058,12 +4070,12 @@ msgstr "" "instala. Opción de configuración: <literal>APT::Get::Download-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "<option>--fix-broken</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -4091,17 +4103,17 @@ msgstr "" "<literal>APT::Get::Fix-Broken</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "<option>--ignore-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "<option>--fix-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -4121,12 +4133,12 @@ msgstr "" "<literal>APT::Get::Fix-Missing</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "<option>--no-download</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -4138,7 +4150,7 @@ msgstr "" "<literal>APT::Get::Download</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -4159,17 +4171,17 @@ msgstr "" "<literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "<option>--simulate</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "<option>--dry-run</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -4180,7 +4192,7 @@ msgstr "" "Simulate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -4198,7 +4210,7 @@ msgstr "" "avisos de <literal>apt-get</literal>)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -4212,22 +4224,22 @@ msgstr "" "problema (poco probable)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "<option>-y</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "<option>--yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "<option>--assume-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -4243,17 +4255,17 @@ msgstr "" "<literal>APT::Get::Assume-Yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "<option>-u</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "<option>--show-upgraded</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." @@ -4262,17 +4274,17 @@ msgstr "" "<literal>APT::Get::Show-Upgraded</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "<option>-V</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "<option>--verbose-versions</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." @@ -4281,40 +4293,22 @@ msgstr "" "Opción de configuración: <literal>APT::Get::Show-Versions</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -#, fuzzy -#| msgid "<option>--recurse</option>" -msgid "<option>--host-architecture</option>" -msgstr "<option>--recurse</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "<option>-b</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "<option>--compile</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "<option>--build</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." @@ -4323,12 +4317,12 @@ msgstr "" "<literal>APT::Get::Compile</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "<option>--ignore-hold</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -4342,12 +4336,12 @@ msgstr "" "Ignore-Hold</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "<option>--no-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -4360,12 +4354,12 @@ msgstr "" "<literal>APT::Get::Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "<option>--only-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 msgid "" "Do not install new packages; When used in conjunction with <literal>install</" "literal>, <literal>only-upgrade</literal> will prevent packages on the " @@ -4378,12 +4372,12 @@ msgstr "" "de configuración: <literal>APT::Get::Only-Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "<option>--force-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -4399,12 +4393,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "<option>--print-uris</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -4426,12 +4420,12 @@ msgstr "" "<literal>APT::Get::Print-URIs</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "<option>--purge</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -4445,12 +4439,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "<option>--reinstall</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." @@ -4460,12 +4454,12 @@ msgstr "" "ReInstall</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "<option>--list-cleanup</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -4483,17 +4477,17 @@ msgstr "" "<literal>APT::Get::List-Cleanup</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "<option>--target-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "<option>--default-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -4517,12 +4511,12 @@ msgstr "" "también la página del manual de &apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "<option>--trivial-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -4536,12 +4530,12 @@ msgstr "" "<literal>APT::Get::Trivial-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "<option>--no-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." @@ -4550,12 +4544,12 @@ msgstr "" "preguntar. Opción de configuración: <literal>APT::Get::Remove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "<option>--auto-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -4568,12 +4562,12 @@ msgstr "" "configuración: <literal>APT::Get::AutomaticRemove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "<option>--only-source</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -4593,22 +4587,22 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "<option>--diff-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "<option>--dsc-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "<option>--tar-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -4619,12 +4613,12 @@ msgstr "" "Dsc-Only</literal> y <literal>APT::Get::Tar-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "<option>--arch-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." @@ -4633,12 +4627,12 @@ msgstr "" "arquitectura. Opción de configuración: <literal>APT::Get::Arch-Only</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "<option>--allow-unauthenticated</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -4649,7 +4643,7 @@ msgstr "" "configuración: <literal>APT::Get::AllowUnauthenticated</literal>." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" @@ -4658,7 +4652,7 @@ msgstr "" "&file-statelists;" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -4669,7 +4663,7 @@ msgstr "" "preferences;, el Cómo de APT." #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." @@ -4678,22 +4672,22 @@ msgstr "" "100 en caso de error." #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "AUTORES ORIGINALES" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "&apt-author.jgunthorpe;" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "AUTORES ACTUALES" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "&apt-author.team;" @@ -4822,33 +4816,30 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" +"Actualiza el registro de claves local con el registro de claves del archivo " +"Debian, y elimina del registro las claves del archivo que ya no son válidas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 #, fuzzy #| msgid "update" msgid "net-update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4857,17 +4848,25 @@ msgstr "" "descritas en el sección anterior." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>nombre-de-fichero</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: 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 " "<filename>trusted.gpg</filename> file as well as on all parts in the " -"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</" +"<filename>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" @@ -4879,44 +4878,44 @@ msgstr "" "esto es, por ejemplo, que las claves nuevas se añaden a este fichero." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Base de datos local de las claves de confianza de archivos Debian" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Registro de las claves de confianza del archivo de Debian." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Registro de las claves de confianza eliminadas del archivo de Debian." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" @@ -5642,12 +5641,11 @@ msgstr "" #| "period (.) characters - otherwise they will be silently ignored." msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." msgstr "" "Todos los ficheros en <literal>Dir::Etc::Parts</literal> en orden " "alfanumérico ascendente que no tienen extensión o la extensión " @@ -5904,24 +5902,13 @@ msgstr "" "ficheros y analizar las listas de paquetes. El valor predeterminado es la " "arquitectura para la que apt se compiló." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "Default-Release" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -5935,12 +5922,12 @@ msgstr "" "«5.0*». Vea también &apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "Ignore-Hold" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." @@ -5949,12 +5936,12 @@ msgstr "" "problemas ignore los paquetes retenidos en la toma de decisiones." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "Clean-Installed" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -5968,12 +5955,12 @@ msgstr "" "mecanismo directo para reinstalarlos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "Immediate-Configure" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -6037,12 +6024,12 @@ msgstr "" "actualización." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "Force-LoopBreak" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -6059,12 +6046,12 @@ msgstr "" "libc, ni dpkg, ni bash, ni cualquier otro del que dependan estos paquetes." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "Cache-Start, Cache-Grow y Cache-Limit" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -6101,23 +6088,23 @@ msgstr "" "crecimiento automático del cache." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "Build-Essential" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" "Define qué paquete(s) se consideran dependencias de creación esenciales." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "Get" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." @@ -6126,12 +6113,12 @@ msgstr "" "documentación para más información sobre esta opción." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "Cache" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." @@ -6140,12 +6127,12 @@ msgstr "" "la documentación para más información sobre esta opción." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "CDROM" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." @@ -6154,17 +6141,17 @@ msgstr "" "la documentación para más información sobre esta opción." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "El grupo Acquire" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "Check-Valid-Until" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -6184,12 +6171,12 @@ msgstr "" "<literal>Max-ValidTime</literal>." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "Max-ValidTime" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 #, fuzzy #| msgid "" #| "Seconds the Release file should be considered valid after it was created. " @@ -6202,12 +6189,15 @@ msgstr "Max-ValidTime" #| "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 " -"(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." +"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." 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 " @@ -6222,52 +6212,12 @@ msgstr "" "opción." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -#, fuzzy -#| msgid "Max-ValidTime" -msgid "Min-ValidTime" -msgstr "Max-ValidTime" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -#, 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." - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "PDiffs" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." @@ -6277,12 +6227,20 @@ msgstr "" "predeterminada" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 +#, fuzzy +#| msgid "" +#| "Two sub-options to limit the use of PDiffs are also available: With " +#| "<literal>FileLimit</literal> can be specified how many PDiff files are " +#| "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " +#| "other hand is the maximum percentage of the size of all patches compared " +#| "to the size of the targeted file. If one of these limits is exceeded the " +#| "complete file is downloaded instead of the patches." msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" @@ -6294,12 +6252,12 @@ msgstr "" "estos límites, se descargará el fichero completo en lugar de los parches." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "Queue-Mode" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -6314,12 +6272,12 @@ msgstr "" "se abrirá una conexión por cada tipo de URI." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "Retries" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." @@ -6328,12 +6286,12 @@ msgstr "" "intentar obtener los ficheros fallidos el número de veces proporcionado." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "Source-Symlinks" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." @@ -6343,12 +6301,12 @@ msgstr "" "forma predeterminada." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "http" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -6366,7 +6324,7 @@ msgstr "" "definir ninguna de las opciones anteriores." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -6391,7 +6349,7 @@ msgstr "" "grandes. Aviso: Squid 2.0.2 no permite usar ninguna de estas opciones." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -6402,7 +6360,7 @@ msgstr "" "realizar la conexión y para recibir datos." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -6421,7 +6379,7 @@ msgstr "" "necesitan esto violan la RFC 2068." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -6436,7 +6394,7 @@ msgstr "" "implícitamente la descarga simultánea desde varios servidores)." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -6447,12 +6405,12 @@ msgstr "" "permiten el acceso para clientes que usan un identificador conocido." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "https" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -6467,7 +6425,7 @@ msgstr "" "opción <literal>Pipeline-Depth</literal> no se puede usar por ahora." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -6504,12 +6462,12 @@ msgstr "" "corresponde a la opción por máquina." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "ftp" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -6543,7 +6501,7 @@ msgstr "" "URI." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -6559,7 +6517,7 @@ msgstr "" "fichero de configuración de muestra para ver algunos ejemplos)." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -6573,7 +6531,7 @@ msgstr "" "de http debido a su poca eficiencia." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -6589,18 +6547,18 @@ msgstr "" "compatibles con la RFC 2428." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "cdrom" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "/cdrom/::Mount \"algo\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -6622,12 +6580,12 @@ msgstr "" "para desmontar usando UMount." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "gpgv" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -6638,18 +6596,18 @@ msgstr "" "introducidos a gpgv." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "CompressionTypes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "Acquire::CompressionTypes::<replaceable>extensión-del-fichero</replaceable> \"<replaceable>nombre-del-método</replaceable>\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -6669,19 +6627,19 @@ msgstr "" "\"0\"/>" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "Acquire::CompressionTypes::Order:: \"gz\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -6712,13 +6670,13 @@ msgstr "" "lista ya que se añadirá de forma automática." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 #, fuzzy #| msgid "" #| "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</" @@ -6735,9 +6693,9 @@ 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 " +"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 " @@ -6756,20 +6714,20 @@ msgstr "" "lista definida, sólo añadirá este tipo al principio de la lista." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:449 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 a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "GzipIndexes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -6783,12 +6741,12 @@ msgstr "" "paquetes locales. El valor predeterminado es «false»." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "Languages" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -6809,13 +6767,13 @@ msgstr "" "informarse de cuales están disponibles antes de definir valores imposibles." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; }" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -6857,7 +6815,7 @@ msgstr "" "\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -6866,12 +6824,12 @@ msgstr "" "paquetes y los gestores de URI. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "Directorios" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -6891,7 +6849,7 @@ msgstr "" "empiecen con <filename>/</filename> ó <filename>./</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -6913,7 +6871,7 @@ msgstr "" "predeterminado está en <literal>Dir::Cache</literal>" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -6929,7 +6887,7 @@ msgstr "" "<envar>APT_CONFIG</envar>)." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -6940,7 +6898,7 @@ msgstr "" "Al finalizar este proceso carga el fichero de configuración principal." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -6957,7 +6915,7 @@ msgstr "" "literal> especifican la ubicación de sus respectivos programas." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -6978,7 +6936,7 @@ msgstr "" "staging/var/lib/dpkg/status</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -6996,12 +6954,12 @@ msgstr "" "de expresiones regulares." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "APT con DSelect" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -7012,12 +6970,12 @@ msgstr "" "encuentran en la sección <literal>DSelect</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "Clean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -7035,7 +6993,7 @@ msgstr "" "descargar los paquetes nuevos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." @@ -7044,12 +7002,12 @@ msgstr "" "la línea de ordenes al ejecutar la fase de instalación." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "Updateoptions" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." @@ -7058,12 +7016,12 @@ msgstr "" "la línea de ordenes al ejecutar la fase de actualización." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "PromptAfterUpdate" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." @@ -7073,12 +7031,12 @@ msgstr "" "preguntará en caso de error." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "Cómo invoca APT a dpkg" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." @@ -7087,7 +7045,7 @@ msgstr "" "se encuentran en la sección <literal>DPkg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -7098,17 +7056,17 @@ msgstr "" "introduce a &dpkg; como un sólo argumento." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "Pre-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "Post-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7121,12 +7079,12 @@ msgstr "" "sh</filename>, y APT finalizará en caso de fallo." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "Pre-Install-Pkgs" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7142,7 +7100,7 @@ msgstr "" "instalar, uno por línea." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -7158,12 +7116,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "Run-Directory" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." @@ -7172,12 +7130,12 @@ msgstr "" "predeterminado es <filename>/</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "Build-options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." @@ -7187,12 +7145,12 @@ msgstr "" "paquetes y a producir todos los binarios." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "Uso del disparador de dpkg (y de las opciones relacionadas)" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 #, fuzzy #| msgid "" #| "APT can call dpkg in a way so it can make aggressive use of triggers over " @@ -7231,7 +7189,7 @@ msgstr "" "mientras se están configurando todos los paquetes." #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -7245,7 +7203,7 @@ msgstr "" "DPkg::TriggersPending \"true\";" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -7269,12 +7227,12 @@ msgstr "" "\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "DPkg::NoTriggers" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -7295,12 +7253,12 @@ msgstr "" "añadirá esta opción a las llamadas de desempaquetado y borrado." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "PackageManager::Configure" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -7329,12 +7287,12 @@ msgstr "" "sistema. " #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "DPkg::ConfigurePending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -7352,12 +7310,12 @@ msgstr "" "desactivar esta opción en todas las ejecuciones menos la última." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "DPkg::TriggersPending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -7373,12 +7331,12 @@ msgstr "" "necesarios para configurar este paquete." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "PackageManager::UnpackAll" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -7398,12 +7356,12 @@ msgstr "" "ser realmente útil." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "OrderList::Score::Immediate" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -7421,7 +7379,7 @@ msgstr "" "};" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -7446,12 +7404,12 @@ msgstr "" "\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "Las opciones «Periodic» y «Archives»" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -7465,12 +7423,12 @@ msgstr "" "documentación de estas opciones." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "Opciones de depuración" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -7487,7 +7445,7 @@ msgstr "" "para un usuario normal, aunque unas cuantas sí son:" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -7498,7 +7456,7 @@ msgstr "" "purge</literal>." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -7509,7 +7467,7 @@ msgstr "" "<literal>apt-get -s install</literal>) como un usuario normal." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -7521,7 +7479,7 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." @@ -7530,19 +7488,19 @@ msgstr "" "statfs en los identificadores de los CDROM." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "" "A continuación, se muestra la lista completa de las opciones de depuración " "de apt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" @@ -7550,46 +7508,46 @@ msgstr "" "<literal>cdrom://</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" "Muestra la información relacionada con la descarga de paquetes mediante FTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" "Muestra la información relacionada con la descarga de paquetes mediante HTTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "<literal>Debug::Acquire::https</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "" "Muestra la información relacionada con la descarga de paquetes mediante " "HTTPS." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "<literal>Debug::Acquire::gpgv</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." @@ -7598,12 +7556,12 @@ msgstr "" "criptográficas mediante <literal>gpg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "<literal>Debug::aptcdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." @@ -7612,24 +7570,24 @@ msgstr "" "paquetes almacenadas en CD-ROM." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "<literal>Debug::BuildDeps</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" "Describe el proceso de resolución de dependencias de compilación en &apt-" "get;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "<literal>Debug::Hashes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." @@ -7638,12 +7596,12 @@ msgstr "" "<literal>apt</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "<literal>Debug::IdentCDROM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -7654,12 +7612,12 @@ msgstr "" "identificador de un CD-ROM." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "<literal>Debug::NoLocking</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." @@ -7669,24 +7627,24 @@ msgstr "" "a la vez." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "<literal>Debug::pkgAcquire</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" "Registra los elementos que se añaden o se borran de la cola de descarga " "global." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "<literal>Debug::pkgAcquire::Auth</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." @@ -7696,12 +7654,12 @@ msgstr "" "ficheros descargados." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "<literal>Debug::pkgAcquire::Diffs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." @@ -7710,12 +7668,12 @@ msgstr "" "lista de índices de paquetes, y los errores relacionados con éstos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "<literal>Debug::pkgAcquire::RRed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." @@ -7725,12 +7683,12 @@ msgstr "" "índices completos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" @@ -7738,12 +7696,12 @@ msgstr "" "descargas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "<literal>Debug::pkgAutoRemove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." @@ -7752,12 +7710,12 @@ msgstr "" "de los paquetes y con la eliminación de los paquetes sin usar." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "<literal>Debug::pkgDepCache::AutoInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -7772,12 +7730,12 @@ msgstr "" "<literal>apt</literal>. Véase <literal>Debug::pkgProblemResolver</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "<literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -7807,24 +7765,24 @@ msgstr "" "la sección en la que aparece el paquete." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "<literal>Debug::pkgInitConfig</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "" "Vuelca la configuración predeterminada a la salida estándar durante al " "iniciarse." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "<literal>Debug::pkgDPkgPM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." @@ -7833,12 +7791,12 @@ msgstr "" "invocó, con los argumentos separados por un espacio." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "<literal>Debug::pkgDPkgProgressReporting</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." @@ -7847,12 +7805,12 @@ msgstr "" "estado y cualquier error encontrado durante el análisis." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "<literal>Debug::pkgOrderList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." @@ -7861,12 +7819,12 @@ msgstr "" "literal> debería entregar los paquetes a &dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" @@ -7874,22 +7832,22 @@ msgstr "" "&dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "<literal>Debug::pkgPolicy</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "Muestra la prioridad de cada lista de paquetes al iniciarse." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "<literal>Debug::pkgProblemResolver</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." @@ -7898,12 +7856,12 @@ msgstr "" "lo que ocurre cuando se encuentra un problema de dependencias complejo)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "<literal>Debug::pkgProblemResolver::ShowScores</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -7914,12 +7872,12 @@ msgstr "" "misma que la descrita en <literal>Debug::pkgDepCache::Marker</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "<literal>Debug::sourceList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." @@ -7928,7 +7886,7 @@ msgstr "" "vendors.list</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." @@ -7937,13 +7895,13 @@ msgstr "" "valores de ejemplo para todas las opciones posibles." #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "&file-aptconf;" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." @@ -8052,8 +8010,8 @@ msgstr "" 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 either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -8521,7 +8479,7 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" @@ -8545,7 +8503,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -9479,7 +9437,7 @@ msgstr "" #: 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 distribución [componente1] [componente2] [...]" #. type: Content of: <refentry><refsect1><para> @@ -9550,27 +9508,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -9582,12 +9519,12 @@ msgstr "" "seguidos por servidores de Internet distantes, por ejemplo)." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "Algunos ejemplos:" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -9599,17 +9536,17 @@ msgstr "" " " #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "Especificación de la URI" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "file" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -9620,7 +9557,7 @@ msgstr "" "particiones montadas mediante NFS y réplicas o archivos de paquetes locales." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." @@ -9630,7 +9567,7 @@ msgstr "" "list»." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -9647,7 +9584,7 @@ msgstr "" "Tenga en cuenta que este método de autenticación no es seguro." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -9666,12 +9603,12 @@ msgstr "" "ignorarán proxies ftp definidos en el fichero de configuración que usen http." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "copy" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -9682,17 +9619,17 @@ msgstr "" "Esto es útil para gente que use discos zip con APT." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "rsh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "ssh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -9707,12 +9644,12 @@ msgstr "" "command> y <command>dd</command> para realizar la transferencia de ficheros." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "Otros tipos de URI reconocidos." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -9733,7 +9670,7 @@ msgstr "" "filename></refentrytitle> <manvolnum>1</manvolnum></citerefentry>." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -9742,7 +9679,7 @@ msgstr "" "<placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." @@ -9751,59 +9688,36 @@ msgstr "" "«stable/main», «stable/contrib», y «stable/non-free»." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "deb file:/home/jason/debian stable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" "Como arriba, excepto que usa la distribución «unstable» (en desarrollo)." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "deb file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "Línea para obtener el código fuente desde la ubicación anterior." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "deb-src file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, fuzzy, no-wrap -#| 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" -" " - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." @@ -9812,13 +9726,13 @@ msgstr "" "sólo la sección «hamm/main»." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "deb http://archive.debian.org/debian-archive hamm main" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." @@ -9827,13 +9741,13 @@ msgstr "" "directorio «debian», y usa sólo la sección «&stable-codename;/contrib»." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "deb ftp://ftp.debian.org/debian &stable-codename; contrib" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -9846,20 +9760,20 @@ msgstr "" "filename>, se usará sólo una sesión FTP para ambas." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "deb ftp://ftp.debian.org/debian unstable contrib" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, fuzzy, no-wrap #| msgid "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 #, fuzzy #| msgid "" #| "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-" @@ -9887,7 +9801,7 @@ msgstr "" "estructura.) <placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "&apt-cache; &apt-conf;" @@ -11412,13 +11326,60 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" 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 "" -#~ "Update the local keyring with the keyring of Debian archive keys and " -#~ "removes from the keyring the archive keys which are no longer valid." +#~ "deb http://ftp.debian.org/debian &stable-codename; main\n" +#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" #~ msgstr "" -#~ "Actualiza el registro de claves local con el registro de claves del " -#~ "archivo Debian, y elimina del registro las claves del archivo que ya no " -#~ "son válidas." +#~ "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>" diff --git a/doc/po/fr.po b/doc/po/fr.po index 4996a8d18..6292cdcd5 100644 --- a/doc/po/fr.po +++ b/doc/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2011-02-17 07:50+0100\n" "Last-Translator: Christian Perrier <bubulle@debian.org>\n" "Language-Team: French <debian-l10n-french@lists.debian.org>\n" @@ -730,7 +730,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -751,7 +751,7 @@ msgstr "" "desquelles il extrait les informations intéressantes." #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -1250,8 +1250,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "options" @@ -1277,7 +1277,7 @@ msgstr "" "<literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1304,12 +1304,12 @@ msgstr "" "<literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1400,7 +1400,7 @@ msgstr "<option>--no-enhances</option>" #| "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 tweaked with these flags which will omit " +"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>." @@ -1412,7 +1412,7 @@ msgstr "" "replaceable></literal>, p. ex. <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:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "<option>-f</option>" @@ -1432,8 +1432,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1553,14 +1552,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Fichiers" @@ -1571,10 +1570,10 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 msgid "See Also" msgstr "Voir aussi" @@ -1585,7 +1584,7 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;." #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnostics" @@ -1715,12 +1714,12 @@ msgstr "" "\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1764,7 +1763,7 @@ msgstr "" "<literal>APT::CDROM::Rename</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "<option>-m</option>" @@ -1821,17 +1820,17 @@ msgstr "" "le CD mais tous les paquets seront repérés." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "<option>--just-print</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "<option>--recon</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "<option>--no-act</option>" @@ -1977,7 +1976,7 @@ msgid "Just show the contents of the configuration space." msgstr "Affiche seulement le contenu de l'espace de configuration." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -2056,7 +2055,7 @@ msgstr "" "<filename>package.config.XXXX</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "<option>-t</option>" @@ -2342,7 +2341,7 @@ msgstr "" "préciser index et répertoires aussi bien que les paramètres requis." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "clean" @@ -2906,8 +2905,8 @@ msgstr "" "distribution ; classiquement, on trouve <literal>main contrib non-free</" "literal>." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "Architectures" @@ -3134,25 +3133,43 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." msgid "" "Generate the given checksum. These options default to on, when turned off " "the generated index files will not have the checksum fields where possible. " "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" +"La valeur des autres champs de métadonnées du fichier Release sont tirées de " +"la valeur correspondante dans <literal>APT::FTPArchive::Release</literal>, " +"p. ex. <literal>APT::FTPArchive::Release::Origin</literal>. Les champs " +"reconnus sont : <literal>Origin</literal>, <literal>Label</literal>, " +"<literal>Suite</literal>, <literal>Version</literal>, <literal>Codename</" +"literal>, <literal>Date</literal>, <literal>Valid-Until</literal>, " +"<literal>Architectures</literal>, <literal>Components</literal>, " +"<literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3162,7 +3179,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3177,12 +3194,12 @@ msgstr "" "configuration : <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3196,12 +3213,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3217,12 +3234,12 @@ msgstr "" "de configuration : <literal>APT::FTPArchive::Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3233,12 +3250,12 @@ msgstr "" "FTPArchive::SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3247,12 +3264,12 @@ msgstr "" "configuration : <literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3266,12 +3283,12 @@ msgstr "" "<literal>APT::FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3294,12 +3311,12 @@ msgstr "" "survenir et l'ensemble de ces contrôles devient inutile." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3315,19 +3332,19 @@ msgstr "" "generate." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 msgid "Examples" msgstr "Exemples" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> packages <replaceable>répertoire</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3336,7 +3353,7 @@ msgstr "" "des paquets binaires (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3401,11 +3418,10 @@ msgid "" "<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> <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> </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> </" @@ -3454,7 +3470,7 @@ msgstr "" "</group> </arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -3467,12 +3483,12 @@ msgstr "" "existent, comme &dselect;, &aptitude;, &synaptic; and &wajig;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -3497,12 +3513,12 @@ msgstr "" "ne peut être connue à l'avance." #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -3528,12 +3544,12 @@ msgstr "" "l'existence de nouvelles versions des paquets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "dselect-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -3551,12 +3567,12 @@ msgstr "" "installation de nouveaux paquets)." #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "dist-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -3579,12 +3595,12 @@ msgstr "" "un mécanisme de remplacement des paramètres généraux pour certains paquets." #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "install" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -3612,7 +3628,7 @@ msgstr "" "des conflits d'apt-get." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -3629,7 +3645,7 @@ msgstr "" "unstable)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." @@ -3639,7 +3655,7 @@ msgstr "" "avec précaution." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -3659,7 +3675,7 @@ msgstr "" "décrit plus haut) sera récupérée et installée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." @@ -3668,7 +3684,7 @@ msgstr "" "l'installation des paquets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -3689,12 +3705,12 @@ msgstr "" "d'utiliser une expression plus précise." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "remove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -3710,12 +3726,12 @@ msgstr "" "d'être supprimé." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "purge" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -3726,17 +3742,17 @@ msgstr "" "de configuration sont également effacés)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "source" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." @@ -3751,7 +3767,7 @@ msgstr "" "respect the default release\"\"\" me paraît douteux." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -3767,7 +3783,7 @@ msgstr "" "installé ou que vous voulez installer." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 #, fuzzy #| msgid "" #| "If the <option>--compile</option> option is specified then the package " @@ -3776,17 +3792,16 @@ msgstr "" #| "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> 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." +"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 "" "Si l'option <option>--compile</option> est spécifiée, le paquet est compilé " "en un binaire .deb avec <command>dpkg-buildpackage</command>. Si <option>--" "download-only</option> est spécifié, le source n'est pas décompacté." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -3801,7 +3816,7 @@ msgstr "" "Source</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -3812,34 +3827,31 @@ msgstr "" "sont semblables à des sources téléchargées sous forme d'archives tar." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "build-dep" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: 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. 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." +"attempt to satisfy the build dependencies for a source package." msgstr "" "Avec la commande <literal>build-dep</literal>, apt-get installe ou supprime " "des paquets dans le but de satisfaire les dépendances de construction d'un " "paquet source." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "check" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." @@ -3848,21 +3860,25 @@ msgstr "" "jour le cache des paquets et cherche les dépendances défectueuses." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "download" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: 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 directory." +"current directoy." msgstr "" "<literal>download</literal> télécharge le fichier binaire indiqué dans le " "répertoire courant." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -3881,12 +3897,12 @@ msgstr "" "temps en temps si l'on veut libérer de l'espace disque." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "autoclean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -3905,12 +3921,12 @@ msgstr "" "installés." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "autoremove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 #, fuzzy #| msgid "" #| "<literal>autoremove</literal> is used to remove packages that were " @@ -3918,20 +3934,20 @@ msgstr "autoremove" #| "are no more needed." msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" "Avec la commande <literal>autoremove</literal>, apt-get supprime les paquets " "installés dans le but de satisfaire les dépendances d'un paquet donné et qui " "ne sont plus nécessaires." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "changelog" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -3953,12 +3969,12 @@ msgstr "" "<option>install</option>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "<option>--no-install-recommends</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." @@ -3967,12 +3983,12 @@ msgstr "" "Élément de configuration : <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 msgid "<option>--install-suggests</option>" msgstr "<option>--install-suggests</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 msgid "" "Consider suggested packages as a dependency for installing. Configuration " "Item: <literal>APT::Install-Suggests</literal>." @@ -3981,12 +3997,12 @@ msgstr "" "de configuration : <literal>APT::Install-Suggests</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "<option>--download-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." @@ -3996,12 +4012,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "<option>--fix-broken</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -4029,17 +4045,17 @@ msgstr "" "configuration : <literal>APT::Get::Fix-Broken</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "<option>--ignore-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "<option>--fix-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -4059,12 +4075,12 @@ msgstr "" "<literal>APT::Get::Fix-Missing</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "<option>--no-download</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -4076,7 +4092,7 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -4098,17 +4114,17 @@ msgstr "" "configuration : <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "<option>--simulate</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "<option>--dry-run</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -4119,7 +4135,7 @@ msgstr "" "<literal>APT::Get::Simulate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -4138,7 +4154,7 @@ msgstr "" "utile qu'<literal>apt-get</literal> envoie de telles notifications)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -4151,22 +4167,22 @@ msgstr "" "que les dommages n'ont aucune conséquence (rare)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "<option>-y</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "<option>--yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "<option>--assume-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -4182,17 +4198,17 @@ msgstr "" "configuration : <literal>APT::Get::Assume-Yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "<option>-u</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "<option>--show-upgraded</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." @@ -4202,17 +4218,17 @@ msgstr "" "Upgraded</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "<option>-V</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "<option>--verbose-versions</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." @@ -4221,40 +4237,22 @@ msgstr "" "Élément de configuration : <literal>APT::Get::Show-Versions</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -#, fuzzy -#| msgid "<option>--recurse</option>" -msgid "<option>--host-architecture</option>" -msgstr "<option>--recurse</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "<option>-b</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "<option>--compile</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "<option>--build</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." @@ -4263,12 +4261,12 @@ msgstr "" "configuration : <literal>APT::Get::Compile</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "<option>--ignore-hold</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -4282,12 +4280,12 @@ msgstr "" "<literal>APT::Ignore-Hold</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "<option>--no-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -4300,12 +4298,12 @@ msgstr "" "Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "<option>--only-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 msgid "" "Do not install new packages; When used in conjunction with <literal>install</" "literal>, <literal>only-upgrade</literal> will prevent packages on the " @@ -4319,12 +4317,12 @@ msgstr "" "Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "<option>--force-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -4340,12 +4338,12 @@ msgstr "" "yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "<option>--print-uris</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -4367,12 +4365,12 @@ msgstr "" "<literal>APT::Get::Print-URIs</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "<option>--purge</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -4386,12 +4384,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "<option>--reinstall</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." @@ -4400,12 +4398,12 @@ msgstr "" "Élément de configuration : <literal>APT::Get::ReInstall</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "<option>--list-cleanup</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -4423,17 +4421,17 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "<option>--target-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "<option>--default-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -4455,12 +4453,12 @@ msgstr "" "Release</literal>. Voyez aussi la page de manuel d'&apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "<option>--trivial-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -4474,12 +4472,12 @@ msgstr "" "Get::Trivial-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "<option>--no-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." @@ -4489,12 +4487,12 @@ msgstr "" "Remove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "<option>--auto-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -4507,12 +4505,12 @@ msgstr "" "inutilisés. Élément de configuration : <literal>APT::Get::Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "<option>--only-source</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -4532,22 +4530,22 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "<option>--diff-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "<option>--dsc-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "<option>--tar-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -4559,12 +4557,12 @@ msgstr "" "literal>, " #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "<option>--arch-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." @@ -4574,12 +4572,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "<option>--allow-unauthenticated</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -4591,7 +4589,7 @@ msgstr "" "AllowUnauthenticated</literal>." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" @@ -4600,7 +4598,7 @@ msgstr "" "&file-statelists;" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -4611,7 +4609,7 @@ msgstr "" "« HOWTO » d'APT." #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." @@ -4620,22 +4618,22 @@ msgstr "" "décimal 100 en cas d'erreur." #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "AUTEURS D'ORIGINE" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "&apt-author.jgunthorpe;" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "AUTEURS ACTUELS" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "&apt-author.team;" @@ -4760,33 +4758,30 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" +"Mettre à jour le trousseau de clés local avec le trousseau de clés de " +"l'archive Debian et supprimer les clés qui y sont périmées." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 #, fuzzy #| msgid "update" msgid "net-update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4795,17 +4790,25 @@ msgstr "" "décrites dans la section suivante." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>fichier</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: 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 " "<filename>trusted.gpg</filename> file as well as on all parts in the " -"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</" +"<filename>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" @@ -4817,44 +4820,44 @@ msgstr "" "les nouvelles clés y seront ajoutées." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Base de données locale de fiabilité des clés de l'archive." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Trousseau des clés fiables de l'archive Debian." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Trousseau des clés fiables supprimées de l'archive Debian." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" @@ -5568,12 +5571,11 @@ msgstr "" #| "be silently ignored." msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." msgstr "" "tous les fichiers de <literal>Dir::Etc::Parts</literal> dans l'ordre " "alphanumérique ascendant qui ont soit l'extension \"<literal>conf</literal>" @@ -5838,24 +5840,13 @@ msgstr "" "utiliser pour récupérer des fichiers et analyser des listes de paquets. La " "valeur interne par défaut est l'architecture pour laquelle APT a été compilé." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "Default-Release" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -5869,12 +5860,12 @@ msgstr "" "&apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "Ignore-Hold" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." @@ -5884,12 +5875,12 @@ msgstr "" "décision." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "Clean-Installed" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -5903,12 +5894,12 @@ msgstr "" "direct pour les réinstaller." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "Immediate-Configure" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -5972,12 +5963,12 @@ msgstr "" "utilisée afin qu'il soit étudié et corrigé." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "Force-LoopBreak" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -5995,12 +5986,12 @@ msgstr "" "les paquets dont ces paquets dépendent." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "Cache-Start, Cache-Grow et Cache-Limit" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -6040,24 +6031,24 @@ msgstr "" "l'augmentation automatique de la taille du cache est désactivée." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "Build-Essential" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" "Cette option définit les paquets qui sont considérés comme faisant partie " "des dépendances essentielles pour la construction de paquets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "Get" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." @@ -6067,12 +6058,12 @@ msgstr "" "question." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "Cache" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." @@ -6082,12 +6073,12 @@ msgstr "" "options en question." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "CDROM" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." @@ -6097,17 +6088,17 @@ msgstr "" "options en question." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "Le groupe Acquire" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "Check-Valid-Until" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -6127,12 +6118,12 @@ msgstr "" "ValidTime</literal> est alors utilisée." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "Max-ValidTime" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 #, fuzzy #| msgid "" #| "Seconds the Release file should be considered valid after it was created. " @@ -6145,12 +6136,15 @@ msgstr "Max-ValidTime" #| "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 " -"(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." +"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." 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 " @@ -6164,51 +6158,12 @@ msgstr "" "défini en ajoutant l'étiquette de l'archive au nom de l'option." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -#, fuzzy -#| msgid "Max-ValidTime" -msgid "Min-ValidTime" -msgstr "Max-ValidTime" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -#, 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." - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "PDiffs" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." @@ -6218,12 +6173,20 @@ msgstr "" "télécharger entièrement. Par défaut à « true »." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 +#, fuzzy +#| msgid "" +#| "Two sub-options to limit the use of PDiffs are also available: With " +#| "<literal>FileLimit</literal> can be specified how many PDiff files are " +#| "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " +#| "other hand is the maximum percentage of the size of all patches compared " +#| "to the size of the targeted file. If one of these limits is exceeded the " +#| "complete file is downloaded instead of the patches." msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" @@ -6237,12 +6200,12 @@ msgstr "" "fichiers de différences." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "Queue-Mode" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -6258,12 +6221,12 @@ msgstr "" "initiée." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "Retries" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." @@ -6273,12 +6236,12 @@ msgstr "" "échoué." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "Source-Symlinks" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." @@ -6288,12 +6251,12 @@ msgstr "" "archives de sources au lieu de les copier. Par défaut à « true »." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "http" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -6313,7 +6276,7 @@ msgstr "" "options de mandataire HTTP." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -6338,7 +6301,7 @@ msgstr "" "en compte aucune de ces options." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -6349,7 +6312,7 @@ msgstr "" "données." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -6369,7 +6332,7 @@ msgstr "" "cette option ne respectent pas la RFC 2068." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -6384,7 +6347,7 @@ msgstr "" "implicitement le téléchargement simultané depuis plusieurs serveurs." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -6396,12 +6359,12 @@ msgstr "" "n'autorisent l'accès qu'aux client s'identifiant de manière spécifique.." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "https" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -6417,7 +6380,7 @@ msgstr "" "encore gérée." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -6449,12 +6412,12 @@ msgstr "" "ou 'SSLv3'." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "ftp" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -6489,7 +6452,7 @@ msgstr "" "correspond à l'élément respectif de l'URI." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -6506,7 +6469,7 @@ msgstr "" "modèle de fichier de configuration)." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -6521,7 +6484,7 @@ msgstr "" "efficacité de cette méthode." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -6537,18 +6500,18 @@ msgstr "" "des serveurs FTP ne suivent pas la RFC 2428." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "cdrom" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "/cdrom/::Mount \"foo\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -6570,12 +6533,12 @@ msgstr "" "spécifiées en utilisant <literal>UMount</literal>." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "gpgv" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -6586,18 +6549,18 @@ msgstr "" "supplémentaires passées à gpgv." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "CompressionTypes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "Acquire::CompressionTypes::<replaceable>ExtensionFichier</replaceable> \"<replaceable>NomMethode</replaceable>\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -6617,19 +6580,19 @@ msgstr "" "type=\"synopsis\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "Acquire::CompressionTypes::Order:: \"gz\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -6660,13 +6623,13 @@ msgstr "" "<literal>bz2</literal> à liste car il sera ajouté automatiquement." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 #, fuzzy #| msgid "" #| "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</" @@ -6683,9 +6646,9 @@ 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 " +"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 " @@ -6704,10 +6667,16 @@ msgstr "" "elle sera simplement préfixée avec l'option en question." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: 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 don't provide " +"uncompressed files a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" "Le type spécial <literal>uncompressed</literal> peut servir à donner la " @@ -6716,12 +6685,12 @@ msgstr "" "surtout destiné aux miroirs locaux." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "GzipIndexes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -6736,12 +6705,12 @@ msgstr "" "(« False »)." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "Langues" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -6763,13 +6732,13 @@ msgstr "" "sur ce qui est disponible avant d'établir des réglages impossibles." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "Acquire::Languages { \"environment\"; \"fr\"; \"en\"; \"none\"; \"de\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -6811,7 +6780,7 @@ msgstr "" "\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -6821,12 +6790,12 @@ msgstr "" "id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "Les répertoires" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -6846,7 +6815,7 @@ msgstr "" "filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -6869,7 +6838,7 @@ msgstr "" "Cache</literal>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -6884,7 +6853,7 @@ msgstr "" "fichier de configuration indiqué par la variable <envar>APT_CONFIG</envar>)." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -6895,7 +6864,7 @@ msgstr "" "configuration est chargé." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -6913,7 +6882,7 @@ msgstr "" "programmes correspondants." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -6935,7 +6904,7 @@ msgstr "" "staging/var/lib/dpkg/status</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -6953,12 +6922,12 @@ msgstr "" "est possible d'utiliser la syntaxe des expressions rationnelles." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "APT et DSelect" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -6969,12 +6938,12 @@ msgstr "" "<literal>DSelect</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "Clean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -6992,7 +6961,7 @@ msgstr "" "supprime avant de récupérer de nouveaux paquets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." @@ -7001,12 +6970,12 @@ msgstr "" "&apt-get; lors de la phase d'installation." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "UpdateOptions" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." @@ -7015,12 +6984,12 @@ msgstr "" "&apt-get; lors de la phase de mise à jour." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "PromptAfterUpdate" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." @@ -7030,12 +6999,12 @@ msgstr "" "d'erreur que l'on propose à l'utilisateur d'intervenir." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "Méthode d'appel de &dpkg; par APT" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." @@ -7044,7 +7013,7 @@ msgstr "" "&dpkg; : elles figurent dans la section <literal>DPkg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -7055,17 +7024,17 @@ msgstr "" "est passé comme un seul paramètre à &dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "Pre-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "Post-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7078,12 +7047,12 @@ msgstr "" "<filename>/bin/sh</filename> : APT s'arrête dès que l'une d'elles échoue." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "Pre-Install-Pkgs" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7099,7 +7068,7 @@ msgstr "" "qu'il va installer, à raison d'un par ligne." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -7115,12 +7084,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "Run-Directory" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." @@ -7129,12 +7098,12 @@ msgstr "" "le répertoire <filename>/</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "Build-options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." @@ -7144,14 +7113,14 @@ msgstr "" "créés." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "" "utilisation des actions différées (« triggers ») de dpkg (et options " "associées)" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -7178,7 +7147,7 @@ msgstr "" "configuration des paquets." #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -7192,7 +7161,7 @@ msgstr "" "DPkg::TriggersPending \"true\";" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -7216,12 +7185,12 @@ msgstr "" "type=\"literallayout\" id=\"0\"/>." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "DPkg::NoTriggers" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -7243,12 +7212,12 @@ msgstr "" "options « unpack » et « remove »." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "PackageManager::Configure" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -7276,12 +7245,12 @@ msgstr "" "configuré et donc éventuellement non amorçable." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "DPkg::ConfigurePending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -7300,12 +7269,12 @@ msgstr "" "peut conserver l'option active." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "DPkg::TriggersPending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -7323,12 +7292,12 @@ msgstr "" "celles concernant le paquet en cours de traitement." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "PackageManager::UnpackAll" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -7353,12 +7322,12 @@ msgstr "" "traduction n'est pas exclu...)." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "OrderList::Score::Immediate" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -7376,7 +7345,7 @@ msgstr "" "};" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -7402,12 +7371,12 @@ msgstr "" "id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "Options « Periodic » et « Archive »" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -7419,12 +7388,12 @@ msgstr "" "script <literal>/etc/cron.daily/apt</literal>, lancé quotidiennement." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "Les options de débogage" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -7442,7 +7411,7 @@ msgstr "" "peuvent tout de même être utiles :" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -7453,7 +7422,7 @@ msgstr "" "upgrade, upgrade, install, remove et purge</literal>." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -7465,7 +7434,7 @@ msgstr "" "superutilisateur." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -7477,7 +7446,7 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." @@ -7486,17 +7455,17 @@ msgstr "" "type statfs dans les identifiants de CD." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "Liste complète des options de débogage de APT :" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" @@ -7504,44 +7473,44 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" "Affiche les informations concernant le téléchargement de paquets par FTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" "Affiche les informations concernant le téléchargement de paquets par HTTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "<literal>Debug::Acquire::https</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "Print information related to downloading packages using HTTPS." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "<literal>Debug::Acquire::gpgv</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." @@ -7550,12 +7519,12 @@ msgstr "" "cryptographiques avec <literal>gpg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "<literal>Debug::aptcdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." @@ -7564,24 +7533,24 @@ msgstr "" "stockées sur CD." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "<literal>Debug::BuildDeps</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" "Décrit le processus de résolution des dépendances pour la construction de " "paquets source ( « build-dependencies » ) par &apt-get;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "<literal>Debug::Hashes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." @@ -7590,12 +7559,12 @@ msgstr "" "librairies d'<literal>apt</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "<literal>Debug::IdentCDROM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -7606,12 +7575,12 @@ msgstr "" "utilisés sur le système de fichier du CD." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "<literal>Debug::NoLocking</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." @@ -7621,24 +7590,24 @@ msgstr "" "temps." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "<literal>Debug::pkgAcquire</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" "Trace les ajouts et suppressions d'éléments de la queue globale de " "téléchargement." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "<literal>Debug::pkgAcquire::Auth</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." @@ -7648,12 +7617,12 @@ msgstr "" "éventuelles." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "<literal>Debug::pkgAcquire::Diffs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." @@ -7663,12 +7632,12 @@ msgstr "" "éventuelles." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "<literal>Debug::pkgAcquire::RRed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." @@ -7678,12 +7647,12 @@ msgstr "" "place des fichiers complets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" @@ -7691,12 +7660,12 @@ msgstr "" "effectivement des téléchargements." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "<literal>Debug::pkgAutoRemove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." @@ -7705,12 +7674,12 @@ msgstr "" "automatiquement, et la suppression des paquets inutiles." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "<literal>Debug::pkgDepCache::AutoInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -7725,12 +7694,12 @@ msgstr "" "de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "<literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -7765,24 +7734,24 @@ msgstr "" "de APT ; voir <literal>Debug::pkgProblemResolver</literal> pour ce dernier." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "<literal>Debug::pkgInitConfig</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "" "Affiche, au lancement, l'ensemble de la configuration sur la sortie d'erreur " "standard." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "<literal>Debug::pkgDPkgPM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." @@ -7791,12 +7760,12 @@ msgstr "" "paramètres sont séparés par des espaces." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "<literal>Debug::pkgDPkgProgressReporting</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." @@ -7806,12 +7775,12 @@ msgstr "" "fichier." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "<literal>Debug::pkgOrderList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." @@ -7820,33 +7789,33 @@ msgstr "" "<literal>apt</literal> passe les paquets à &dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "Affiche le détail des opérations liées à l'invocation de &dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "<literal>Debug::pkgPolicy</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "Affiche, au lancement, la priorité de chaque liste de paquets." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "<literal>Debug::pkgProblemResolver</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." @@ -7855,12 +7824,12 @@ msgstr "" "concerne que les cas où un problème de dépendances complexe se présente)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "<literal>Debug::pkgProblemResolver::ShowScores</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -7871,12 +7840,12 @@ msgstr "" "est décrite dans <literal>Debug::pkgDepCache::Marker</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "<literal>Debug::sourceList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." @@ -7885,7 +7854,7 @@ msgstr "" "list</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." @@ -7894,13 +7863,13 @@ msgstr "" "exemples pour toutes les options existantes." #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "&file-aptconf;" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." @@ -8008,8 +7977,8 @@ msgstr "" 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 either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -8475,7 +8444,7 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" @@ -8499,7 +8468,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -9411,7 +9380,7 @@ msgstr "" #: 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 [composant1] [composant2] [...]" #. type: Content of: <refentry><refsect1><para> @@ -9482,27 +9451,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -9514,12 +9462,12 @@ msgstr "" "les hôtes distants." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "Exemples :" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -9531,17 +9479,17 @@ msgstr "" " " #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "Spécification des URI" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "file" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -9552,7 +9500,7 @@ msgstr "" "avec les montages NFS, les miroirs et les archives locaux." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." @@ -9562,7 +9510,7 @@ msgstr "" "pour créer des entrées dans la liste des sources." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -9579,7 +9527,7 @@ msgstr "" "Notez qu'il s'agit d'une méthode d'authentification peu sûre." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -9599,12 +9547,12 @@ msgstr "" "et qui sont spécifiés dans le fichier de configuration seront ignorés." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "copy" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -9616,17 +9564,17 @@ msgstr "" "gens qui utilisent un disque zip pour recopier des fichiers avec APT." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "rsh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "ssh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -9641,12 +9589,12 @@ msgstr "" "commandes standard <command>find</command> et <command>dd</command>." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "plus de types d'URI simples à reconnaître" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -9668,7 +9616,7 @@ msgstr "" "citerefentry>)." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -9677,7 +9625,7 @@ msgstr "" "ssh et rsh. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." @@ -9686,60 +9634,37 @@ msgstr "" "debian pour stable/main, stable/contrib et stable/non-free." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "deb file:/home/jason/debian stable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" "Comme ci-dessus, excepté que cette ligne utilise la distribution " "« unstable » (développement)." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "deb file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "La précédente ligne, mais pour les sources." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "deb-src file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, fuzzy, no-wrap -#| 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" -" " - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." @@ -9748,13 +9673,13 @@ msgstr "" "n'utiliser que la section hamm/main." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "deb http://archive.debian.org/debian-archive hamm main" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." @@ -9763,13 +9688,13 @@ msgstr "" "répertoire debian, et n'utiliser que la section &stable-codename;/contrib." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "deb ftp://ftp.debian.org/debian &stable-codename; contrib" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -9782,19 +9707,19 @@ msgstr "" "apparaissent, une seule session FTP sera utilisée pour les deux lignes." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "deb ftp://ftp.debian.org/debian unstable contrib" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, no-wrap msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 msgid "" "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe " "directory, and uses only files found under <filename>unstable/binary-i386</" @@ -9814,7 +9739,7 @@ msgstr "" "type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "&apt-cache; &apt-conf;" @@ -11380,12 +11305,59 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" 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 "" -#~ "Update the local keyring with the keyring of Debian archive keys and " -#~ "removes from the keyring the archive keys which are no longer valid." +#~ "deb http://ftp.debian.org/debian &stable-codename; main\n" +#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" #~ msgstr "" -#~ "Mettre à jour le trousseau de clés local avec le trousseau de clés de " -#~ "l'archive Debian et supprimer les clés qui y sont périmées." +#~ "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>" diff --git a/doc/po/it.po b/doc/po/it.po index 148244138..505553b55 100644 --- a/doc/po/it.po +++ b/doc/po/it.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2003-04-26 23:26+0100\n" "Last-Translator: Traduzione di Eugenia Franzoni <eugenia@linuxcare.com>\n" "Language-Team: <debian-l10n-italian@lists.debian.org>\n" @@ -531,7 +531,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -548,7 +548,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -910,8 +910,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "" @@ -934,7 +934,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "" @@ -955,12 +955,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "" @@ -1035,14 +1035,14 @@ msgstr "" #: apt-cache.8.xml:317 msgid "" "Per default the <literal>depends</literal> and <literal>rdepends</literal> " -"print all dependencies. This can be tweaked with these flags which will omit " +"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>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "" @@ -1059,8 +1059,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "" @@ -1156,14 +1155,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "" @@ -1174,10 +1173,10 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 msgid "See Also" msgstr "" @@ -1188,7 +1187,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "" @@ -1288,12 +1287,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "" @@ -1329,7 +1328,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "" @@ -1374,17 +1373,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "" @@ -1497,7 +1496,7 @@ msgid "Just show the contents of the configuration space." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "" @@ -1558,7 +1557,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "" @@ -1760,7 +1759,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "" @@ -2218,8 +2217,8 @@ msgid "" "free</literal>" msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "" @@ -2420,26 +2419,26 @@ msgid "" "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -2448,12 +2447,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -2462,12 +2461,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -2477,12 +2476,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -2490,24 +2489,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -2516,12 +2515,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -2535,12 +2534,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -2550,26 +2549,26 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 msgid "Examples" msgstr "" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -2601,11 +2600,10 @@ msgid "" "<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> <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> </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> </" @@ -2627,7 +2625,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -2636,13 +2634,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 #, fuzzy msgid "update" msgstr "upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -2656,13 +2654,13 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 #, fuzzy msgid "upgrade" msgstr "upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -2677,13 +2675,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 #, fuzzy msgid "dselect-upgrade" msgstr "dist-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -2694,13 +2692,13 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 #, fuzzy msgid "dist-upgrade" msgstr "dist-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -2714,13 +2712,13 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 #, fuzzy msgid "install" msgstr "install" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -2736,7 +2734,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -2747,14 +2745,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -2766,14 +2764,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -2785,12 +2783,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -2800,12 +2798,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -2813,24 +2811,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -2840,17 +2838,16 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 msgid "" "If the <option>--compile</option> option is specified then the package will " -"be compiled to a binary .deb using <command>dpkg-buildpackage</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." +"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 "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -2860,7 +2857,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -2868,46 +2865,43 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: apt-get.8.xml:272 msgid "" "<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 natively. If desired a " -"host-architecture can be specified with the <option>--host-architecture</" -"option> option instead." +"attempt to satisfy the build dependencies for a source package." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: apt-get.8.xml:282 msgid "" "<literal>download</literal> will download the given binary package into the " -"current directory." +"current directoy." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -2919,12 +2913,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -2936,25 +2930,25 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -2967,48 +2961,48 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 msgid "<option>--install-suggests</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 msgid "" "Consider suggested packages as a dependency for installing. Configuration " "Item: <literal>APT::Install-Suggests</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -3024,17 +3018,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -3046,12 +3040,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -3059,7 +3053,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3071,17 +3065,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -3089,7 +3083,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -3100,7 +3094,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -3109,22 +3103,22 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -3134,84 +3128,68 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -msgid "<option>--host-architecture</option>" -msgstr "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -3220,12 +3198,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -3234,12 +3212,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 msgid "" "Do not install new packages; When used in conjunction with <literal>install</" "literal>, <literal>only-upgrade</literal> will prevent packages on the " @@ -3248,12 +3226,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -3263,12 +3241,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -3281,12 +3259,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -3295,24 +3273,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -3323,17 +3301,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -3347,12 +3325,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -3361,24 +3339,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -3387,12 +3365,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -3404,22 +3382,22 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -3427,24 +3405,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -3452,14 +3430,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -3467,29 +3445,29 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "" @@ -3604,91 +3582,86 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 #, fuzzy msgid "net-update" msgstr "upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: apt-key.8.xml:162 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>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "" @@ -4201,12 +4174,11 @@ msgstr "" #: apt.conf.5.xml:52 msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." msgstr "" #. type: Content of: <refentry><refsect1><orderedlist><listitem><para> @@ -4378,24 +4350,13 @@ msgid "" "compiled for." msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -4404,24 +4365,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -4430,12 +4391,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -4468,12 +4429,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -4484,12 +4445,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -4509,63 +4470,63 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -4577,67 +4538,54 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 msgid "" -"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." +"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." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -msgid "Min-ValidTime" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -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 "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -4647,36 +4595,36 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -4687,7 +4635,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -4701,7 +4649,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -4709,7 +4657,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -4721,7 +4669,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -4731,7 +4679,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -4739,12 +4687,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -4754,7 +4702,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -4775,12 +4723,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -4799,7 +4747,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -4809,7 +4757,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -4818,7 +4766,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -4828,18 +4776,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -4852,12 +4800,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -4865,18 +4813,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -4888,19 +4836,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -4917,20 +4865,20 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 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 " +"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 " @@ -4938,20 +4886,20 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:449 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 a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -4960,12 +4908,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -4978,13 +4926,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -5007,19 +4955,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -5031,7 +4979,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -5044,7 +4992,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -5054,7 +5002,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -5062,7 +5010,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -5073,7 +5021,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -5086,7 +5034,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -5097,13 +5045,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 #, fuzzy msgid "APT in DSelect" msgstr "DSelect" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -5111,12 +5059,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -5127,50 +5075,50 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -5178,17 +5126,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5197,12 +5145,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5212,7 +5160,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -5222,36 +5170,36 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -5266,7 +5214,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -5276,7 +5224,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -5290,12 +5238,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -5307,12 +5255,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -5328,12 +5276,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -5344,12 +5292,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -5359,12 +5307,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -5376,12 +5324,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -5393,7 +5341,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -5407,12 +5355,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -5421,12 +5369,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -5437,7 +5385,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -5445,7 +5393,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -5453,7 +5401,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -5463,111 +5411,111 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -5575,93 +5523,93 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -5671,12 +5619,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -5693,91 +5641,91 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -5785,32 +5733,32 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "" @@ -5882,8 +5830,8 @@ msgstr "" 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 either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -6211,7 +6159,7 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" @@ -6228,7 +6176,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -6893,7 +6841,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml:81 #, no-wrap -msgid "deb [ options ] uri distribution [component1] [component2] [...]" +msgid "deb uri distribution [component1] [component2] [...]" msgstr "" #. type: Content of: <refentry><refsect1><para> @@ -6938,27 +6886,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -6966,12 +6893,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -6980,17 +6907,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -6998,14 +6925,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -7016,7 +6943,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -7028,12 +6955,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -7041,17 +6968,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -7061,12 +6988,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -7079,91 +7006,75 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, no-wrap -msgid "" -"deb http://ftp.debian.org/debian &stable-codename; main\n" -"deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -7172,19 +7083,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, no-wrap msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 msgid "" "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe " "directory, and uses only files found under <filename>unstable/binary-i386</" @@ -7196,7 +7107,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "" diff --git a/doc/po/ja.po b/doc/po/ja.po index b79809055..368572943 100644 --- a/doc/po/ja.po +++ b/doc/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.25.3\n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-09-07 07:38+0900\n" "Last-Translator: KURASAWA Nozomu <nabetaro@caldron.jp>\n" "Language-Team: Debian Japanese List <debian-japanese@lists.debian.org>\n" @@ -791,7 +791,7 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -814,7 +814,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -1329,8 +1329,8 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "オプション" @@ -1357,7 +1357,7 @@ msgstr "" "pkgcache</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1384,12 +1384,12 @@ msgstr "" "<literal>Dir::Cache::srcpkgcache</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1475,7 +1475,7 @@ msgstr "<option>--no-enhances</option>" #, fuzzy msgid "" "Per default the <literal>depends</literal> and <literal>rdepends</literal> " -"print all dependencies. This can be tweaked with these flags which will omit " +"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>." @@ -1485,7 +1485,7 @@ msgstr "" "RecurseDepends</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "<option>-f</option>" @@ -1505,8 +1505,7 @@ msgstr "" "ShowFull</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1628,15 +1627,15 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "ファイル" @@ -1648,10 +1647,10 @@ msgstr "&file-sourceslist; &file-statelists;" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 msgid "See Also" msgstr "関連項目" @@ -1664,7 +1663,7 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "診断メッセージ" @@ -1801,12 +1800,12 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "オプション" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1850,7 +1849,7 @@ msgstr "" "ます。設定項目 - <literal>APT::CDROM::Rename</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "<option>-m</option>" @@ -1909,17 +1908,17 @@ msgstr "" "できます。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "<option>--just-print</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "<option>--recon</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "<option>--no-act</option>" @@ -2076,7 +2075,7 @@ msgstr "設定箇所の内容を表示するだけです。" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -2160,7 +2159,7 @@ msgstr "" "<filename>package.config.XXXX</filename> と言った形になります。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "<option>-t</option>" @@ -2440,7 +2439,7 @@ msgstr "" "のディレクトリから作成するかを指定する、柔軟な方法を提供します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "clean" @@ -3042,8 +3041,8 @@ msgstr "" "<literal>main contrib non-free</literal>のようになります。" # type: <tag></tag> -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "Architectures" @@ -3293,26 +3292,43 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." msgid "" "Generate the given checksum. These options default to on, when turned off " "the generated index files will not have the checksum fields where possible. " "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" +"Release ファイルの追加メタデータフィールドの値は、<literal>APT::FTPArchive::" +"Release</literal> 以下の相当する値 (例: <literal>APT::FTPArchive::Release::" +"Origin</literal>) をとります。サポートするフィールドは、<literal>Origin</" +"literal>, <literal>Label</literal>, <literal>Suite</literal>, " +"<literal>Version</literal>, <literal>Codename</literal>, <literal>Date</" +"literal>, <literal>Valid-Until</literal>, <literal>Architectures</literal>, " +"<literal>Components</literal>, <literal>Description</literal> です。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3322,7 +3338,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3335,13 +3351,13 @@ msgstr "" "<literal>quiet</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3354,13 +3370,13 @@ msgstr "" "<literal>APT::FTPArchive::DeLinkAct</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3375,13 +3391,13 @@ msgstr "" "<literal>APT::FTPArchive::Contents</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3391,13 +3407,13 @@ msgstr "" "選択します。設定項目 - <literal>APT::FTPArchive::SourceOverride</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3406,13 +3422,13 @@ msgstr "" "FTPArchive::ReadOnlyDB</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 #, fuzzy msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " @@ -3426,12 +3442,12 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>--version</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3445,12 +3461,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 #, fuzzy msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " @@ -3466,14 +3482,14 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 msgid "Examples" msgstr "サンプル" # type: Content of: <refentry><refsect1><para><programlisting> #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "" @@ -3482,7 +3498,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3492,7 +3508,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3558,11 +3574,10 @@ msgid "" "<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> <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> </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> </" @@ -3610,7 +3625,7 @@ msgstr "" "</group> </arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -3623,13 +3638,13 @@ msgstr "" "&wajig; などがあります。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "update" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -3652,13 +3667,13 @@ msgstr "" # type: <tag></tag> #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "upgrade" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -3682,13 +3697,13 @@ msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "dselect-upgrade" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -3706,13 +3721,13 @@ msgstr "" # type: <tag></tag> #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "dist-upgrade" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -3736,13 +3751,13 @@ msgstr "" # type: <tag></tag> #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "install" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -3769,7 +3784,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -3787,7 +3802,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." @@ -3796,7 +3811,7 @@ msgstr "" "なりません。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -3816,7 +3831,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." @@ -3826,7 +3841,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -3843,13 +3858,13 @@ msgstr "" "ば、'^' や '$' を付けるか、もっと詳しい正規表現を指定してください。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "remove" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -3864,13 +3879,13 @@ msgstr "" "トールします。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "purge" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -3881,18 +3896,18 @@ msgstr "" # type: Content of: <refentry><refnamediv><refname> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "source" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." @@ -3906,7 +3921,7 @@ msgstr "" "literal> 構文で指定します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -3921,7 +3936,7 @@ msgstr "" "もっと適切なものを取得します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 #, fuzzy #| msgid "" #| "If the <option>--compile</option> option is specified then the package " @@ -3930,10 +3945,9 @@ msgstr "" #| "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> 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." +"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 "" "<option>--compile</option> オプションを指定すると、<command>dpkg-" "buildpackage</command> を用いてバイナリ .deb パッケージをコンパイルします。" @@ -3942,7 +3956,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -3957,7 +3971,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -3967,35 +3981,32 @@ msgstr "" "展開されることに注意してください。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "build-dep" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: 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. 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." +"attempt to satisfy the build dependencies for a source package." msgstr "" "<literal>build-dep</literal> は、ソースパッケージの構築依存関係を満たすよう" "に、パッケージのインストール・削除を行います。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "check" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." @@ -4004,20 +4015,20 @@ msgstr "" "チェックする診断ツールです。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: apt-get.8.xml:282 msgid "" "<literal>download</literal> will download the given binary package into the " -"current directory." +"current directoy." msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -4035,13 +4046,13 @@ msgstr "" "<literal>apt-get clean</literal> を実行したくなるでしょう。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "autoclean" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -4060,13 +4071,13 @@ msgstr "" "防げます。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "autoremove" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 #, fuzzy #| msgid "" #| "<literal>autoremove</literal> is used to remove packages that were " @@ -4074,19 +4085,19 @@ msgstr "autoremove" #| "are no more needed." msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" "<literal>autoremove</literal> は、依存関係を満たすために自動的にインストール" "され、もう必要なくなったパッケージを削除するのに使用します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -4099,13 +4110,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "<option>--no-install-recommends</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." @@ -4114,7 +4125,7 @@ msgstr "" "<literal>APT::Install-Recommends</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 #, fuzzy #| msgid "<option>--no-suggests</option>" msgid "<option>--install-suggests</option>" @@ -4122,7 +4133,7 @@ msgstr "<option>--no-suggests</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 #, fuzzy #| msgid "" #| "Do not consider recommended packages as a dependency for installing. " @@ -4135,13 +4146,13 @@ msgstr "" "<literal>APT::Install-Recommends</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "<option>--download-only</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." @@ -4150,13 +4161,13 @@ msgstr "" "いません。設定項目 - <literal>APT::Get::Download-Only</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "<option>--fix-broken</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -4182,18 +4193,18 @@ msgstr "" "<literal>APT::Get::Fix-Broken</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "<option>--ignore-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "<option>--fix-missing</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -4212,13 +4223,13 @@ msgstr "" "Get::Fix-Missing</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "<option>--no-download</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -4230,7 +4241,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -4249,18 +4260,18 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "<option>--simulate</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "<option>--dry-run</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -4270,7 +4281,7 @@ msgstr "" "行いません。設定項目 - <literal>APT::Get::Simulate</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -4288,7 +4299,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -4300,23 +4311,23 @@ msgstr "" "空の角カッコは大した問題ではないことを表します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "<option>-y</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "<option>--yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "<option>--assume-yes</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -4330,18 +4341,18 @@ msgstr "" "定項目 - <literal>APT::Get::Assume-Yes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "<option>-u</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "<option>--show-upgraded</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." @@ -4350,18 +4361,18 @@ msgstr "" "<literal>APT::Get::Show-Upgraded</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "<option>-V</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "<option>--verbose-versions</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." @@ -4370,41 +4381,23 @@ msgstr "" "<literal>APT::Get::Show-Versions</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -#, fuzzy -#| msgid "<option>--recurse</option>" -msgid "<option>--host-architecture</option>" -msgstr "<option>--recurse</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "<option>-b</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "<option>--compile</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "<option>--build</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." @@ -4413,13 +4406,13 @@ msgstr "" "Get::Compile</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "<option>--ignore-hold</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -4432,13 +4425,13 @@ msgstr "" "Hold</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "<option>--no-upgrade</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -4450,12 +4443,12 @@ msgstr "" "ある場合に更新を行いません。設定項目 - <literal>APT::Get::Upgrade</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "<option>--only-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 #, fuzzy msgid "" "Do not install new packages; When used in conjunction with <literal>install</" @@ -4468,13 +4461,13 @@ msgstr "" "ある場合に更新を行いません。設定項目 - <literal>APT::Get::Upgrade</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "<option>--force-yes</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -4488,13 +4481,13 @@ msgstr "" "ねません! 設定項目 - <literal>APT::Get::force-yes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "<option>--print-uris</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -4515,13 +4508,13 @@ msgstr "" "Print-URIs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "<option>--purge</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -4534,13 +4527,13 @@ msgstr "" "<literal>APT::Get::Purge</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "<option>--reinstall</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." @@ -4549,13 +4542,13 @@ msgstr "" "定項目 - <literal>APT::Get::ReInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "<option>--list-cleanup</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -4571,18 +4564,18 @@ msgstr "" "する時ぐらいでしょう。設定項目 - <literal>APT::Get::List-Cleanup</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "<option>--target-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "<option>--default-release</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -4604,13 +4597,13 @@ msgstr "" "Release</literal>。&apt-preferences; のマニュアルページもご覧ください。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "<option>--trivial-only</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -4623,13 +4616,13 @@ msgstr "" "目 - <literal>APT::Get::Trivial-Only</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "<option>--no-remove</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." @@ -4638,13 +4631,13 @@ msgstr "" "項目 - <literal>APT::Get::Remove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "<option>--auto-remove</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -4657,13 +4650,13 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "<option>--only-source</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -4681,23 +4674,23 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "<option>--diff-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "<option>--dsc-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "<option>--tar-only</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -4708,13 +4701,13 @@ msgstr "" "Only</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "<option>--arch-only</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." @@ -4723,13 +4716,13 @@ msgstr "" "<literal>APT::Get::Arch-Only</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "<option>--allow-unauthenticated</option>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -4740,7 +4733,7 @@ msgstr "" "literal>" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" @@ -4750,7 +4743,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -4762,7 +4755,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." @@ -4771,22 +4764,22 @@ msgstr "" "100 を返します。" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "原著者" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "&apt-author.jgunthorpe;" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "現著者" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "&apt-author.team;" @@ -4925,36 +4918,34 @@ msgstr "" "gpg に上級オプションを渡します。adv --recv-key とすると、公開鍵をダウンロード" "できます。" +# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" +"Debian アーカイブキーで、ローカルキーリングを更新し、もう有効でないキーをキー" +"リングから削除します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 #, fuzzy #| msgid "update" msgid "net-update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4964,17 +4955,25 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>filename</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: 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 " "<filename>trusted.gpg</filename> file as well as on all parts in the " -"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</" +"<filename>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" @@ -4985,35 +4984,35 @@ msgstr "" "加されます。" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "アーカイブキーのローカル信頼データベースです。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Debian アーカイブ信頼キーのキーリングです。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" @@ -5021,13 +5020,13 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "削除された Debian アーカイブ信頼キーのキーリングです。" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" @@ -5783,12 +5782,11 @@ msgstr "<envar>APT_CONFIG</envar> 環境変数で指定したファイル (存 #| "period (.) characters - otherwise they will be silently ignored." msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." msgstr "" "<literal>Dir::Etc::Parts</literal> にあるすべてのファイルを英数字の昇順に。" "ファイル名には拡張子がないか、\"<literal>conf</literal>\" となっており、英数" @@ -6043,25 +6041,14 @@ msgstr "" "に使用するアーキテクチャをセットします。内部でのデフォルトは、apt をコンパイ" "ルしたアーキテクチャです。" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - # type: Content of: <refentry><refsect1><refsect2><para><programlisting> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "Default-Release" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -6074,13 +6061,13 @@ msgstr "" "'4.0', '5.0*' となります。&apt-preferences; も参照してください。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "Ignore-Hold" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." @@ -6090,13 +6077,13 @@ msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "Clean-Installed" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -6111,12 +6098,12 @@ msgstr "" # type: Content of: <refentry><refnamediv><refname> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "Immediate-Configure" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -6172,13 +6159,13 @@ msgstr "" "レポートをおねがいします。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "Force-LoopBreak" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -6196,12 +6183,12 @@ msgstr "" "不可欠パッケージで動作します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -6221,24 +6208,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "Build-Essential" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "構築依存関係で不可欠なパッケージを定義します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "Get" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." @@ -6247,13 +6234,13 @@ msgstr "" "&apt-get; の文書を参照してください。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "Cache" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." @@ -6262,13 +6249,13 @@ msgstr "" "は &apt-cache; の文書を参照してください。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "CDROM" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." @@ -6278,17 +6265,17 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "Acquire グループ" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "Check-Valid-Until" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -6300,46 +6287,31 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "Max-ValidTime" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 msgid "" -"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." +"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." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -#, fuzzy -#| msgid "Max-ValidTime" -msgid "Min-ValidTime" -msgstr "Max-ValidTime" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -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 "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "PDiffs" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." @@ -6349,12 +6321,20 @@ msgstr "" "ルトでは True です。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 +#, fuzzy +#| msgid "" +#| "Two sub-options to limit the use of PDiffs are also available: With " +#| "<literal>FileLimit</literal> can be specified how many PDiff files are " +#| "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " +#| "other hand is the maximum percentage of the size of all patches compared " +#| "to the size of the targeted file. If one of these limits is exceeded the " +#| "complete file is downloaded instead of the patches." msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" @@ -6365,13 +6345,13 @@ msgstr "" "をダウンロードする代わりに、完全なファイルをダウンロードします。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "Queue-Mode" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -6386,13 +6366,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "Retries" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." @@ -6401,13 +6381,13 @@ msgstr "" "えられた回数だけリトライを行います。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "Source-Symlinks" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." @@ -6418,13 +6398,13 @@ msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "http" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -6442,7 +6422,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -6467,7 +6447,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -6479,7 +6459,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -6498,7 +6478,7 @@ msgstr "" "ます。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -6512,7 +6492,7 @@ msgstr "" "ロードしなくなることに注意してください)。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -6524,12 +6504,12 @@ msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "https" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -6544,7 +6524,7 @@ msgstr "" "いません。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -6581,13 +6561,13 @@ msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "ftp" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -6620,7 +6600,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -6636,7 +6616,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -6650,7 +6630,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -6667,19 +6647,19 @@ msgstr "" # type: Content of: <refentry><refnamediv><refname> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "cdrom" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "/cdrom/::Mount \"foo\";" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -6700,13 +6680,13 @@ msgstr "" "す。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "gpgv" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -6717,18 +6697,18 @@ msgstr "" "す。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "CompressionTypes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -6746,19 +6726,19 @@ msgstr "" "す。構文は以下のようになります。<placeholder type=\"synopsis\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "Acquire::CompressionTypes::Order:: \"gz\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -6786,13 +6766,13 @@ msgstr "" "<literal>bz2</literal> は自動的に追加されるため、明示する必要はありません。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 #, fuzzy #| msgid "" #| "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</" @@ -6809,9 +6789,9 @@ 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 " +"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 " @@ -6828,21 +6808,21 @@ msgstr "" "す。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:449 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 a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "GzipIndexes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -6851,12 +6831,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "Languages" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -6869,13 +6849,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -6899,7 +6879,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -6910,13 +6890,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "ディレクトリ" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -6936,7 +6916,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -6958,7 +6938,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -6973,7 +6953,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -6985,7 +6965,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -7003,7 +6983,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -7023,7 +7003,7 @@ msgstr "" "<filename>/tmp/staging/var/lib/dpkg/status</filename> から探します。" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -7035,13 +7015,13 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "DSelect での APT" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -7051,13 +7031,13 @@ msgstr "" "設定項目で、デフォルトの動作を制御します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "Clean" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -7074,7 +7054,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." @@ -7084,13 +7064,13 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "Updateoptions" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." @@ -7099,13 +7079,13 @@ msgstr "" "されます。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "PromptAfterUpdate" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." @@ -7115,13 +7095,13 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "APT が dpkg を呼ぶ方法" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." @@ -7131,7 +7111,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -7141,18 +7121,18 @@ msgstr "" "ければなりません。また、各リストは単一の引数として &dpkg; に渡されます。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "Pre-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "Post-Invoke" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7166,13 +7146,13 @@ msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "Pre-Install-Pkgs" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7188,7 +7168,7 @@ msgstr "" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -7204,13 +7184,13 @@ msgstr "" # type: Content of: <refentry><refsect1><refsect2><title> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "Run-Directory" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." @@ -7220,13 +7200,13 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "Build-options" # type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." @@ -7235,12 +7215,12 @@ msgstr "" "ます。デフォルトでは署名を無効にし、全バイナリを生成します。" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "dpkg トリガの使い方 (および関連オプション)" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -7255,7 +7235,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -7269,7 +7249,7 @@ msgstr "" "DPkg::TriggersPending \"true\";" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -7283,12 +7263,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "DPkg::NoTriggers" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -7301,12 +7281,12 @@ msgstr "" # type: <tag></tag> #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "PackageManager::Configure" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -7323,12 +7303,12 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "DPkg::ConfigurePending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -7339,12 +7319,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "DPkg::TriggersPending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -7354,12 +7334,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "PackageManager::UnpackAll" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -7371,12 +7351,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "OrderList::Score::Immediate" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -7394,7 +7374,7 @@ msgstr "" "};" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -7408,12 +7388,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "Periodic オプションと Archives オプション" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -7427,12 +7407,12 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "デバッグオプション" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -7443,7 +7423,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -7454,7 +7434,7 @@ msgstr "" "にします。" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -7465,7 +7445,7 @@ msgstr "" "literal>) を行う場合に使用します。" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -7477,7 +7457,7 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." @@ -7486,59 +7466,59 @@ msgstr "" "を無効にします。" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "以下は apt に対するデバッグオプションのすべてです。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" "<literal>cdrom://</literal> ソースへのアクセスに関する情報を出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "FTP を用いたパッケージのダウンロードに関する情報を出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "HTTP を用いたパッケージのダウンロードに関する情報を出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "<literal>Debug::Acquire::https</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "HTTPS を用いたパッケージのダウンロードに関する情報を出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "<literal>Debug::Acquire::gpgv</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." @@ -7546,12 +7526,12 @@ msgstr "" "<literal>gpg</literal> を用いた暗号署名の検証に関する情報を出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "<literal>Debug::aptcdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." @@ -7560,22 +7540,22 @@ msgstr "" "します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "<literal>Debug::BuildDeps</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "&apt-get; での構築依存関係解決のプロセスを説明します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "<literal>Debug::Hashes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." @@ -7583,12 +7563,12 @@ msgstr "" "<literal>apt</literal> ライブラリが生成した、暗号化ハッシュを出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "<literal>Debug::IdentCDROM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -7598,12 +7578,12 @@ msgstr "" "システムにある使用済・未使用ブロックの数からの情報を含めないようにします。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "<literal>Debug::NoLocking</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." @@ -7612,23 +7592,23 @@ msgstr "" "<quote><literal>apt-get update</literal></quote> を実行できるようになります。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "<literal>Debug::pkgAcquire</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" "グローバルダウンロードキューに対する項目の追加・削除の際にログを出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "<literal>Debug::pkgAcquire::Auth</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." @@ -7637,12 +7617,12 @@ msgstr "" "ジやエラーを出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "<literal>Debug::pkgAcquire::Diffs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." @@ -7651,12 +7631,12 @@ msgstr "" "します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "<literal>Debug::pkgAcquire::RRed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." @@ -7665,24 +7645,24 @@ msgstr "" "リストへのパッチ適用に関する情報を出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" "実際のダウンロードを行う際の、サブプロセスとのやりとりをログに出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "<literal>Debug::pkgAutoRemove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." @@ -7691,12 +7671,12 @@ msgstr "" "に出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "<literal>Debug::pkgDepCache::AutoInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -7711,12 +7691,12 @@ msgstr "" "路に対応しています。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "<literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -7733,22 +7713,22 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "<literal>Debug::pkgInitConfig</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "起動時に、標準エラー出力へデフォルト設定を出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "<literal>Debug::pkgDPkgPM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." @@ -7757,12 +7737,12 @@ msgstr "" "切られます。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "<literal>Debug::pkgDPkgProgressReporting</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." @@ -7771,12 +7751,12 @@ msgstr "" "を解析中に発生したエラーを出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "<literal>Debug::pkgOrderList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." @@ -7785,33 +7765,33 @@ msgstr "" "のトレースを生成します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "&dpkg; を呼び出す際に、実行手順を追跡した状態メッセージを出力します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "<literal>Debug::pkgPolicy</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "起動時の各パッケージの優先度を表示します。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "<literal>Debug::pkgProblemResolver</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." @@ -7820,12 +7800,12 @@ msgstr "" "した場合にのみ、適用されます)。" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "<literal>Debug::pkgProblemResolver::ShowScores</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -7833,12 +7813,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "<literal>Debug::sourceList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." @@ -7848,7 +7828,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." @@ -7858,14 +7838,14 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "&file-aptconf;" # type: Content of: <refentry><refsect1><para> #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." @@ -7967,8 +7947,8 @@ msgstr "" 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 either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -8433,7 +8413,7 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" @@ -8459,7 +8439,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -9442,7 +9422,7 @@ msgstr "" #: 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 [component1] [component2] [...]" # type: Content of: <refentry><refsect1><para> @@ -9510,30 +9490,9 @@ msgstr "" "にアクセスするのに便利です。APT は、帯域の狭いサイトを効率よく扱うのに、異な" "るホストへは、接続を並行して行うようにもしています。" -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:112 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 +#: sources.list.5.xml:112 msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " @@ -9547,12 +9506,12 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "例:" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -9565,19 +9524,19 @@ msgstr "" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "URI の仕様" # type: Content of: <refentry><refsect1><title> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "ファイル" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -9588,7 +9547,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." @@ -9599,7 +9558,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -9616,7 +9575,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -9635,13 +9594,13 @@ msgstr "" "れます。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "copy" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -9652,18 +9611,18 @@ msgstr "" "て、APT でコピーを行う場合に便利です。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "rsh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "ssh" # type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -9678,12 +9637,12 @@ msgstr "" "します。" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "さらに認識できる URI タイプ" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -9697,7 +9656,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -9707,7 +9666,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." @@ -9716,61 +9675,38 @@ msgstr "" "free 用のローカル (または NFS) アーカイブを使用します。" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "deb file:/home/jason/debian stable main contrib non-free" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "上記同様ですが、不安定版 (開発版) を使用します。" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "deb file:/home/jason/debian unstable main contrib non-free" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "上記のソース行" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "deb-src file:/home/jason/debian unstable main contrib non-free" -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, fuzzy, no-wrap -#| 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" -" " - # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." @@ -9780,14 +9716,14 @@ msgstr "" # type: <example></example> #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "deb http://archive.debian.org/debian-archive hamm main" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." @@ -9797,14 +9733,14 @@ msgstr "" # type: <example></example> #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "deb ftp://ftp.debian.org/debian &stable-codename; contrib" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -9818,13 +9754,13 @@ msgstr "" # type: <example></example> #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "deb ftp://ftp.debian.org/debian unstable contrib" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, fuzzy, no-wrap #| msgid "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" @@ -9832,7 +9768,7 @@ msgstr "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 #, fuzzy #| msgid "" #| "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-" @@ -9861,7 +9797,7 @@ msgstr "" # type: Content of: <refentry><refsect1><para> #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "&apt-cache; &apt-conf;" @@ -11049,13 +10985,28 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" msgid "Which will use the already fetched archives on the disc." msgstr "これで、disc にある取得済みのアーカイブを使用するようになります。" -# type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> +#, 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 "" -#~ "Update the local keyring with the keyring of Debian archive keys and " -#~ "removes from the keyring the archive keys which are no longer valid." +#~ "deb http://ftp.debian.org/debian &stable-codename; main\n" +#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" #~ msgstr "" -#~ "Debian アーカイブキーで、ローカルキーリングを更新し、もう有効でないキーを" -#~ "キーリングから削除します。" +#~ "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>" diff --git a/doc/po/pl.po b/doc/po/pl.po index 309fe2637..08c1b1660 100644 --- a/doc/po/pl.po +++ b/doc/po/pl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.25.3\n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-03-18 22:00+0100\n" "Last-Translator: Robert Luberda <robert@debian.org>\n" "Language-Team: <debian-l10n-polish@lists.debian.org>\n" @@ -787,7 +787,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -810,7 +810,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -1335,8 +1335,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "opcje" @@ -1363,7 +1363,7 @@ msgstr "" "<literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1391,12 +1391,12 @@ msgstr "" "Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1503,7 +1503,7 @@ msgstr "<option>--no-act</option>" #| "<literal>APT::Cache::RecurseDepends</literal>." msgid "" "Per default the <literal>depends</literal> and <literal>rdepends</literal> " -"print all dependencies. This can be tweaked with these flags which will omit " +"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>." @@ -1514,7 +1514,7 @@ msgstr "" "konfiguracyjnym: <literal>APT::Cache::RecurseDepends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "<option>-f</option>" @@ -1534,8 +1534,7 @@ msgstr "" "konfiguracyjnym: <literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1661,14 +1660,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Pliki" @@ -1679,10 +1678,10 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 msgid "See Also" msgstr "Zobacz także" @@ -1694,7 +1693,7 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnostyka" @@ -1838,12 +1837,12 @@ msgstr "" "\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Opcje" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1889,7 +1888,7 @@ msgstr "" "CDROM::Rename</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "<option>-m</option>" @@ -1949,17 +1948,17 @@ msgstr "" "znajdzie wszystkie takie pliki." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "<option>--just-print</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "<option>--recon</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "<option>--no-act</option>" @@ -2106,7 +2105,7 @@ msgid "Just show the contents of the configuration space." msgstr "Wyświetla zawartość przestrzeni konfiguracji." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -2184,7 +2183,7 @@ msgstr "" "config.XXXX</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "<option>-t</option>" @@ -2433,7 +2432,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "clean" @@ -2902,8 +2901,8 @@ msgid "" "free</literal>" msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "" @@ -3107,20 +3106,20 @@ msgid "" "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 #, fuzzy msgid "" "Use a binary caching DB. This has no effect on the generate command. " @@ -3131,7 +3130,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3145,13 +3144,13 @@ msgstr "" "pliku konfiguracyjnym: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 #, fuzzy msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " @@ -3165,12 +3164,12 @@ msgstr "" "<literal>APT::Cache::Generate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3180,13 +3179,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 #, fuzzy msgid "" "Select the source override file to use with the <literal>sources</literal> " @@ -3198,13 +3197,13 @@ msgstr "" "konfiguracyjnym: <literal>APT::Cache::Installed</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 #, fuzzy msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" @@ -3214,14 +3213,14 @@ msgstr "" "pliku konfiguracyjnym: <literal>APT::Cache::NamesOnly</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 #, fuzzy #| msgid "<option>-a</option>" msgid "<option>--arch</option>" msgstr "<option>-a</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 #, fuzzy #| msgid "" #| "If the command is either <literal>install</literal> or <literal>remove</" @@ -3241,13 +3240,13 @@ msgstr "" "AutomaticRemove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 #, fuzzy msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>--version</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3261,13 +3260,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 #, fuzzy msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>--version</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3277,19 +3276,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 msgid "Examples" msgstr "Przykłady" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> packages <replaceable>katalog</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3297,7 +3296,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3368,11 +3367,10 @@ msgid "" "<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> <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> </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> </" @@ -3426,7 +3424,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 #, fuzzy #| msgid "" #| "<command>apt-get</command> is the command-line tool for handling " @@ -3446,13 +3444,13 @@ msgstr "" "&wajig;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "update" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -3476,13 +3474,13 @@ msgstr "" "<filename>Packages.gz</filename> nie jest wcześniej znany." #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "upgrade" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -3507,13 +3505,13 @@ msgstr "" "wcześniej wykonać <literal>update</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "dselect-upgrade" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -3531,13 +3529,13 @@ msgstr "" "nowych)." #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "dist-upgrade" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -3561,13 +3559,13 @@ msgstr "" "poszczególnych pakietów." #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "install" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -3597,7 +3595,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -3615,7 +3613,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." @@ -3625,7 +3623,7 @@ msgstr "" "ostrożnie." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -3646,7 +3644,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." @@ -3656,7 +3654,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -3677,13 +3675,13 @@ msgstr "" "lub \"$\", można też stworzyć bardziej specyficzne wyrażenie regularne." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "remove" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -3697,12 +3695,12 @@ msgstr "" "pakiet zostanie zainstalowany zamiast zostać usunięty." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "purge" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -3713,18 +3711,18 @@ msgstr "" "wszystkie pliki konfiguracyjne)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "source" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." @@ -3739,7 +3737,7 @@ msgstr "" "wydanie</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -3755,7 +3753,7 @@ msgstr "" "jest zainstalowana lub możliwa do zainstalowania." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 #, fuzzy #| msgid "" #| "If the <option>--compile</option> option is specified then the package " @@ -3764,10 +3762,9 @@ msgstr "" #| "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> 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." +"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 "" "Jeżeli podano opcję <option>--compile</option>, to pakiet źródłowy zostanie " "skompilowany do pakietu binarnego .deb za pomocą programu <command>dpkg-" @@ -3776,7 +3773,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -3792,7 +3789,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -3803,36 +3800,33 @@ msgstr "" "ściągnięte oryginalne źródła programu ze strony jego autorów." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "build-dep" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: 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. 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." +"attempt to satisfy the build dependencies for a source package." msgstr "" "<literal>build-dep</literal> powoduje, że apt-get zainstaluje/usunie pakiety " "tak, żeby spełnić zależności wymagane do zbudowania danego pakietu " "źródłowego." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "check" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." @@ -3841,20 +3835,20 @@ msgstr "" "bufor (cache) pakietów i szuka zepsutych pakietów." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: apt-get.8.xml:282 msgid "" "<literal>download</literal> will download the given binary package into the " -"current directory." +"current directoy." msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -3873,13 +3867,13 @@ msgstr "" "literal>, aby zwolnić trochę miejsca na dysku." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "autoclean" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -3899,12 +3893,12 @@ msgstr "" "zawierających zainstalowane pakiety." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "autoremove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 #, fuzzy #| msgid "" #| "<literal>autoremove</literal> is used to remove packages that were " @@ -3912,20 +3906,20 @@ msgstr "autoremove" #| "are no more needed." msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" "<literal>autoremove</literal> jest używane do usuwania pakietów, które " "zostały zainstalowane automatycznie, żeby rozwiązać zależności, i nie są już " "potrzebne." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -3938,12 +3932,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "<option>--no-install-recommends</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." @@ -3952,14 +3946,14 @@ msgstr "" "Pozycja w pliku konfiguracyjnym: <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 #, fuzzy #| msgid "<option>--no-upgrade</option>" msgid "<option>--install-suggests</option>" msgstr "<option>--no-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 #, fuzzy #| msgid "" #| "Do not consider recommended packages as a dependency for installing. " @@ -3972,13 +3966,13 @@ msgstr "" "Pozycja w pliku konfiguracyjnym: <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "<option>--download-only</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." @@ -3988,13 +3982,13 @@ msgstr "" "Download-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "<option>--fix-broken</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -4021,18 +4015,18 @@ msgstr "" "konfiguracyjnym: <literal>APT::Get::Fix-Broken</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "<option>--ignore-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "<option>--fix-missing</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -4051,13 +4045,13 @@ msgstr "" "konfiguracyjnym: <literal>APT::Get::Fix-Missing</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "<option>--no-download</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -4070,7 +4064,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -4090,18 +4084,18 @@ msgstr "" "spodziewa. Pozycja w pliku konfiguracyjnym: <literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "<option>--simulate</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "<option>--dry-run</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -4112,7 +4106,7 @@ msgstr "" "Get::Simulate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -4132,7 +4126,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -4146,23 +4140,23 @@ msgstr "" "znana (rzadkość)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "<option>-y</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "<option>--yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "<option>--assume-yes</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -4178,18 +4172,18 @@ msgstr "" "Assume-Yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "<option>-u</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "<option>--show-upgraded</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." @@ -4199,18 +4193,18 @@ msgstr "" "Upgraded</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "<option>-V</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "<option>--verbose-versions</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." @@ -4219,41 +4213,23 @@ msgstr "" "konfiguracyjnym: <literal>APT::Get::Show-Versions</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -#, fuzzy -#| msgid "<option>--recurse</option>" -msgid "<option>--host-architecture</option>" -msgstr "<option>--recurse</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "<option>-b</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "<option>--compile</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "<option>--build</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." @@ -4262,13 +4238,13 @@ msgstr "" "konfiguracyjnym: <literal>APT::Get::Compile</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "<option>--ignore-hold</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -4282,13 +4258,13 @@ msgstr "" "<literal>APT::Ignore-Hold</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "<option>--no-upgrade</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -4301,7 +4277,7 @@ msgstr "" "<literal>APT::Get::Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 #, fuzzy #| msgid "<option>--no-upgrade</option>" msgid "<option>--only-upgrade</option>" @@ -4309,7 +4285,7 @@ msgstr "<option>--no-upgrade</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 #, fuzzy #| msgid "" #| "Do not upgrade packages; When used in conjunction with <literal>install</" @@ -4328,13 +4304,13 @@ msgstr "" "<literal>APT::Get::Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "<option>--force-yes</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -4350,13 +4326,13 @@ msgstr "" "force-yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "<option>--print-uris</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -4378,13 +4354,13 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "<option>--purge</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -4398,13 +4374,13 @@ msgstr "" "pliku konfiguracyjnym: <literal>APT::Get::Purge</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "<option>--reinstall</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." @@ -4413,13 +4389,13 @@ msgstr "" "Pozycja w pliku konfiguracyjnym: <literal>APT::Get::ReInstall</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "<option>--list-cleanup</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -4436,18 +4412,18 @@ msgstr "" "konfiguracyjnym: <literal>APT::Get::List-Cleanup</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "<option>--target-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "<option>--default-release</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -4470,13 +4446,13 @@ msgstr "" "stronę podręcznika &apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "<option>--trivial-only</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -4490,13 +4466,13 @@ msgstr "" "Get::Trivial-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "<option>--no-remove</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." @@ -4506,12 +4482,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "<option>--auto-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -4525,13 +4501,13 @@ msgstr "" "AutomaticRemove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "<option>--only-source</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -4550,23 +4526,23 @@ msgstr "" "Only-Source</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "<option>--diff-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "<option>--dsc-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "<option>--tar-only</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -4577,13 +4553,13 @@ msgstr "" "Dsc-Only</literal> oraz <literal>APT::Get::Tar-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "<option>--arch-only</option>" # #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." @@ -4594,12 +4570,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "<option>--allow-unauthenticated</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -4610,7 +4586,7 @@ msgstr "" "w pliku konfiguracyjnym: <literal>APT::Get::AllowUnauthenticated</literal>." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" @@ -4620,7 +4596,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -4632,7 +4608,7 @@ msgstr "" # #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." @@ -4641,22 +4617,22 @@ msgstr "" "w przypadku błędu." #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "AUTORZY ORYGINAŁU" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "&apt-author.jgunthorpe;" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "OBECNI AUTORZY" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "&apt-author.team;" @@ -4786,33 +4762,30 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" +"Aktualizuje lokalną składnicę kluczy używając składnicy kluczy archiwum " +"Debiana i usuwa z lokalnej składnicy nieaktualne już klucze archiwów Debiana." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 #, fuzzy #| msgid "update" msgid "net-update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4821,17 +4794,25 @@ msgstr "" "opisanymi w poprzednim rozdziale." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>nazwa_pliku</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: 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 " "<filename>trusted.gpg</filename> file as well as on all parts in the " -"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</" +"<filename>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" @@ -4842,44 +4823,44 @@ msgstr "" "kluczy, co oznacza na przykład to, że nowe klucze będą dodawane właśnie tam." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Lokalna składnica zaufanych kluczy archiwum." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Składnica zaufanych kluczy archiwum Debiana." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Składnica usuniętych zaufanych kluczy archiwum Debiana." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" @@ -5508,12 +5489,11 @@ msgstr "" #| "characters. Otherwise they will be silently ignored." msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." 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 " @@ -5697,24 +5677,13 @@ msgid "" "compiled for." msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "Default-Release" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -5723,25 +5692,25 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "Ignore-Hold" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 #, fuzzy msgid "Clean-Installed" msgstr "B<--installed>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -5750,12 +5719,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -5788,12 +5757,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -5804,12 +5773,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -5829,63 +5798,63 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "Get" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "Cache" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "CDROM" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -5897,67 +5866,54 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 msgid "" -"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." +"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." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -msgid "Min-ValidTime" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -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 "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -5967,37 +5923,37 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 #, fuzzy msgid "Source-Symlinks" msgstr "Sources" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "http" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -6008,7 +5964,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -6022,7 +5978,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -6030,7 +5986,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -6042,7 +5998,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -6052,7 +6008,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -6060,12 +6016,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "https" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -6075,7 +6031,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -6096,12 +6052,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "ftp" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -6120,7 +6076,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -6130,7 +6086,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -6139,7 +6095,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -6149,18 +6105,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "cdrom" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -6173,12 +6129,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "gpgv" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -6186,18 +6142,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -6209,19 +6165,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "Acquire::CompressionTypes::Order:: \"gz\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -6238,20 +6194,20 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 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 " +"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 " @@ -6259,20 +6215,20 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:449 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 a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -6281,12 +6237,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -6299,13 +6255,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -6328,19 +6284,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -6352,7 +6308,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -6365,7 +6321,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -6375,7 +6331,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -6383,7 +6339,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -6394,7 +6350,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -6407,7 +6363,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -6418,12 +6374,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -6431,13 +6387,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 #, fuzzy msgid "Clean" msgstr "B<clean>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -6448,51 +6404,51 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 #, fuzzy msgid "Updateoptions" msgstr "opcje" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -6500,17 +6456,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -6519,12 +6475,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -6534,7 +6490,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -6544,37 +6500,37 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 #, fuzzy msgid "Build-options" msgstr "opcje" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -6589,7 +6545,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -6603,7 +6559,7 @@ msgstr "" "DPkg::TriggersPending \"true\";" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -6617,12 +6573,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "DPkg::NoTriggers" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -6634,12 +6590,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "PackageManager::Configure" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -6655,12 +6611,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "DPkg::ConfigurePending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -6671,12 +6627,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "DPkg::TriggersPending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -6686,12 +6642,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "PackageManager::UnpackAll" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -6703,12 +6659,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "OrderList::Score::Immediate" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -6726,7 +6682,7 @@ msgstr "" "};" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -6740,12 +6696,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -6754,13 +6710,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 #, fuzzy msgid "Debug options" msgstr "opcje" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -6771,7 +6727,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -6779,7 +6735,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -6787,7 +6743,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -6797,7 +6753,7 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 #, fuzzy msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " @@ -6807,104 +6763,104 @@ msgstr "" "in CDROM IDs." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "<literal>Debug::Acquire::https</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "<literal>Debug::Acquire::gpgv</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "<literal>Debug::aptcdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "<literal>Debug::BuildDeps</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "<literal>Debug::Hashes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "<literal>Debug::IdentCDROM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -6912,93 +6868,93 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "<literal>Debug::NoLocking</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "<literal>Debug::pkgAcquire</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "<literal>Debug::pkgAcquire::Auth</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "<literal>Debug::pkgAcquire::Diffs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "<literal>Debug::pkgAcquire::RRed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "<literal>Debug::pkgAutoRemove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "<literal>Debug::pkgDepCache::AutoInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -7008,12 +6964,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "<literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -7030,91 +6986,91 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "<literal>Debug::pkgInitConfig</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "<literal>Debug::pkgDPkgPM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "<literal>Debug::pkgDPkgProgressReporting</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "<literal>Debug::pkgOrderList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "<literal>Debug::pkgPolicy</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "<literal>Debug::pkgProblemResolver</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "<literal>Debug::pkgProblemResolver::ShowScores</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -7122,32 +7078,32 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "<literal>Debug::sourceList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "&file-aptconf;" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." @@ -7229,8 +7185,8 @@ msgstr "" 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 either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -7592,7 +7548,7 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" @@ -7616,7 +7572,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -8405,7 +8361,7 @@ msgstr "" #: 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 dystrybucja [komponent1] [komponent2] [...]" #. type: Content of: <refentry><refsect1><para> @@ -8478,27 +8434,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -8511,12 +8446,12 @@ msgstr "" "komputerami w Internecie)." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "Kilka przykładów:" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, fuzzy, no-wrap #| msgid "" #| "deb http://http.us.debian.org/debian stable main contrib non-free\n" @@ -8532,17 +8467,17 @@ msgstr "" " " #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "Określanie URI" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "file" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -8553,7 +8488,7 @@ msgstr "" "archiwów." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." @@ -8563,7 +8498,7 @@ msgstr "" "list." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -8580,7 +8515,7 @@ msgstr "" "bezpieczny." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -8599,12 +8534,12 @@ msgstr "" "używające http zostaną zignorowane." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "copy" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -8616,17 +8551,17 @@ msgstr "" "skopiowania plików przy użyciu APT." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "rsh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "ssh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -8642,12 +8577,12 @@ msgstr "" "ze zdalnego komputera." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "więcej rozpoznawanych typów URI" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -8669,7 +8604,7 @@ msgstr "" "citerefentry>." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -8678,7 +8613,7 @@ msgstr "" "ssh, rsh. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." @@ -8687,59 +8622,36 @@ msgstr "" "debian dla zasobów stable/main, stable/contrib i stable/non-free." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "deb file:/home/jason/debian stable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" "Jak wyżej, z tą różnicą że używa dystrybucji niestabilnej (deweloperskiej)." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "deb file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "Linie źródeł dla powyższego przykładu" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "deb-src file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, fuzzy, no-wrap -#| 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" -" " - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." @@ -8748,13 +8660,13 @@ msgstr "" "org i dystrybucji hamm/main." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "deb http://archive.debian.org/debian-archive hamm main" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 #, fuzzy #| msgid "" #| "Uses FTP to access the archive at ftp.debian.org, under the debian " @@ -8767,14 +8679,14 @@ msgstr "" "dystrybucji stable/contrib." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, fuzzy, no-wrap #| msgid "deb ftp://ftp.debian.org/debian stable contrib" msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "deb ftp://ftp.debian.org/debian stable contrib" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -8787,20 +8699,20 @@ msgstr "" "to pojedyncza sesja FTP będzie użyta w celu uzyskania dostępu do obu zasobów." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "deb ftp://ftp.debian.org/debian unstable contrib" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, fuzzy, no-wrap #| msgid "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 #, fuzzy #| msgid "" #| "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-" @@ -8828,7 +8740,7 @@ msgstr "" "<placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "&apt-cache;, &apt-conf;" @@ -10357,13 +10269,23 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" 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 "" -#~ "Update the local keyring with the keyring of Debian archive keys and " -#~ "removes from the keyring the archive keys which are no longer valid." +#~ "deb http://ftp.debian.org/debian &stable-codename; main\n" +#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" #~ msgstr "" -#~ "Aktualizuje lokalną składnicę kluczy używając składnicy kluczy archiwum " -#~ "Debiana i usuwa z lokalnej składnicy nieaktualne już klucze archiwów " -#~ "Debiana." +#~ "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>" diff --git a/doc/po/pt.po b/doc/po/pt.po index a96a2c97a..e3d699bd0 100644 --- a/doc/po/pt.po +++ b/doc/po/pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.8.0~pre1\n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2010-08-25 23:07+0100\n" "Last-Translator: Américo Monteiro <a_monteiro@netcabo.pt>\n" "Language-Team: Portuguese <traduz@debianpt.org>\n" @@ -762,7 +762,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -783,7 +783,7 @@ msgstr "" "a partir dos metadados do pacote." #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -1279,8 +1279,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "opções" @@ -1306,7 +1306,7 @@ msgstr "" "<literal>Dir::Cache::pkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "<option>-s</option>" @@ -1332,12 +1332,12 @@ msgstr "" "pacote. Item de Configuração: <literal>Dir::Cache::srcpkgcache</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "<option>-q</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "<option>--quiet</option>" @@ -1427,7 +1427,7 @@ msgstr "<option>--no-enhances</option>" #| "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 tweaked with these flags which will omit " +"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>." @@ -1439,7 +1439,7 @@ msgstr "" "ex. <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:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "<option>-f</option>" @@ -1458,8 +1458,7 @@ msgstr "" "<literal>APT::Cache::ShowFull</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "<option>-a</option>" @@ -1576,14 +1575,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "&apt-commonoptions;" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "Ficheiros" @@ -1594,10 +1593,10 @@ msgstr "&file-sourceslist; &file-statelists;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 msgid "See Also" msgstr "Veja também" @@ -1608,7 +1607,7 @@ msgstr "&apt-conf;, &sources-list;, &apt-get;" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "Diagnóstico" @@ -1738,12 +1737,12 @@ msgstr "" "\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "Opções" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "<option>-d</option>" @@ -1787,7 +1786,7 @@ msgstr "" "CDROM::Rename</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "<option>-m</option>" @@ -1842,17 +1841,17 @@ msgstr "" "estranhos. Demora muito mais tempo a sondar o CD mas irá apanhá-los a todos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "<option>--just-print</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "<option>--recon</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "<option>--no-act</option>" @@ -1996,7 +1995,7 @@ msgid "Just show the contents of the configuration space." msgstr "Apenas mostra o conteúdo do espaço de configuração." #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 msgid "&apt-conf;" msgstr "&apt-conf;" @@ -2075,7 +2074,7 @@ msgstr "" "configuração.XXXX</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "<option>-t</option>" @@ -2352,7 +2351,7 @@ msgstr "" "definições requeridas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "clean" @@ -2918,8 +2917,8 @@ msgstr "" "distribuição, tipicamente isto é algo como <literal>main contrib non-free</" "literal>" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "Architectures" @@ -3145,25 +3144,43 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-ftparchive.1.xml:531 +#, fuzzy +#| msgid "" +#| "Values for the additional metadata fields in the Release file are taken " +#| "from the corresponding variables under <literal>APT::FTPArchive::Release</" +#| "literal>, e.g. <literal>APT::FTPArchive::Release::Origin</literal>. The " +#| "supported fields are: <literal>Origin</literal>, <literal>Label</" +#| "literal>, <literal>Suite</literal>, <literal>Version</literal>, " +#| "<literal>Codename</literal>, <literal>Date</literal>, <literal>Valid-" +#| "Until</literal>, <literal>Architectures</literal>, <literal>Components</" +#| "literal>, <literal>Description</literal>." msgid "" "Generate the given checksum. These options default to on, when turned off " "the generated index files will not have the checksum fields where possible. " "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" +"Valores para os campos de metadados adicionais no ficheiro Release são " +"tomados a partir das variáveis correspondentes sob <literal>APT::FTPArchive::" +"Release</literal>, ex. <literal>APT::FTPArchive::Release::Origin</literal>. " +"Os campos suportados são: <literal>Origin</literal>, <literal>Label</" +"literal>, <literal>Suite</literal>, <literal>Version</literal>, " +"<literal>Codename</literal>, <literal>Date</literal>, " +"<literal>Architectures</literal>, <literal>Components</literal>, " +"<literal>Description</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "<option>--db</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." @@ -3172,7 +3189,7 @@ msgstr "" "generate. Item de configuração: <literal>APT::FTPArchive::DB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3186,12 +3203,12 @@ msgstr "" "<literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "<option>--delink</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -3204,12 +3221,12 @@ msgstr "" "option>. Item de Configuração: <literal>APT::FTPArchive::DeLinkAct</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "<option>--contents</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -3225,12 +3242,12 @@ msgstr "" "de Configuração: <literal>APT::FTPArchive::Contents</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "<option>--source-override</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -3241,12 +3258,12 @@ msgstr "" "SourceOverride</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "<option>--readonly</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." @@ -3255,12 +3272,12 @@ msgstr "" "<literal>APT::FTPArchive::ReadOnlyDB</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "<option>--arch</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -3274,12 +3291,12 @@ msgstr "" "FTPArchive::Architecture</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "<option>APT::FTPArchive::AlwaysStat</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -3303,12 +3320,12 @@ msgstr "" "as verificações extras serão desnecessárias." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "<option>APT::FTPArchive::LongDescription</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -3323,19 +3340,19 @@ msgstr "" "<filename>Translation-en</filename> só pode ser criado no comando generate." #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 msgid "Examples" msgstr "Examples" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "<command>apt-ftparchive</command> pacotes <replaceable>directório</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" @@ -3344,7 +3361,7 @@ msgstr "" "pacotes binários (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -3410,11 +3427,10 @@ msgid "" "<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> <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> </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> </" @@ -3463,7 +3479,7 @@ msgstr "" "</group> </arg> </group>" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -3476,12 +3492,12 @@ msgstr "" "\"front-end\" como o &dselect;, &aptitude;, &synaptic; e &wajig;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -3505,12 +3521,12 @@ msgstr "" "ficheiros de pacotes não pode ser conhecido com antecedência." #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -3536,12 +3552,12 @@ msgstr "" "novas versões de pacotes." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "dselect-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -3557,12 +3573,12 @@ msgstr "" "estado (por exemplo, a remoção de pacotes antigos e a instalação de novos)." #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "dist-upgrade" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -3586,12 +3602,12 @@ msgstr "" "sobrepor as definições gerais em pacotes individuais." #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "install" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -3619,7 +3635,7 @@ msgstr "" "decisões feitas pelo sistema de resolução de conflitos do apt-get." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -3636,7 +3652,7 @@ msgstr "" "versão da distribuição ou o nome de Arquivo (stable, testing, unstable)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." @@ -3645,7 +3661,7 @@ msgstr "" "e devem ser usados com cuidado." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -3665,7 +3681,7 @@ msgstr "" "descarregadas e instaladas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." @@ -3674,7 +3690,7 @@ msgstr "" "instalação alternativa para pacotes individuais." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -3693,12 +3709,12 @@ msgstr "" "caractere '^' ou '$', para criar uma expressão regular mais específica." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "remove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -3713,12 +3729,12 @@ msgstr "" "pacote identificado será instalado em vez de removido." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "purge" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -3729,17 +3745,17 @@ msgstr "" "configuração são também apagados)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "source" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." @@ -3753,7 +3769,7 @@ msgstr "" "<literal>pkg/release</literal>, se possível." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -3769,7 +3785,7 @@ msgstr "" "instalada ou pode instalar." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 #, fuzzy #| msgid "" #| "If the <option>--compile</option> option is specified then the package " @@ -3778,10 +3794,9 @@ msgstr "" #| "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> 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." +"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 "" "Se for especificada a opção <option>--compile</option> então o pacote irá " "ser compilado para um binário .deb usando <command>dpkg-buildpackage</" @@ -3789,7 +3804,7 @@ msgstr "" "pacote fonte não será desempacotado." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -3804,7 +3819,7 @@ msgstr "" "Only-Source</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -3815,33 +3830,30 @@ msgstr "" "balls fonte." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "build-dep" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: 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. 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." +"attempt to satisfy the build dependencies for a source package." msgstr "" "<literal>build-dep</literal> faz o apt-get instalar/remover pacotes numa " "tentativa de satisfazer dependências de compilação para um pacote fonte." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "check" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." @@ -3850,19 +3862,19 @@ msgstr "" "de pacotes e verifica por dependências quebradas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: apt-get.8.xml:282 msgid "" "<literal>download</literal> will download the given binary package into the " -"current directory." +"current directoy." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -3881,12 +3893,12 @@ msgstr "" "libertar espaço do disco." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "autoclean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -3905,12 +3917,12 @@ msgstr "" "pacotes instalados sejam apagados se estiver definida para 'off'." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "autoremove" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 #, fuzzy #| msgid "" #| "<literal>autoremove</literal> is used to remove packages that were " @@ -3918,20 +3930,20 @@ msgstr "autoremove" #| "are no more needed." msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" "<literal>autoremove</literal> é usado para remover pacotes que foram " "instalados automaticamente para satisfazer dependências de algum pacote e " "que já não são necessários." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -3944,12 +3956,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "<option>--no-install-recommends</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." @@ -3958,14 +3970,14 @@ msgstr "" "de Configuração: <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 #, fuzzy #| msgid "<option>--no-suggests</option>" msgid "<option>--install-suggests</option>" msgstr "<option>--no-suggests</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 #, fuzzy #| msgid "" #| "Do not consider recommended packages as a dependency for installing. " @@ -3978,12 +3990,12 @@ msgstr "" "de Configuração: <literal>APT::Install-Recommends</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "<option>--download-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." @@ -3993,12 +4005,12 @@ msgstr "" "Download-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "<option>--fix-broken</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -4026,17 +4038,17 @@ msgstr "" "<literal>APT::Get::Fix-Broken</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "<option>--ignore-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "<option>--fix-missing</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -4055,12 +4067,12 @@ msgstr "" "de Configuração: <literal>APT::Get::Fix-Missing</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "<option>--no-download</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -4071,7 +4083,7 @@ msgstr "" "descarregados. Item de Configuração: <literal>APT::Get::Download</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -4091,17 +4103,17 @@ msgstr "" "<literal>quiet</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "<option>--simulate</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "<option>--dry-run</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -4112,7 +4124,7 @@ msgstr "" "Simulate</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -4130,7 +4142,7 @@ msgstr "" "get</literal>)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -4143,22 +4155,22 @@ msgstr "" "vazios significam quebras que não têm consequência (raro)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "<option>-y</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "<option>--yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "<option>--assume-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -4174,17 +4186,17 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "<option>-u</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "<option>--show-upgraded</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." @@ -4194,17 +4206,17 @@ msgstr "" "Upgraded</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "<option>-V</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "<option>--verbose-versions</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." @@ -4213,40 +4225,22 @@ msgstr "" "Configuração: <literal>APT::Get::Show-Versions</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -#, fuzzy -#| msgid "<option>--recurse</option>" -msgid "<option>--host-architecture</option>" -msgstr "<option>--recurse</option>" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "<option>-b</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "<option>--compile</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "<option>--build</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." @@ -4255,12 +4249,12 @@ msgstr "" "<literal>APT::Get::Compile</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "<option>--ignore-hold</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -4273,12 +4267,12 @@ msgstr "" "Item de Configuração: <literal>APT::Ignore-Hold</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "<option>--no-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -4291,12 +4285,12 @@ msgstr "" "Configuração: <literal>APT::Get::Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "<option>--only-upgrade</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 msgid "" "Do not install new packages; When used in conjunction with <literal>install</" "literal>, <literal>only-upgrade</literal> will prevent packages on the " @@ -4309,12 +4303,12 @@ msgstr "" "de Configuração: <literal>APT::Get::Only-Upgrade</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "<option>--force-yes</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -4329,12 +4323,12 @@ msgstr "" "<literal>APT::Get::force-yes</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "<option>--print-uris</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -4355,12 +4349,12 @@ msgstr "" "Configuração: <literal>APT::Get::Print-URIs</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "<option>--purge</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -4373,12 +4367,12 @@ msgstr "" "option>. Item de Configuração: <literal>APT::Get::Purge</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "<option>--reinstall</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." @@ -4387,12 +4381,12 @@ msgstr "" "Configuração: <literal>APT::Get::ReInstall</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "<option>--list-cleanup</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -4409,17 +4403,17 @@ msgstr "" "fontes. Item de Configuração: <literal>APT::Get::List-Cleanup</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "<option>--target-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "<option>--default-release</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -4442,12 +4436,12 @@ msgstr "" "Release</literal>; veja também o manual &apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "<option>--trivial-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -4461,12 +4455,12 @@ msgstr "" "Trivial-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "<option>--no-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." @@ -4476,12 +4470,12 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "<option>--auto-remove</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -4494,12 +4488,12 @@ msgstr "" "Configuração: <literal>APT::Get::AutomaticRemove</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "<option>--only-source</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -4518,22 +4512,22 @@ msgstr "" "<literal>APT::Get::Only-Source</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "<option>--diff-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "<option>--dsc-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "<option>--tar-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -4544,12 +4538,12 @@ msgstr "" "Only</literal>, e <literal>APT::Get::Tar-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "<option>--arch-only</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." @@ -4558,12 +4552,12 @@ msgstr "" "de Configuração: <literal>APT::Get::Arch-Only</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "<option>--allow-unauthenticated</option>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -4574,7 +4568,7 @@ msgstr "" "Get::AllowUnauthenticated</literal>." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" @@ -4583,7 +4577,7 @@ msgstr "" "&file-statelists;" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -4594,7 +4588,7 @@ msgstr "" "&guidesdir;, &apt-preferences;, o Howto do APT." #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." @@ -4603,22 +4597,22 @@ msgstr "" "erro." #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "AUTORES ORIGINAIS" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "&apt-author.jgunthorpe;" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "AUTORES ACTUAIS" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "&apt-author.team;" @@ -4745,33 +4739,30 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" +"Actualiza o chaveiro local com o chaveiro das chaves de arquivos Debian e " +"remove do chaveiro as chaves de arquivo que já não são válidas." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 #, fuzzy #| msgid "update" msgid "net-update" msgstr "update" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." @@ -4780,17 +4771,25 @@ msgstr "" "secção prévia." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 msgid "--keyring <replaceable>filename</replaceable>" msgstr "--keyring <replaceable>nome-de-ficheiro</replaceable>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: 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 " "<filename>trusted.gpg</filename> file as well as on all parts in the " -"<filename>trusted.gpg.d</filename> directory, though <filename>trusted.gpg</" +"<filename>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" @@ -4802,44 +4801,44 @@ msgstr "" "chaves são adicionadas a este." #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "&file-trustedgpg;" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt/trustdb.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "Base de dados local de confiança de chaves de arquivos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "Chaveiro das chaves de confiança dos arquivos Debian." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "Chaveiro das chaves de confiança removidas dos arquivos Debian." #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 msgid "&apt-get;, &apt-secure;" msgstr "&apt-get;, &apt-secure;" @@ -5565,12 +5564,11 @@ msgstr "" #| "period (.) characters - otherwise they will be silently ignored." msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." msgstr "" "todos os ficheiros em <literal>Dir::Etc::Parts</literal> em ordem ascendente " "alfanumérica sem extensão ou com \"<literal>conf</literal>\" como extensão " @@ -5824,24 +5822,13 @@ msgstr "" "analisa listas de pacotes. A predefinição interna é a arquitectura para a " "qual o APT foi compilado." -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "Default-Release" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -5854,12 +5841,12 @@ msgstr "" "'&testing-codename;', '4.0', '5.0*'. Veja também &apt-preferences;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "Ignore-Hold" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." @@ -5868,12 +5855,12 @@ msgstr "" "os pacotes segurados sejam ignorados na sua decisão de marcação." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "Clean-Installed" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -5887,12 +5874,12 @@ msgstr "" "directo de os reinstalar." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "Immediate-Configure" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -5956,12 +5943,12 @@ msgstr "" "correcção do processo de actualização." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "Force-LoopBreak" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -5978,12 +5965,12 @@ msgstr "" "tar, gzip, libc, dpkg, bash ou qualquer coisa de que estes dependem." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "Cache-Start, Cache-Grow e Cache-Limit" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -6020,24 +6007,24 @@ msgstr "" "da cache é desactivado." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "Build-Essential" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" "Define quais pacote(s) são considerados dependências essenciais de " "compilação." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "Get" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." @@ -6046,12 +6033,12 @@ msgstr "" "documentação para mais informação acerca das opções daqui." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "Cache" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." @@ -6060,12 +6047,12 @@ msgstr "" "documentação para mais informação acerca das opções daqui." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "CDROM" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." @@ -6074,17 +6061,17 @@ msgstr "" "documentação para mais informação acerca das opções de aqui." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "O Grupo Acquire" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "Check-Valid-Until" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -6105,12 +6092,12 @@ msgstr "" "ValidTime</literal> seguinte." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "Max-ValidTime" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 #, fuzzy #| msgid "" #| "Seconds the Release file should be considered valid after it was created. " @@ -6123,12 +6110,15 @@ msgstr "Max-ValidTime" #| "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 " -"(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." +"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." 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 " @@ -6141,50 +6131,12 @@ msgstr "" "do arquivo ao nome da opção. " #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -#, fuzzy -#| msgid "Max-ValidTime" -msgid "Min-ValidTime" -msgstr "Max-ValidTime" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -#, 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. " - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "PDiffs" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." @@ -6194,12 +6146,20 @@ msgstr "" "predefinição." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 +#, fuzzy +#| msgid "" +#| "Two sub-options to limit the use of PDiffs are also available: With " +#| "<literal>FileLimit</literal> can be specified how many PDiff files are " +#| "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " +#| "other hand is the maximum percentage of the size of all patches compared " +#| "to the size of the targeted file. If one of these limits is exceeded the " +#| "complete file is downloaded instead of the patches." msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" @@ -6211,12 +6171,12 @@ msgstr "" "limites for excedido, é descarregado o ficheiro completo em vez das patches." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "Queue-Mode" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -6231,12 +6191,12 @@ msgstr "" "aberta uma ligação por tipo de URI." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "Retries" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." @@ -6245,12 +6205,12 @@ msgstr "" "tentar, no número fornecido de vezes, obter ficheiros falhados." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "Source-Symlinks" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." @@ -6260,12 +6220,12 @@ msgstr "" "A predefinição é verdadeiro." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "http" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -6282,7 +6242,7 @@ msgstr "" "especificada, será usada a variável de ambiente <envar>http_proxy</envar>." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -6307,7 +6267,7 @@ msgstr "" "suporta nenhuma destas opções." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -6318,7 +6278,7 @@ msgstr "" "e tempos limite de dados." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -6337,7 +6297,7 @@ msgstr "" "As máquinas que requerem isto estão em violação de RFC 2068." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -6352,7 +6312,7 @@ msgstr "" "múltiplos servidores ao mesmo tempo.)" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -6364,12 +6324,12 @@ msgstr "" "identificador conhecido." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "https" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -6384,7 +6344,7 @@ msgstr "" "literal> ainda não é suportada." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -6421,12 +6381,12 @@ msgstr "" "host>::SslForceVersion</literal> é a opção po máquina correspondente." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "ftp" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -6459,7 +6419,7 @@ msgstr "" "$(SITE_PORT)</literal>. Cada uma é tirada do seu componente URI respectivo." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -6475,7 +6435,7 @@ msgstr "" "específica (Veja a amostra de ficheiro de configuração para exemplos)." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -6489,7 +6449,7 @@ msgstr "" "eficiência." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -6504,18 +6464,18 @@ msgstr "" "ligações IPv4. Note que a maioria dos servidores FTP não suporta RFC2428." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "cdrom" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "/cdrom/::Mount \"foo\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -6536,12 +6496,12 @@ msgstr "" "Comandos para desmontar podem ser especificados usando UMount." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "gpgv" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -6552,18 +6512,18 @@ msgstr "" "passadas ao gpgv." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "CompressionTypes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "Acquire::CompressionTypes::<replaceable>Extensão de Ficheiro</replaceable> \"<replaceable>Nome de método</replaceable>\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -6582,19 +6542,19 @@ msgstr "" "alterado. A sintaxe para isto é: <placeholder type=\"synopsis\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "Acquire::CompressionTypes::Order:: \"gz\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -6625,13 +6585,13 @@ msgstr "" "lista pois será adicionado automaticamente." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "Dir::Bin::bzip2 \"/bin/bzip2\";" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 #, fuzzy #| msgid "" #| "Note that at run time the <literal>Dir::Bin::<replaceable>Methodname</" @@ -6648,9 +6608,9 @@ 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 " +"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 " @@ -6668,20 +6628,20 @@ msgstr "" "sobrepor a lista definida, irá apenas prefixar a lista com este tipo." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:449 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 a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "GzipIndexes" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -6694,12 +6654,12 @@ msgstr "" "CPU quando constrói as caches de pacotes locais. Falso por predefinição." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "Languages" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -6721,13 +6681,13 @@ msgstr "" "de definir aqui valores impossíveis." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -6767,7 +6727,7 @@ msgstr "" "ser \"fr, de, en\". <placeholder type=\"programlisting\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -6776,12 +6736,12 @@ msgstr "" "e os manipuladores de URI. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "Directories" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -6800,7 +6760,7 @@ msgstr "" "com <filename>/</filename> ou <filename>./</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -6821,7 +6781,7 @@ msgstr "" "literal> o directório predefinido é contido em <literal>Dir::Cache</literal>" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -6836,7 +6796,7 @@ msgstr "" "ficheiro de configuração especificado por <envar>APT_CONFIG</envar>)." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -6847,7 +6807,7 @@ msgstr "" "estar feito então é carregado o ficheiro de configuração principal." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -6865,7 +6825,7 @@ msgstr "" "respectivos programas." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -6886,7 +6846,7 @@ msgstr "" "procurado em <filename>/tmp/staging/var/lib/dpkg/status</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -6904,12 +6864,12 @@ msgstr "" "expressão regular." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "APT em DSelect" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -6920,12 +6880,12 @@ msgstr "" "<literal>DSelect</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "Clean" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -6942,7 +6902,7 @@ msgstr "" "descarregar novos pacotes." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." @@ -6951,12 +6911,12 @@ msgstr "" "comandos quando é corrido para a fase de instalação." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "Updateoptions" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." @@ -6965,12 +6925,12 @@ msgstr "" "comandos quando é executado para a fase de actualização." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "PromptAfterUpdate" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." @@ -6979,12 +6939,12 @@ msgstr "" "continuar. A predefinição é avisar apenas em caso de erro." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "Como o APT chama o dpkg" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." @@ -6993,7 +6953,7 @@ msgstr "" "&dpkg;. Estas estão na secção <literal>DPkg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -7004,17 +6964,17 @@ msgstr "" "um argumento único ao &dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "Pre-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "Post-Invoke" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7027,12 +6987,12 @@ msgstr "" "bin/sh</filename>, caso algum deles falhe, o APT irá abortar." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "Pre-Install-Pkgs" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -7048,7 +7008,7 @@ msgstr "" "deb que vai instalar, um por cada linha." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -7063,12 +7023,12 @@ msgstr "" "dado ao <literal>Pre-Install-Pkgs</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "Run-Directory" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." @@ -7077,12 +7037,12 @@ msgstr "" "predefinição é <filename>/</filename>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "Build-options" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." @@ -7091,12 +7051,12 @@ msgstr "" "predefinição é desactivar a assinatura e produzir todos os binários." #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "Utilização trigger do dpkg (e opções relacionadas)" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 #, fuzzy #| msgid "" #| "APT can call dpkg in a way so it can make aggressive use of triggers over " @@ -7135,7 +7095,7 @@ msgstr "" "todos os pacotes." #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -7149,7 +7109,7 @@ msgstr "" "DPkg::TriggersPending \"true\";" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -7173,12 +7133,12 @@ msgstr "" "\"0\"/>" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "DPkg::NoTriggers" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -7199,12 +7159,12 @@ msgstr "" "chamadas unpack e remove." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "PackageManager::Configure" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -7232,12 +7192,12 @@ msgstr "" "poderia não arrancar!" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "DPkg::ConfigurePending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -7255,12 +7215,12 @@ msgstr "" "esta opção em todas excepto na última execução." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "DPkg::TriggersPending" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -7276,12 +7236,12 @@ msgstr "" "configurar este pacote." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "PackageManager::UnpackAll" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -7300,12 +7260,12 @@ msgstr "" "experimental e necessita de mais melhorias antes de se tornar realmente útil." #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "OrderList::Score::Immediate" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -7323,7 +7283,7 @@ msgstr "" "};" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -7347,12 +7307,12 @@ msgstr "" "predefinidos. <placeholder type=\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "Opções Periodic e Archives" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -7365,12 +7325,12 @@ msgstr "" "Veja o cabeçalho deste script para uma breve documentação das suas opções." #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "Opções de depuração" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -7387,7 +7347,7 @@ msgstr "" "interesse para o utilizador normal, mas algumas podem ter:" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -7398,7 +7358,7 @@ msgstr "" "remove, purge</literal>." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -7409,7 +7369,7 @@ msgstr "" "<literal>apt-get -s install</literal>) como um utilizador não root." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -7421,7 +7381,7 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." @@ -7430,17 +7390,17 @@ msgstr "" "IDs de CDROM." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "Segue-se uma lista completa de opções de depuração para o apt." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "<literal>Debug::Acquire::cdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" @@ -7448,45 +7408,45 @@ msgstr "" "literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "<literal>Debug::Acquire::ftp</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" "Escreve informação relacionada com o descarregamento de pacotes usando FTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 msgid "<literal>Debug::Acquire::http</literal>" msgstr "<literal>Debug::Acquire::http</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" "Escreve informação relacionada com o descarregamento de pacotes usando HTTP." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 msgid "<literal>Debug::Acquire::https</literal>" msgstr "<literal>Debug::Acquire::https</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "" "Escreve informação relacionada com o descarregamento de pacotes usando HTTPS." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "<literal>Debug::Acquire::gpgv</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." @@ -7495,12 +7455,12 @@ msgstr "" "criptográficas usando <literal>gpg</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 msgid "<literal>Debug::aptcdrom</literal>" msgstr "<literal>Debug::aptcdrom</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." @@ -7509,23 +7469,23 @@ msgstr "" "armazenados em CD-ROMs." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 msgid "<literal>Debug::BuildDeps</literal>" msgstr "<literal>Debug::BuildDeps</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" "Descreve os processos de resolver dependências de compilação no &apt-get;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 msgid "<literal>Debug::Hashes</literal>" msgstr "<literal>Debug::Hashes</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." @@ -7534,12 +7494,12 @@ msgstr "" "<literal>apt</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 msgid "<literal>Debug::IdentCDROM</literal>" msgstr "<literal>Debug::IdentCDROM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -7550,12 +7510,12 @@ msgstr "" "para um CD-ROM." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 msgid "<literal>Debug::NoLocking</literal>" msgstr "<literal>Debug::NoLocking</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." @@ -7565,24 +7525,24 @@ msgstr "" "literal></quote> ao mesmo tempo." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 msgid "<literal>Debug::pkgAcquire</literal>" msgstr "<literal>Debug::pkgAcquire</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" "Regista no log quando os items são adicionados ou removidos da fila de " "download global." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "<literal>Debug::pkgAcquire::Auth</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." @@ -7591,12 +7551,12 @@ msgstr "" "checksums e assinaturas criptográficas dos ficheiros descarregados." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "<literal>Debug::pkgAcquire::Diffs</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." @@ -7606,12 +7566,12 @@ msgstr "" "pacote." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "<literal>Debug::pkgAcquire::RRed</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." @@ -7620,12 +7580,12 @@ msgstr "" "do apt quando se descarrega diffs de índice em vez de índices completos." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "<literal>Debug::pkgAcquire::Worker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" @@ -7633,12 +7593,12 @@ msgstr "" "downloads." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "<literal>Debug::pkgAutoRemove</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." @@ -7647,12 +7607,12 @@ msgstr "" "de pacotes e com a remoção de pacotes não utilizados." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "<literal>Debug::pkgDepCache::AutoInstall</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -7667,12 +7627,12 @@ msgstr "" "literal>; veja <literal>Debug::pkgProblemResolver</literal> para isso." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "<literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -7702,22 +7662,22 @@ msgstr "" "pacote aparece." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "<literal>Debug::pkgInitConfig</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "Despeja a configuração predefinida para o erro standard no arranque." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "<literal>Debug::pkgDPkgPM</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." @@ -7727,12 +7687,12 @@ msgstr "" "único." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "<literal>Debug::pkgDPkgProgressReporting</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." @@ -7741,12 +7701,12 @@ msgstr "" "estado e quaisquer erros encontrados enquanto os analisa." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 msgid "<literal>Debug::pkgOrderList</literal>" msgstr "<literal>Debug::pkgOrderList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." @@ -7755,12 +7715,12 @@ msgstr "" "literal> deve passar os pacotes ao &dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "<literal>Debug::pkgPackageManager</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" @@ -7768,22 +7728,22 @@ msgstr "" "&dpkg;." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 msgid "<literal>Debug::pkgPolicy</literal>" msgstr "<literal>Debug::pkgPolicy</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "Escreve a prioridade da cada lista de pacote no arranque." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "<literal>Debug::pkgProblemResolver</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." @@ -7792,12 +7752,12 @@ msgstr "" "acontece quando é encontrado um problema de dependências complexo)." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "<literal>Debug::pkgProblemResolver::ShowScores</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -7808,12 +7768,12 @@ msgstr "" "mesma que é descrita em <literal>Debug::pkgDepCache::Marker</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 msgid "<literal>Debug::sourceList</literal>" msgstr "<literal>Debug::sourceList</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." @@ -7822,7 +7782,7 @@ msgstr "" "vendors.list</filename>." #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." @@ -7831,13 +7791,13 @@ msgstr "" "para todas as opções possíveis." #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "&file-aptconf;" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-cache;, &apt-config;, &apt-preferences;." @@ -7946,8 +7906,8 @@ msgstr "" 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 either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -8413,7 +8373,7 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" @@ -8437,7 +8397,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -9365,7 +9325,7 @@ msgstr "" #: 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 distribuição [componente1] [componente2] [...]" #. type: Content of: <refentry><refsect1><para> @@ -9436,27 +9396,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -9469,12 +9408,12 @@ msgstr "" "Internet, por exemplo)." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 msgid "Some examples:" msgstr "Alguns exemplos:" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -9486,17 +9425,17 @@ msgstr "" " " #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "Especificação da URI" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "file" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -9507,7 +9446,7 @@ msgstr "" "arquivos locais." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." @@ -9517,7 +9456,7 @@ msgstr "" "fontes." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -9534,7 +9473,7 @@ msgstr "" "método de autenticação seguro." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -9553,12 +9492,12 @@ msgstr "" "especificados no ficheiro de configuração serão ignorados." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "copy" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -9570,17 +9509,17 @@ msgstr "" "com o APT." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "rsh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "ssh" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -9595,12 +9534,12 @@ msgstr "" "para executar as transferências de ficheiros remotos." #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "tipos de URI mais reconhecíveis" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -9622,7 +9561,7 @@ msgstr "" "<manvolnum>1</manvolnum></citerefentry>." #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" @@ -9631,7 +9570,7 @@ msgstr "" "ssh, rsh. <placeholder type=\"variablelist\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." @@ -9640,59 +9579,36 @@ msgstr "" "para stable/main, stable/contrib, e stable/non-free." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "deb file:/home/jason/debian stable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" "Como em cima, excepto que usa a distribuição unstable (de desenvolvimento)." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "deb file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "Linha de fonte para o referido acima" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "deb-src file:/home/jason/debian unstable main contrib non-free" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, fuzzy, no-wrap -#| 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" -" " - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." @@ -9701,13 +9617,13 @@ msgstr "" "hamm/main." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "deb http://archive.debian.org/debian-archive hamm main" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." @@ -9716,13 +9632,13 @@ msgstr "" "usa apenas a área &stable-codename;/contrib." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "deb ftp://ftp.debian.org/debian &stable-codename; contrib" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -9735,20 +9651,20 @@ msgstr "" "uma única sessão FTP para ambas linhas de recurso." #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "deb ftp://ftp.debian.org/debian unstable contrib" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, fuzzy, no-wrap #| msgid "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "deb http://ftp.de.debian.org/debian-non-US unstable/binary-$(ARCH)/" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 #, fuzzy #| msgid "" #| "Uses HTTP to access the archive at nonus.debian.org, under the debian-non-" @@ -9776,7 +9692,7 @@ msgstr "" "\"0\"/>" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 msgid "&apt-cache; &apt-conf;" msgstr "&apt-cache; &apt-conf;" @@ -11293,12 +11209,58 @@ msgstr " # apt-get -o dir::cache::archives=\"/disc/\" dist-upgrade" 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 "" -#~ "Update the local keyring with the keyring of Debian archive keys and " -#~ "removes from the keyring the archive keys which are no longer valid." +#~ "deb http://ftp.debian.org/debian &stable-codename; main\n" +#~ "deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" #~ msgstr "" -#~ "Actualiza o chaveiro local com o chaveiro das chaves de arquivos Debian e " -#~ "remove do chaveiro as chaves de arquivo que já não são válidas." +#~ "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>" diff --git a/doc/po/pt_BR.po b/doc/po/pt_BR.po index 93f189c9c..4f4c04caf 100644 --- a/doc/po/pt_BR.po +++ b/doc/po/pt_BR.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" -"POT-Creation-Date: 2011-11-20 17:58+0100\n" +"POT-Creation-Date: 2011-06-08 16:54+0300\n" "PO-Revision-Date: 2004-09-20 17:02+0000\n" "Last-Translator: André Luís Lopes <andrelop@debian.org>\n" "Language-Team: <debian-l10n-portuguese@lists.debian.org>\n" @@ -577,7 +577,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:64 apt-cdrom.8.xml:50 apt-config.8.xml:50 -#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:121 +#: apt-extracttemplates.1.xml:46 apt-ftparchive.1.xml:59 apt-get.8.xml:114 #: apt-key.8.xml:38 apt-mark.8.xml:56 apt-secure.8.xml:43 #: apt-sortpkgs.1.xml:47 apt.conf.5.xml:42 apt_preferences.5.xml:36 #: sources.list.5.xml:36 @@ -595,7 +595,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-cache.8.xml:70 apt-get.8.xml:127 +#: apt-cache.8.xml:70 apt-get.8.xml:120 msgid "" "Unless the <option>-h</option>, or <option>--help</option> option is given, " "one of the commands below must be present." @@ -963,8 +963,8 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> #: apt-cache.8.xml:278 apt-config.8.xml:96 apt-extracttemplates.1.xml:59 -#: apt-ftparchive.1.xml:525 apt-get.8.xml:342 apt-mark.8.xml:126 -#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:577 apt.conf.5.xml:599 +#: apt-ftparchive.1.xml:525 apt-get.8.xml:331 apt-mark.8.xml:126 +#: apt-sortpkgs.1.xml:57 apt.conf.5.xml:560 apt.conf.5.xml:582 msgid "options" msgstr "" @@ -987,7 +987,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:288 apt-ftparchive.1.xml:572 apt-get.8.xml:404 +#: apt-cache.8.xml:288 apt-ftparchive.1.xml:571 apt-get.8.xml:393 #: apt-sortpkgs.1.xml:61 msgid "<option>-s</option>" msgstr "" @@ -1008,12 +1008,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>-q</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:296 apt-ftparchive.1.xml:546 apt-get.8.xml:394 +#: apt-cache.8.xml:296 apt-ftparchive.1.xml:545 apt-get.8.xml:383 msgid "<option>--quiet</option>" msgstr "" @@ -1088,14 +1088,14 @@ msgstr "" #: apt-cache.8.xml:317 msgid "" "Per default the <literal>depends</literal> and <literal>rdepends</literal> " -"print all dependencies. This can be tweaked with these flags which will omit " +"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>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:361 +#: apt-cache.8.xml:323 apt-cdrom.8.xml:124 apt-get.8.xml:350 msgid "<option>-f</option>" msgstr "" @@ -1112,8 +1112,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:584 -#: apt-get.8.xml:447 +#: apt-cache.8.xml:328 apt-cdrom.8.xml:134 apt-ftparchive.1.xml:583 msgid "<option>-a</option>" msgstr "" @@ -1209,14 +1208,14 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist> #: apt-cache.8.xml:367 apt-cdrom.8.xml:153 apt-config.8.xml:101 -#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:612 apt-get.8.xml:591 +#: apt-extracttemplates.1.xml:70 apt-ftparchive.1.xml:611 apt-get.8.xml:570 #: apt-mark.8.xml:140 apt-sortpkgs.1.xml:67 msgid "&apt-commonoptions;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cache.8.xml:372 apt-get.8.xml:596 apt-key.8.xml:175 apt-mark.8.xml:144 -#: apt.conf.5.xml:1110 apt_preferences.5.xml:697 +#: apt-cache.8.xml:372 apt-get.8.xml:575 apt-key.8.xml:172 apt-mark.8.xml:144 +#: apt.conf.5.xml:1093 apt_preferences.5.xml:697 msgid "Files" msgstr "" @@ -1227,10 +1226,10 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:379 apt-cdrom.8.xml:158 apt-config.8.xml:106 -#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:628 apt-get.8.xml:606 -#: apt-key.8.xml:196 apt-mark.8.xml:150 apt-secure.8.xml:185 -#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1116 apt_preferences.5.xml:704 -#: sources.list.5.xml:250 +#: apt-extracttemplates.1.xml:77 apt-ftparchive.1.xml:627 apt-get.8.xml:585 +#: apt-key.8.xml:193 apt-mark.8.xml:150 apt-secure.8.xml:185 +#: apt-sortpkgs.1.xml:72 apt.conf.5.xml:1099 apt_preferences.5.xml:704 +#: sources.list.5.xml:234 #, fuzzy msgid "See Also" msgstr "Consulte também" @@ -1242,7 +1241,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><title> #: apt-cache.8.xml:384 apt-cdrom.8.xml:163 apt-config.8.xml:111 -#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:632 apt-get.8.xml:612 +#: apt-extracttemplates.1.xml:81 apt-ftparchive.1.xml:631 apt-get.8.xml:591 #: apt-mark.8.xml:154 apt-sortpkgs.1.xml:76 msgid "Diagnostics" msgstr "" @@ -1342,12 +1341,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-cdrom.8.xml:94 apt-key.8.xml:161 +#: apt-cdrom.8.xml:94 apt-key.8.xml:158 msgid "Options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:540 apt-get.8.xml:356 +#: apt-cdrom.8.xml:98 apt-ftparchive.1.xml:539 apt-get.8.xml:345 msgid "<option>-d</option>" msgstr "" @@ -1383,7 +1382,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:116 apt-get.8.xml:375 +#: apt-cdrom.8.xml:116 apt-get.8.xml:364 msgid "<option>-m</option>" msgstr "" @@ -1428,17 +1427,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:143 apt-get.8.xml:406 +#: apt-cdrom.8.xml:143 apt-get.8.xml:395 msgid "<option>--just-print</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:144 apt-get.8.xml:408 +#: apt-cdrom.8.xml:144 apt-get.8.xml:397 msgid "<option>--recon</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-cdrom.8.xml:145 apt-get.8.xml:409 +#: apt-cdrom.8.xml:145 apt-get.8.xml:398 msgid "<option>--no-act</option>" msgstr "" @@ -1552,7 +1551,7 @@ msgid "Just show the contents of the configuration space." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:629 +#: apt-config.8.xml:107 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:628 #: apt-sortpkgs.1.xml:73 #, fuzzy msgid "&apt-conf;" @@ -1617,7 +1616,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-extracttemplates.1.xml:63 apt-get.8.xml:525 +#: apt-extracttemplates.1.xml:63 apt-get.8.xml:504 msgid "<option>-t</option>" msgstr "" @@ -1818,7 +1817,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:145 apt-get.8.xml:298 +#: apt-ftparchive.1.xml:145 apt-get.8.xml:287 msgid "clean" msgstr "" @@ -2280,8 +2279,8 @@ msgid "" "free</literal>" msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:394 apt.conf.5.xml:157 +#. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> +#: apt-ftparchive.1.xml:394 msgid "Architectures" msgstr "" @@ -2482,26 +2481,26 @@ msgid "" "Configuration Items: <literal>APT::FTPArchive::<replaceable>Checksum</" "replaceable></literal> and <literal>APT::FTPArchive::<replaceable>Index</" "replaceable>::<replaceable>Checksum</replaceable></literal> where " -"<literal><replaceable>Index</replaceable></literal> can be " -"<literal>Packages</literal>, <literal>Sources</literal> or <literal>Release</" -"literal> and <literal><replaceable>Checksum</replaceable></literal> can be " -"<literal>MD5</literal>, <literal>SHA1</literal> or <literal>SHA256</literal>." +"<literal>Index</literal> can be <literal>Packages</literal>, " +"<literal>Sources</literal> or <literal>Release</literal> and " +"<literal>Checksum</literal> can be <literal>MD5</literal>, <literal>SHA1</" +"literal> or <literal>SHA256</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:540 +#: apt-ftparchive.1.xml:539 msgid "<option>--db</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:542 +#: apt-ftparchive.1.xml:541 msgid "" "Use a binary caching DB. This has no effect on the generate command. " "Configuration Item: <literal>APT::FTPArchive::DB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:548 +#: apt-ftparchive.1.xml:547 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -2510,12 +2509,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:554 +#: apt-ftparchive.1.xml:553 msgid "<option>--delink</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:556 +#: apt-ftparchive.1.xml:555 msgid "" "Perform Delinking. If the <literal>External-Links</literal> setting is used " "then this option actually enables delinking of the files. It defaults to on " @@ -2524,12 +2523,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:562 +#: apt-ftparchive.1.xml:561 msgid "<option>--contents</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:564 +#: apt-ftparchive.1.xml:563 msgid "" "Perform contents generation. When this option is set and package indexes are " "being generated with a cache DB then the file listing will also be extracted " @@ -2539,12 +2538,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:572 +#: apt-ftparchive.1.xml:571 msgid "<option>--source-override</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:574 +#: apt-ftparchive.1.xml:573 msgid "" "Select the source override file to use with the <literal>sources</literal> " "command. Configuration Item: <literal>APT::FTPArchive::SourceOverride</" @@ -2552,24 +2551,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:578 +#: apt-ftparchive.1.xml:577 msgid "<option>--readonly</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:580 +#: apt-ftparchive.1.xml:579 msgid "" "Make the caching databases read only. Configuration Item: <literal>APT::" "FTPArchive::ReadOnlyDB</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:584 +#: apt-ftparchive.1.xml:583 msgid "<option>--arch</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:585 +#: apt-ftparchive.1.xml:584 msgid "" "Accept in the <literal>packages</literal> and <literal>contents</literal> " "commands only package files matching <literal>*_arch.deb</literal> or " @@ -2578,12 +2577,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:591 +#: apt-ftparchive.1.xml:590 msgid "<option>APT::FTPArchive::AlwaysStat</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:593 +#: apt-ftparchive.1.xml:592 msgid "" "&apt-ftparchive; caches as much as possible of metadata in a cachedb. If " "packages are recompiled and/or republished with the same version again, this " @@ -2597,12 +2596,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-ftparchive.1.xml:603 +#: apt-ftparchive.1.xml:602 msgid "<option>APT::FTPArchive::LongDescription</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-ftparchive.1.xml:605 +#: apt-ftparchive.1.xml:604 msgid "" "This configuration option defaults to \"<literal>true</literal>\" and should " "only be set to <literal>\"false\"</literal> if the Archive generated with " @@ -2612,27 +2611,27 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-ftparchive.1.xml:617 apt.conf.5.xml:1104 apt_preferences.5.xml:544 -#: sources.list.5.xml:209 +#: apt-ftparchive.1.xml:616 apt.conf.5.xml:1087 apt_preferences.5.xml:544 +#: sources.list.5.xml:198 #, fuzzy msgid "Examples" msgstr "Exemplos" #. type: Content of: <refentry><refsect1><para><programlisting> -#: apt-ftparchive.1.xml:623 +#: apt-ftparchive.1.xml:622 #, no-wrap msgid "<command>apt-ftparchive</command> packages <replaceable>directory</replaceable> | <command>gzip</command> > <filename>Packages.gz</filename>\n" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:619 +#: apt-ftparchive.1.xml:618 msgid "" "To create a compressed Packages file for a directory containing binary " "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-ftparchive.1.xml:633 +#: apt-ftparchive.1.xml:632 msgid "" "<command>apt-ftparchive</command> returns zero on normal operation, decimal " "100 on error." @@ -2663,11 +2662,10 @@ msgid "" "<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> <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> </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> </" @@ -2689,7 +2687,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:122 +#: apt-get.8.xml:115 msgid "" "<command>apt-get</command> is the command-line tool for handling packages, " "and may be considered the user's \"back-end\" to other tools using the APT " @@ -2698,12 +2696,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:131 apt-key.8.xml:127 +#: apt-get.8.xml:124 apt-key.8.xml:127 msgid "update" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:132 +#: apt-get.8.xml:125 msgid "" "<literal>update</literal> is used to resynchronize the package index files " "from their sources. The indexes of available packages are fetched from the " @@ -2717,12 +2715,12 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:143 guide.sgml:121 +#: apt-get.8.xml:136 guide.sgml:121 msgid "upgrade" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:144 +#: apt-get.8.xml:137 msgid "" "<literal>upgrade</literal> is used to install the newest versions of all " "packages currently installed on the system from the sources enumerated in " @@ -2737,12 +2735,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:156 +#: apt-get.8.xml:149 msgid "dselect-upgrade" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:157 +#: apt-get.8.xml:150 msgid "" "<literal>dselect-upgrade</literal> is used in conjunction with the " "traditional Debian packaging front-end, &dselect;. <literal>dselect-upgrade</" @@ -2753,12 +2751,12 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:166 guide.sgml:140 +#: apt-get.8.xml:159 guide.sgml:140 msgid "dist-upgrade" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:167 +#: apt-get.8.xml:160 msgid "" "<literal>dist-upgrade</literal> in addition to performing the function of " "<literal>upgrade</literal>, also intelligently handles changing dependencies " @@ -2772,12 +2770,12 @@ msgid "" msgstr "" #. type: <tag></tag> -#: apt-get.8.xml:179 guide.sgml:131 +#: apt-get.8.xml:172 guide.sgml:131 msgid "install" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:181 +#: apt-get.8.xml:174 msgid "" "<literal>install</literal> is followed by one or more packages desired for " "installation or upgrading. Each package is a package name, not a fully " @@ -2793,7 +2791,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:199 +#: apt-get.8.xml:192 msgid "" "A specific version of a package can be selected for installation by " "following the package name with an equals and the version of the package to " @@ -2804,14 +2802,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:206 +#: apt-get.8.xml:199 msgid "" "Both of the version selection mechanisms can downgrade packages and must be " "used with care." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:209 +#: apt-get.8.xml:202 msgid "" "This is also the target to use if you want to upgrade one or more already-" "installed packages without upgrading every package you have on your system. " @@ -2823,14 +2821,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:220 +#: apt-get.8.xml:213 msgid "" "Finally, the &apt-preferences; mechanism allows you to create an alternative " "installation policy for individual packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:224 +#: apt-get.8.xml:217 msgid "" "If no package matches the given expression and the expression contains one " "of '.', '?' or '*' then it is assumed to be a POSIX regular expression, and " @@ -2842,12 +2840,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:233 +#: apt-get.8.xml:226 msgid "remove" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:234 +#: apt-get.8.xml:227 msgid "" "<literal>remove</literal> is identical to <literal>install</literal> except " "that packages are removed instead of installed. Note the removing a package " @@ -2857,12 +2855,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:241 +#: apt-get.8.xml:234 msgid "purge" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:242 +#: apt-get.8.xml:235 msgid "" "<literal>purge</literal> is identical to <literal>remove</literal> except " "that packages are removed and purged (any configuration files are deleted " @@ -2870,24 +2868,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:246 +#: apt-get.8.xml:239 msgid "source" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:247 +#: apt-get.8.xml:240 msgid "" "<literal>source</literal> causes <command>apt-get</command> to fetch source " "packages. APT will examine the available packages to decide which source " "package to fetch. It will then find and download into the current directory " -"the newest available version of that source package while respect the " +"the newest available version of that source package while respecting the " "default release, set with the option <literal>APT::Default-Release</" "literal>, the <option>-t</option> option or per package with the " "<literal>pkg/release</literal> syntax, if possible." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:255 +#: apt-get.8.xml:248 msgid "" "Source packages are tracked separately from binary packages via <literal>deb-" "src</literal> type lines in the &sources-list; file. This means that you " @@ -2897,17 +2895,16 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:262 +#: apt-get.8.xml:255 msgid "" "If the <option>--compile</option> option is specified then the package will " -"be compiled to a binary .deb using <command>dpkg-buildpackage</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." +"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 "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:269 +#: apt-get.8.xml:260 msgid "" "A specific source version can be retrieved by postfixing the source name " "with an equals and then the version to fetch, similar to the mechanism used " @@ -2917,7 +2914,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:275 +#: apt-get.8.xml:266 msgid "" "Note that source packages are not tracked like binary packages, they exist " "only in the current directory and are similar to downloading source tar " @@ -2925,46 +2922,43 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:280 +#: apt-get.8.xml:271 msgid "build-dep" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:281 +#: apt-get.8.xml:272 msgid "" "<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 natively. If desired a " -"host-architecture can be specified with the <option>--host-architecture</" -"option> option instead." +"attempt to satisfy the build dependencies for a source package." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:287 +#: apt-get.8.xml:276 msgid "check" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:288 +#: apt-get.8.xml:277 msgid "" "<literal>check</literal> is a diagnostic tool; it updates the package cache " "and checks for broken dependencies." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:292 +#: apt-get.8.xml:281 msgid "download" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:293 +#: apt-get.8.xml:282 msgid "" "<literal>download</literal> will download the given binary package into the " -"current directory." +"current directoy." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:299 +#: apt-get.8.xml:288 msgid "" "<literal>clean</literal> clears out the local repository of retrieved " "package files. It removes everything but the lock file from " @@ -2976,12 +2970,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:308 +#: apt-get.8.xml:297 msgid "autoclean" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:309 +#: apt-get.8.xml:298 msgid "" "Like <literal>clean</literal>, <literal>autoclean</literal> clears out the " "local repository of retrieved package files. The difference is that it only " @@ -2993,25 +2987,25 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:318 +#: apt-get.8.xml:307 msgid "autoremove" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:319 +#: apt-get.8.xml:308 msgid "" "<literal>autoremove</literal> is used to remove packages that were " -"automatically installed to satisfy dependencies for other packages and are " -"now no longer needed." +"automatically installed to satisfy dependencies for some package and that " +"are no more needed." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:323 +#: apt-get.8.xml:312 msgid "changelog" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:324 +#: apt-get.8.xml:313 msgid "" "<literal>changelog</literal> downloads a package changelog and displays it " "through <command>sensible-pager</command>. The server name and base " @@ -3024,48 +3018,48 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:346 +#: apt-get.8.xml:335 msgid "<option>--no-install-recommends</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:347 +#: apt-get.8.xml:336 msgid "" "Do not consider recommended packages as a dependency for installing. " "Configuration Item: <literal>APT::Install-Recommends</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:351 +#: apt-get.8.xml:340 msgid "<option>--install-suggests</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:352 +#: apt-get.8.xml:341 msgid "" "Consider suggested packages as a dependency for installing. Configuration " "Item: <literal>APT::Install-Suggests</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:356 +#: apt-get.8.xml:345 msgid "<option>--download-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:357 +#: apt-get.8.xml:346 msgid "" "Download only; package files are only retrieved, not unpacked or installed. " "Configuration Item: <literal>APT::Get::Download-Only</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:361 +#: apt-get.8.xml:350 msgid "<option>--fix-broken</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:362 +#: apt-get.8.xml:351 msgid "" "Fix; attempt to correct a system with broken dependencies in place. This " "option, when used with install/remove, can omit any packages to permit APT " @@ -3081,17 +3075,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:375 +#: apt-get.8.xml:364 msgid "<option>--ignore-missing</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:376 +#: apt-get.8.xml:365 msgid "<option>--fix-missing</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:377 +#: apt-get.8.xml:366 msgid "" "Ignore missing packages; If packages cannot be retrieved or fail the " "integrity check after retrieval (corrupted package files), hold back those " @@ -3103,12 +3097,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:387 +#: apt-get.8.xml:376 msgid "<option>--no-download</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:388 +#: apt-get.8.xml:377 msgid "" "Disables downloading of packages. This is best used with <option>--ignore-" "missing</option> to force APT to use only the .debs it has already " @@ -3116,7 +3110,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:395 +#: apt-get.8.xml:384 msgid "" "Quiet; produces output suitable for logging, omitting progress indicators. " "More q's will produce more quiet up to a maximum of 2. You can also use " @@ -3128,17 +3122,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:405 +#: apt-get.8.xml:394 msgid "<option>--simulate</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:407 +#: apt-get.8.xml:396 msgid "<option>--dry-run</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:410 +#: apt-get.8.xml:399 msgid "" "No action; perform a simulation of events that would occur but do not " "actually change the system. Configuration Item: <literal>APT::Get::" @@ -3146,7 +3140,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:414 +#: apt-get.8.xml:403 msgid "" "Simulation run as user will deactivate locking (<literal>Debug::NoLocking</" "literal>) automatic. Also a notice will be displayed indicating that this " @@ -3157,7 +3151,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:420 +#: apt-get.8.xml:409 msgid "" "Simulate prints out a series of lines each one representing a dpkg " "operation, Configure (Conf), Remove (Remv), Unpack (Inst). Square brackets " @@ -3166,22 +3160,22 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>-y</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:427 +#: apt-get.8.xml:416 msgid "<option>--yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:428 +#: apt-get.8.xml:417 msgid "<option>--assume-yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:429 +#: apt-get.8.xml:418 msgid "" "Automatic yes to prompts; assume \"yes\" as answer to all prompts and run " "non-interactively. If an undesirable situation, such as changing a held " @@ -3191,84 +3185,68 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>-u</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:436 +#: apt-get.8.xml:425 msgid "<option>--show-upgraded</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:437 +#: apt-get.8.xml:426 msgid "" "Show upgraded packages; Print out a list of all packages that are to be " "upgraded. Configuration Item: <literal>APT::Get::Show-Upgraded</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>-V</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:442 +#: apt-get.8.xml:431 msgid "<option>--verbose-versions</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:443 +#: apt-get.8.xml:432 msgid "" "Show full versions for upgraded and installed packages. Configuration Item: " "<literal>APT::Get::Show-Versions</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:448 -msgid "<option>--host-architecture</option>" -msgstr "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:449 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>-b</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:457 +#: apt-get.8.xml:436 msgid "<option>--compile</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:458 +#: apt-get.8.xml:437 msgid "<option>--build</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:459 +#: apt-get.8.xml:438 msgid "" "Compile source packages after downloading them. Configuration Item: " "<literal>APT::Get::Compile</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:463 +#: apt-get.8.xml:442 msgid "<option>--ignore-hold</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:464 +#: apt-get.8.xml:443 msgid "" "Ignore package Holds; This causes <command>apt-get</command> to ignore a " "hold placed on a package. This may be useful in conjunction with " @@ -3277,12 +3255,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:470 +#: apt-get.8.xml:449 msgid "<option>--no-upgrade</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:471 +#: apt-get.8.xml:450 msgid "" "Do not upgrade packages; When used in conjunction with <literal>install</" "literal>, <literal>no-upgrade</literal> will prevent packages on the command " @@ -3291,12 +3269,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:477 +#: apt-get.8.xml:456 msgid "<option>--only-upgrade</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:478 +#: apt-get.8.xml:457 msgid "" "Do not install new packages; When used in conjunction with <literal>install</" "literal>, <literal>only-upgrade</literal> will prevent packages on the " @@ -3305,12 +3283,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:484 +#: apt-get.8.xml:463 msgid "<option>--force-yes</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:485 +#: apt-get.8.xml:464 msgid "" "Force yes; This is a dangerous option that will cause apt to continue " "without prompting if it is doing something potentially harmful. It should " @@ -3320,12 +3298,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:492 +#: apt-get.8.xml:471 msgid "<option>--print-uris</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:493 +#: apt-get.8.xml:472 msgid "" "Instead of fetching the files to install their URIs are printed. Each URI " "will have the path, the destination file name, the size and the expected md5 " @@ -3338,12 +3316,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:503 +#: apt-get.8.xml:482 msgid "<option>--purge</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:504 +#: apt-get.8.xml:483 msgid "" "Use purge instead of remove for anything that would be removed. An asterisk " "(\"*\") will be displayed next to packages which are scheduled to be purged. " @@ -3352,24 +3330,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:511 +#: apt-get.8.xml:490 msgid "<option>--reinstall</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:512 +#: apt-get.8.xml:491 msgid "" "Re-Install packages that are already installed and at the newest version. " "Configuration Item: <literal>APT::Get::ReInstall</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:516 +#: apt-get.8.xml:495 msgid "<option>--list-cleanup</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:517 +#: apt-get.8.xml:496 msgid "" "This option defaults to on, use <literal>--no-list-cleanup</literal> to turn " "it off. When on <command>apt-get</command> will automatically manage the " @@ -3380,17 +3358,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:526 +#: apt-get.8.xml:505 msgid "<option>--target-release</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:527 +#: apt-get.8.xml:506 msgid "<option>--default-release</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:528 +#: apt-get.8.xml:507 msgid "" "This option controls the default input to the policy engine, it creates a " "default pin at priority 990 using the specified release string. This " @@ -3404,12 +3382,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:541 +#: apt-get.8.xml:520 msgid "<option>--trivial-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:543 +#: apt-get.8.xml:522 msgid "" "Only perform operations that are 'trivial'. Logically this can be considered " "related to <option>--assume-yes</option>, where <option>--assume-yes</" @@ -3418,24 +3396,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:549 +#: apt-get.8.xml:528 msgid "<option>--no-remove</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:550 +#: apt-get.8.xml:529 msgid "" "If any packages are to be removed apt-get immediately aborts without " "prompting. Configuration Item: <literal>APT::Get::Remove</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:555 +#: apt-get.8.xml:534 msgid "<option>--auto-remove</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:556 +#: apt-get.8.xml:535 msgid "" "If the command is either <literal>install</literal> or <literal>remove</" "literal>, then this option acts like running <literal>autoremove</literal> " @@ -3444,12 +3422,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:562 +#: apt-get.8.xml:541 msgid "<option>--only-source</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:563 +#: apt-get.8.xml:542 msgid "" "Only has meaning for the <literal>source</literal> and <literal>build-dep</" "literal> commands. Indicates that the given source names are not to be " @@ -3461,22 +3439,22 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--diff-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--dsc-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:573 +#: apt-get.8.xml:552 msgid "<option>--tar-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:574 +#: apt-get.8.xml:553 msgid "" "Download only the diff, dsc, or tar file of a source archive. Configuration " "Item: <literal>APT::Get::Diff-Only</literal>, <literal>APT::Get::Dsc-Only</" @@ -3484,24 +3462,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:579 +#: apt-get.8.xml:558 msgid "<option>--arch-only</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:580 +#: apt-get.8.xml:559 msgid "" "Only process architecture-dependent build-dependencies. Configuration Item: " "<literal>APT::Get::Arch-Only</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-get.8.xml:584 +#: apt-get.8.xml:563 msgid "<option>--allow-unauthenticated</option>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-get.8.xml:585 +#: apt-get.8.xml:564 msgid "" "Ignore if packages can't be authenticated and don't prompt about it. This " "is useful for tools like pbuilder. Configuration Item: <literal>APT::Get::" @@ -3509,14 +3487,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-get.8.xml:598 +#: apt-get.8.xml:577 msgid "" "&file-sourceslist; &file-aptconf; &file-preferences; &file-cachearchives; " "&file-statelists;" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:607 +#: apt-get.8.xml:586 msgid "" "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -3524,29 +3502,29 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:613 +#: apt-get.8.xml:592 msgid "" "<command>apt-get</command> returns zero on normal operation, decimal 100 on " "error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:616 +#: apt-get.8.xml:595 msgid "ORIGINAL AUTHORS" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:617 +#: apt-get.8.xml:596 msgid "&apt-author.jgunthorpe;" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt-get.8.xml:620 +#: apt-get.8.xml:599 msgid "CURRENT AUTHORS" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-get.8.xml:622 +#: apt-get.8.xml:601 msgid "&apt-author.team;" msgstr "" @@ -3660,38 +3638,33 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-key.8.xml:131 msgid "" -"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." +"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 "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:141 +#: apt-key.8.xml:140 msgid "net-update" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:145 +#: apt-key.8.xml:144 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." +"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 "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:162 +#: apt-key.8.xml:159 msgid "" "Note that options need to be defined before the commands described in the " "previous section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:164 +#: apt-key.8.xml:161 #, fuzzy msgid "--keyring <replaceable>filename</replaceable>" msgstr "" @@ -3699,55 +3672,55 @@ msgstr "" "apt-get install <replaceable>pacote</replaceable>/testing\n" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:165 +#: apt-key.8.xml:162 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>trusted.gpg.d</filename> directory, through <filename>trusted.gpg</" "filename> is the primary keyring which means that e.g. new keys are added to " "this one." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt-key.8.xml:178 +#: apt-key.8.xml:175 msgid "&file-trustedgpg;" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:180 +#: apt-key.8.xml:177 #, fuzzy msgid "<filename>/etc/apt/trustdb.gpg</filename>" msgstr "<filename>/etc/apt.conf</>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:181 +#: apt-key.8.xml:178 msgid "Local trust database of archive keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:184 +#: apt-key.8.xml:181 msgid "<filename>/usr/share/keyrings/debian-archive-keyring.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:185 +#: apt-key.8.xml:182 msgid "Keyring of Debian archive trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt-key.8.xml:188 +#: apt-key.8.xml:185 msgid "" "<filename>/usr/share/keyrings/debian-archive-removed-keys.gpg</filename>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt-key.8.xml:189 +#: apt-key.8.xml:186 msgid "Keyring of Debian archive removed trusted keys." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt-key.8.xml:198 +#: apt-key.8.xml:195 #, fuzzy msgid "&apt-get;, &apt-secure;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -4262,12 +4235,11 @@ msgstr "" #: apt.conf.5.xml:52 msgid "" "all files in <literal>Dir::Etc::Parts</literal> in alphanumeric ascending " -"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." +"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." msgstr "" #. type: Content of: <refentry><refsect1><orderedlist><listitem><para> @@ -4439,24 +4411,13 @@ msgid "" "compiled for." msgstr "" -#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:158 -msgid "" -"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 "" - #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:165 +#: apt.conf.5.xml:157 msgid "Default-Release" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:166 +#: apt.conf.5.xml:158 msgid "" "Default release to install packages from if more than one version available. " "Contains release name, codename or release version. Examples: 'stable', " @@ -4465,24 +4426,24 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:171 +#: apt.conf.5.xml:163 msgid "Ignore-Hold" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:172 +#: apt.conf.5.xml:164 msgid "" "Ignore Held packages; This global option causes the problem resolver to " "ignore held packages in its decision making." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:176 +#: apt.conf.5.xml:168 msgid "Clean-Installed" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:177 +#: apt.conf.5.xml:169 msgid "" "Defaults to on. When turned on the autoclean feature will remove any " "packages which can no longer be downloaded from the cache. If turned off " @@ -4491,12 +4452,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:183 +#: apt.conf.5.xml:175 msgid "Immediate-Configure" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:184 +#: apt.conf.5.xml:176 msgid "" "Defaults to on which will cause APT to install essential and important " "packages as fast as possible in the install/upgrade operation. This is done " @@ -4529,12 +4490,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:206 +#: apt.conf.5.xml:198 msgid "Force-LoopBreak" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:207 +#: apt.conf.5.xml:199 msgid "" "Never Enable this option unless you -really- know what you are doing. It " "permits APT to temporarily remove an essential package to break a Conflicts/" @@ -4545,12 +4506,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:215 +#: apt.conf.5.xml:207 msgid "Cache-Start, Cache-Grow and Cache-Limit" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:216 +#: apt.conf.5.xml:208 msgid "" "APT uses since version 0.7.26 a resizable memory mapped cache file to store " "the 'available' information. <literal>Cache-Start</literal> acts as a hint " @@ -4570,63 +4531,63 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:231 +#: apt.conf.5.xml:223 msgid "Build-Essential" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:232 +#: apt.conf.5.xml:224 msgid "Defines which package(s) are considered essential build dependencies." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:235 +#: apt.conf.5.xml:227 msgid "Get" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:236 +#: apt.conf.5.xml:228 msgid "" "The Get subsection controls the &apt-get; tool, please see its documentation " "for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:240 +#: apt.conf.5.xml:232 msgid "Cache" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:241 +#: apt.conf.5.xml:233 msgid "" "The Cache subsection controls the &apt-cache; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:245 +#: apt.conf.5.xml:237 msgid "CDROM" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:246 +#: apt.conf.5.xml:238 msgid "" "The CDROM subsection controls the &apt-cdrom; tool, please see its " "documentation for more information about the options here." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:252 +#: apt.conf.5.xml:244 msgid "The Acquire Group" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:257 +#: apt.conf.5.xml:249 msgid "Check-Valid-Until" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:258 +#: apt.conf.5.xml:250 msgid "" "Security related option defaulting to true as an expiring validation for a " "Release file prevents longtime replay attacks and can e.g. also help users " @@ -4638,67 +4599,54 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:268 +#: apt.conf.5.xml:260 msgid "Max-ValidTime" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:269 +#: apt.conf.5.xml:261 msgid "" -"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." +"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." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:279 -msgid "Min-ValidTime" -msgstr "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:280 -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 "" - -#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:290 +#: apt.conf.5.xml:273 msgid "PDiffs" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:291 +#: apt.conf.5.xml:274 msgid "" "Try to download deltas called <literal>PDiffs</literal> for Packages or " "Sources files instead of downloading whole ones. True by default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:294 +#: apt.conf.5.xml:277 msgid "" "Two sub-options to limit the use of PDiffs are also available: With " "<literal>FileLimit</literal> can be specified how many PDiff files are " "downloaded at most to patch a file. <literal>SizeLimit</literal> on the " -"other hand is the maximum percentage of the size of all patches compared to " +"other hand is the maximum precentage of the size of all patches compared to " "the size of the targeted file. If one of these limits is exceeded the " "complete file is downloaded instead of the patches." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:303 +#: apt.conf.5.xml:286 msgid "Queue-Mode" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:304 +#: apt.conf.5.xml:287 msgid "" "Queuing mode; <literal>Queue-Mode</literal> can be one of <literal>host</" "literal> or <literal>access</literal> which determines how APT parallelizes " @@ -4708,36 +4656,36 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:311 +#: apt.conf.5.xml:294 msgid "Retries" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:312 +#: apt.conf.5.xml:295 msgid "" "Number of retries to perform. If this is non-zero APT will retry failed " "files the given number of times." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:316 +#: apt.conf.5.xml:299 msgid "Source-Symlinks" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:317 +#: apt.conf.5.xml:300 msgid "" "Use symlinks for source archives. If set to true then source archives will " "be symlinked when possible instead of copying. True is the default." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:321 sources.list.5.xml:155 +#: apt.conf.5.xml:304 sources.list.5.xml:144 msgid "http" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:322 +#: apt.conf.5.xml:305 msgid "" "HTTP URIs; http::Proxy is the default http proxy to use. It is in the " "standard form of <literal>http://[[user][:pass]@]host[:port]/</literal>. Per " @@ -4748,7 +4696,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:330 +#: apt.conf.5.xml:313 msgid "" "Three settings are provided for cache control with HTTP/1.1 compliant proxy " "caches. <literal>No-Cache</literal> tells the proxy to not use its cached " @@ -4762,7 +4710,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:340 apt.conf.5.xml:404 +#: apt.conf.5.xml:323 apt.conf.5.xml:387 msgid "" "The option <literal>timeout</literal> sets the timeout timer used by the " "method, this applies to all things including connection timeout and data " @@ -4770,7 +4718,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:343 +#: apt.conf.5.xml:326 msgid "" "One setting is provided to control the pipeline depth in cases where the " "remote server is not RFC conforming or buggy (such as Squid 2.0.2). " @@ -4782,7 +4730,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:351 +#: apt.conf.5.xml:334 msgid "" "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" "literal> which accepts integer values in kilobyte. The default value is 0 " @@ -4792,7 +4740,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:356 +#: apt.conf.5.xml:339 msgid "" "<literal>Acquire::http::User-Agent</literal> can be used to set a different " "User-Agent for the http download method as some proxies allow access for " @@ -4800,12 +4748,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:362 +#: apt.conf.5.xml:345 msgid "https" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:363 +#: apt.conf.5.xml:346 msgid "" "HTTPS URIs. Cache-control, Timeout, AllowRedirect, Dl-Limit and proxy " "options are the same as for <literal>http</literal> method and will also " @@ -4815,7 +4763,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:369 +#: apt.conf.5.xml:352 msgid "" "<literal>CaInfo</literal> suboption specifies place of file that holds info " "about trusted certificates. <literal><host>::CaInfo</literal> is " @@ -4836,12 +4784,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:387 sources.list.5.xml:166 +#: apt.conf.5.xml:370 sources.list.5.xml:155 msgid "ftp" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:388 +#: apt.conf.5.xml:371 msgid "" "FTP URIs; ftp::Proxy is the default ftp proxy to use. It is in the standard " "form of <literal>ftp://[[user][:pass]@]host[:port]/</literal>. Per host " @@ -4860,7 +4808,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:407 +#: apt.conf.5.xml:390 msgid "" "Several settings are provided to control passive mode. Generally it is safe " "to leave passive mode on, it works in nearly every environment. However " @@ -4870,7 +4818,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:414 +#: apt.conf.5.xml:397 msgid "" "It is possible to proxy FTP over HTTP by setting the <envar>ftp_proxy</" "envar> environment variable to a http url - see the discussion of the http " @@ -4879,7 +4827,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:419 +#: apt.conf.5.xml:402 msgid "" "The setting <literal>ForceExtended</literal> controls the use of RFC2428 " "<literal>EPSV</literal> and <literal>EPRT</literal> commands. The default is " @@ -4889,18 +4837,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:426 sources.list.5.xml:148 +#: apt.conf.5.xml:409 sources.list.5.xml:137 msgid "cdrom" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:432 +#: apt.conf.5.xml:415 #, no-wrap msgid "/cdrom/::Mount \"foo\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:427 +#: apt.conf.5.xml:410 msgid "" "CDROM URIs; the only setting for CDROM URIs is the mount point, " "<literal>cdrom::Mount</literal> which must be the mount point for the CDROM " @@ -4913,12 +4861,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:437 +#: apt.conf.5.xml:420 msgid "gpgv" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:438 +#: apt.conf.5.xml:421 msgid "" "GPGV URIs; the only option for GPGV URIs is the option to pass additional " "parameters to gpgv. <literal>gpgv::Options</literal> Additional options " @@ -4926,18 +4874,18 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:443 +#: apt.conf.5.xml:426 msgid "CompressionTypes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:449 +#: apt.conf.5.xml:432 #, no-wrap msgid "Acquire::CompressionTypes::<replaceable>FileExtension</replaceable> \"<replaceable>Methodname</replaceable>\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:444 +#: apt.conf.5.xml:427 msgid "" "List of compression types which are understood by the acquire methods. " "Files like <filename>Packages</filename> can be available in various " @@ -4949,19 +4897,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:454 +#: apt.conf.5.xml:437 #, no-wrap msgid "Acquire::CompressionTypes::Order:: \"gz\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><synopsis> -#: apt.conf.5.xml:457 +#: apt.conf.5.xml:440 #, no-wrap msgid "Acquire::CompressionTypes::Order { \"lzma\"; \"gz\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:450 +#: apt.conf.5.xml:433 msgid "" "Also the <literal>Order</literal> subgroup can be used to define in which " "order the acquire system will try to download the compressed files. The " @@ -4978,20 +4926,20 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:461 +#: apt.conf.5.xml:444 #, no-wrap msgid "Dir::Bin::bzip2 \"/bin/bzip2\";" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:459 +#: apt.conf.5.xml:442 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 " +"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 " @@ -4999,20 +4947,20 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:466 +#: apt.conf.5.xml:449 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 a preference, but note that most archives doesn't provide " "uncompressed files so this is mostly only useable for local mirrors." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:471 +#: apt.conf.5.xml:454 msgid "GzipIndexes" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:473 +#: apt.conf.5.xml:456 msgid "" "When downloading <literal>gzip</literal> compressed indexes (Packages, " "Sources, or Translations), keep them gzip compressed locally instead of " @@ -5021,12 +4969,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: apt.conf.5.xml:480 +#: apt.conf.5.xml:463 msgid "Languages" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:481 +#: apt.conf.5.xml:464 msgid "" "The Languages subsection controls which <filename>Translation</filename> " "files are downloaded and in which order APT tries to display the Description-" @@ -5039,13 +4987,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting> -#: apt.conf.5.xml:497 +#: apt.conf.5.xml:480 #, no-wrap msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:487 +#: apt.conf.5.xml:470 msgid "" "The default list includes \"environment\" and \"en\". " "\"<literal>environment</literal>\" has a special meaning here: It will be " @@ -5068,19 +5016,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:253 +#: apt.conf.5.xml:245 msgid "" "The <literal>Acquire</literal> group of options controls the download of " "packages and the URI handlers. <placeholder type=\"variablelist\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:504 +#: apt.conf.5.xml:487 msgid "Directories" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:506 +#: apt.conf.5.xml:489 msgid "" "The <literal>Dir::State</literal> section has directories that pertain to " "local state information. <literal>lists</literal> is the directory to place " @@ -5092,7 +5040,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:513 +#: apt.conf.5.xml:496 msgid "" "<literal>Dir::Cache</literal> contains locations pertaining to local cache " "information, such as the two package caches <literal>srcpkgcache</literal> " @@ -5105,7 +5053,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:522 +#: apt.conf.5.xml:505 msgid "" "<literal>Dir::Etc</literal> contains the location of configuration files, " "<literal>sourcelist</literal> gives the location of the sourcelist and " @@ -5115,7 +5063,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:528 +#: apt.conf.5.xml:511 msgid "" "The <literal>Dir::Parts</literal> setting reads in all the config fragments " "in lexical order from the directory specified. After this is done then the " @@ -5123,7 +5071,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:532 +#: apt.conf.5.xml:515 msgid "" "Binary programs are pointed to by <literal>Dir::Bin</literal>. <literal>Dir::" "Bin::Methods</literal> specifies the location of the method handlers and " @@ -5134,7 +5082,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:540 +#: apt.conf.5.xml:523 msgid "" "The configuration item <literal>RootDir</literal> has a special meaning. If " "set, all paths in <literal>Dir::</literal> will be relative to " @@ -5147,7 +5095,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:553 +#: apt.conf.5.xml:536 msgid "" "The <literal>Ignore-Files-Silently</literal> list can be used to specify " "which files APT should silently ignore while parsing the files in the " @@ -5158,12 +5106,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:562 +#: apt.conf.5.xml:545 msgid "APT in DSelect" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:564 +#: apt.conf.5.xml:547 msgid "" "When APT is used as a &dselect; method several configuration directives " "control the default behaviour. These are in the <literal>DSelect</literal> " @@ -5171,12 +5119,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:568 +#: apt.conf.5.xml:551 msgid "Clean" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:569 +#: apt.conf.5.xml:552 msgid "" "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto " "and never. always and prompt will remove all packages from the cache after " @@ -5187,50 +5135,50 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:578 +#: apt.conf.5.xml:561 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the install phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:582 +#: apt.conf.5.xml:565 msgid "Updateoptions" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:583 +#: apt.conf.5.xml:566 msgid "" "The contents of this variable is passed to &apt-get; as command line options " "when it is run for the update phase." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:587 +#: apt.conf.5.xml:570 msgid "PromptAfterUpdate" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:588 +#: apt.conf.5.xml:571 msgid "" "If true the [U]pdate operation in &dselect; will always prompt to continue. " "The default is to prompt only on error." msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:594 +#: apt.conf.5.xml:577 msgid "How APT calls dpkg" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:595 +#: apt.conf.5.xml:578 msgid "" "Several configuration directives control how APT invokes &dpkg;. These are " "in the <literal>DPkg</literal> section." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:600 +#: apt.conf.5.xml:583 msgid "" "This is a list of options to pass to dpkg. The options must be specified " "using the list notation and each list item is passed as a single argument to " @@ -5238,17 +5186,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Pre-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:605 +#: apt.conf.5.xml:588 msgid "Post-Invoke" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:606 +#: apt.conf.5.xml:589 msgid "" "This is a list of shell commands to run before/after invoking &dpkg;. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5257,12 +5205,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:612 +#: apt.conf.5.xml:595 msgid "Pre-Install-Pkgs" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:613 +#: apt.conf.5.xml:596 msgid "" "This is a list of shell commands to run before invoking dpkg. Like " "<literal>options</literal> this must be specified in list notation. The " @@ -5272,7 +5220,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:619 +#: apt.conf.5.xml:602 msgid "" "Version 2 of this protocol dumps more information, including the protocol " "version, the APT configuration space and the packages, files and versions " @@ -5282,36 +5230,36 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:626 +#: apt.conf.5.xml:609 msgid "Run-Directory" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:627 +#: apt.conf.5.xml:610 msgid "" "APT chdirs to this directory before invoking dpkg, the default is <filename>/" "</filename>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:631 +#: apt.conf.5.xml:614 msgid "Build-options" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:632 +#: apt.conf.5.xml:615 msgid "" "These options are passed to &dpkg-buildpackage; when compiling packages, the " "default is to disable signing and produce all binaries." msgstr "" #. type: Content of: <refentry><refsect1><refsect2><title> -#: apt.conf.5.xml:637 +#: apt.conf.5.xml:620 msgid "dpkg trigger usage (and related options)" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:638 +#: apt.conf.5.xml:621 msgid "" "APT can call dpkg in a way so it can make aggressive use of triggers over " "multiple calls of dpkg. Without further options dpkg will use triggers only " @@ -5326,7 +5274,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para><literallayout> -#: apt.conf.5.xml:653 +#: apt.conf.5.xml:636 #, no-wrap msgid "" "DPkg::NoTriggers \"true\";\n" @@ -5336,7 +5284,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><para> -#: apt.conf.5.xml:647 +#: apt.conf.5.xml:630 msgid "" "Note that it is not guaranteed that APT will support these options or that " "these options will not cause (big) trouble in the future. If you have " @@ -5350,12 +5298,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:659 +#: apt.conf.5.xml:642 msgid "DPkg::NoTriggers" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:660 +#: apt.conf.5.xml:643 msgid "" "Add the no triggers flag to all dpkg calls (except the ConfigurePending " "call). See &dpkg; if you are interested in what this actually means. In " @@ -5367,12 +5315,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:667 +#: apt.conf.5.xml:650 msgid "PackageManager::Configure" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:668 +#: apt.conf.5.xml:651 msgid "" "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" " "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default " @@ -5388,12 +5336,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:678 +#: apt.conf.5.xml:661 msgid "DPkg::ConfigurePending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:679 +#: apt.conf.5.xml:662 msgid "" "If this option is set apt will call <command>dpkg --configure --pending</" "command> to let dpkg handle all required configurations and triggers. This " @@ -5404,12 +5352,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:685 +#: apt.conf.5.xml:668 msgid "DPkg::TriggersPending" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:686 +#: apt.conf.5.xml:669 msgid "" "Useful for <literal>smart</literal> configuration as a package which has " "pending triggers is not considered as <literal>installed</literal> and dpkg " @@ -5419,12 +5367,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:691 +#: apt.conf.5.xml:674 msgid "PackageManager::UnpackAll" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:692 +#: apt.conf.5.xml:675 msgid "" "As the configuration can be deferred to be done at the end by dpkg it can be " "tried to order the unpack series only by critical needs, e.g. by Pre-" @@ -5436,12 +5384,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term> -#: apt.conf.5.xml:699 +#: apt.conf.5.xml:682 msgid "OrderList::Score::Immediate" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout> -#: apt.conf.5.xml:707 +#: apt.conf.5.xml:690 #, no-wrap msgid "" "OrderList::Score {\n" @@ -5453,7 +5401,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:700 +#: apt.conf.5.xml:683 msgid "" "Essential packages (and there dependencies) should be configured immediately " "after unpacking. It will be a good idea to do this quite early in the " @@ -5467,12 +5415,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:720 +#: apt.conf.5.xml:703 msgid "Periodic and Archives options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:721 +#: apt.conf.5.xml:704 msgid "" "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups " "of options configure behavior of apt periodic updates, which is done by " @@ -5481,12 +5429,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: apt.conf.5.xml:729 +#: apt.conf.5.xml:712 msgid "Debug options" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:731 +#: apt.conf.5.xml:714 msgid "" "Enabling options in the <literal>Debug::</literal> section will cause " "debugging information to be sent to the standard error stream of the program " @@ -5497,7 +5445,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:742 +#: apt.conf.5.xml:725 msgid "" "<literal>Debug::pkgProblemResolver</literal> enables output about the " "decisions made by <literal>dist-upgrade, upgrade, install, remove, purge</" @@ -5505,7 +5453,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:750 +#: apt.conf.5.xml:733 msgid "" "<literal>Debug::NoLocking</literal> disables all file locking. This can be " "used to run some operations (for instance, <literal>apt-get -s install</" @@ -5513,7 +5461,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:759 +#: apt.conf.5.xml:742 msgid "" "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each " "time that <literal>apt</literal> invokes &dpkg;." @@ -5523,120 +5471,120 @@ msgstr "" #. motivating example, except I haven't a clue why you'd want #. to do this. #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: apt.conf.5.xml:767 +#: apt.conf.5.xml:750 msgid "" "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data " "in CDROM IDs." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:777 +#: apt.conf.5.xml:760 msgid "A full list of debugging options to apt follows." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:782 +#: apt.conf.5.xml:765 #, fuzzy msgid "<literal>Debug::Acquire::cdrom</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:786 +#: apt.conf.5.xml:769 msgid "" "Print information related to accessing <literal>cdrom://</literal> sources." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:793 +#: apt.conf.5.xml:776 #, fuzzy msgid "<literal>Debug::Acquire::ftp</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:797 +#: apt.conf.5.xml:780 msgid "Print information related to downloading packages using FTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:804 +#: apt.conf.5.xml:787 #, fuzzy msgid "<literal>Debug::Acquire::http</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:808 +#: apt.conf.5.xml:791 msgid "Print information related to downloading packages using HTTP." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:815 +#: apt.conf.5.xml:798 #, fuzzy msgid "<literal>Debug::Acquire::https</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:819 +#: apt.conf.5.xml:802 msgid "Print information related to downloading packages using HTTPS." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:826 +#: apt.conf.5.xml:809 #, fuzzy msgid "<literal>Debug::Acquire::gpgv</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:830 +#: apt.conf.5.xml:813 msgid "" "Print information related to verifying cryptographic signatures using " "<literal>gpg</literal>." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:837 +#: apt.conf.5.xml:820 #, fuzzy msgid "<literal>Debug::aptcdrom</literal>" msgstr "a linha <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:841 +#: apt.conf.5.xml:824 msgid "" "Output information about the process of accessing collections of packages " "stored on CD-ROMs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:848 +#: apt.conf.5.xml:831 #, fuzzy msgid "<literal>Debug::BuildDeps</literal>" msgstr "a linha <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:851 +#: apt.conf.5.xml:834 msgid "Describes the process of resolving build-dependencies in &apt-get;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:858 +#: apt.conf.5.xml:841 #, fuzzy msgid "<literal>Debug::Hashes</literal>" msgstr "a linha <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:861 +#: apt.conf.5.xml:844 msgid "" "Output each cryptographic hash that is generated by the <literal>apt</" "literal> libraries." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:868 +#: apt.conf.5.xml:851 #, fuzzy msgid "<literal>Debug::IdentCDROM</literal>" msgstr "a linha <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:871 +#: apt.conf.5.xml:854 msgid "" "Do not include information from <literal>statfs</literal>, namely the number " "of used and free blocks on the CD-ROM filesystem, when generating an ID for " @@ -5644,99 +5592,99 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:879 +#: apt.conf.5.xml:862 #, fuzzy msgid "<literal>Debug::NoLocking</literal>" msgstr "a linha <literal>Origin:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:882 +#: apt.conf.5.xml:865 msgid "" "Disable all file locking. For instance, this will allow two instances of " "<quote><literal>apt-get update</literal></quote> to run at the same time." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:890 +#: apt.conf.5.xml:873 #, fuzzy msgid "<literal>Debug::pkgAcquire</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:894 +#: apt.conf.5.xml:877 msgid "Log when items are added to or removed from the global download queue." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:901 +#: apt.conf.5.xml:884 #, fuzzy msgid "<literal>Debug::pkgAcquire::Auth</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:904 +#: apt.conf.5.xml:887 msgid "" "Output status messages and errors related to verifying checksums and " "cryptographic signatures of downloaded files." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:911 +#: apt.conf.5.xml:894 #, fuzzy msgid "<literal>Debug::pkgAcquire::Diffs</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:914 +#: apt.conf.5.xml:897 msgid "" "Output information about downloading and applying package index list diffs, " "and errors relating to package index list diffs." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:922 +#: apt.conf.5.xml:905 #, fuzzy msgid "<literal>Debug::pkgAcquire::RRed</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:926 +#: apt.conf.5.xml:909 msgid "" "Output information related to patching apt package lists when downloading " "index diffs instead of full indices." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:933 +#: apt.conf.5.xml:916 #, fuzzy msgid "<literal>Debug::pkgAcquire::Worker</literal>" msgstr "a linha <literal>Archive:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:937 +#: apt.conf.5.xml:920 msgid "" "Log all interactions with the sub-processes that actually perform downloads." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:944 +#: apt.conf.5.xml:927 msgid "<literal>Debug::pkgAutoRemove</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:948 +#: apt.conf.5.xml:931 msgid "" "Log events related to the automatically-installed status of packages and to " "the removal of unused packages." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:955 +#: apt.conf.5.xml:938 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:958 +#: apt.conf.5.xml:941 msgid "" "Generate debug messages describing which packages are being automatically " "installed to resolve dependencies. This corresponds to the initial auto-" @@ -5746,12 +5694,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:969 +#: apt.conf.5.xml:952 msgid "<literal>Debug::pkgDepCache::Marker</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:972 +#: apt.conf.5.xml:955 msgid "" "Generate debug messages describing which package is marked as keep/install/" "remove while the ProblemResolver does his work. Each addition or deletion " @@ -5768,96 +5716,96 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:991 +#: apt.conf.5.xml:974 #, fuzzy msgid "<literal>Debug::pkgInitConfig</literal>" msgstr "a linha <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:994 +#: apt.conf.5.xml:977 msgid "Dump the default configuration to standard error on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1001 +#: apt.conf.5.xml:984 #, fuzzy msgid "<literal>Debug::pkgDPkgPM</literal>" msgstr "a linha <literal>Package:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1004 +#: apt.conf.5.xml:987 msgid "" "When invoking &dpkg;, output the precise command line with which it is being " "invoked, with arguments separated by a single space character." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1012 +#: apt.conf.5.xml:995 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1015 +#: apt.conf.5.xml:998 msgid "" "Output all the data received from &dpkg; on the status file descriptor and " "any errors encountered while parsing it." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1022 +#: apt.conf.5.xml:1005 #, fuzzy msgid "<literal>Debug::pkgOrderList</literal>" msgstr "a linha <literal>Origin:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1026 +#: apt.conf.5.xml:1009 msgid "" "Generate a trace of the algorithm that decides the order in which " "<literal>apt</literal> should pass packages to &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1034 +#: apt.conf.5.xml:1017 #, fuzzy msgid "<literal>Debug::pkgPackageManager</literal>" msgstr "a linha <literal>Package:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1038 +#: apt.conf.5.xml:1021 msgid "" "Output status messages tracing the steps performed when invoking &dpkg;." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1045 +#: apt.conf.5.xml:1028 #, fuzzy msgid "<literal>Debug::pkgPolicy</literal>" msgstr "a linha <literal>Label:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1049 +#: apt.conf.5.xml:1032 msgid "Output the priority of each package list on startup." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1055 +#: apt.conf.5.xml:1038 msgid "<literal>Debug::pkgProblemResolver</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1059 +#: apt.conf.5.xml:1042 msgid "" "Trace the execution of the dependency resolver (this applies only to what " "happens when a complex dependency problem is encountered)." msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1067 +#: apt.conf.5.xml:1050 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1070 +#: apt.conf.5.xml:1053 msgid "" "Display a list of all installed packages with their calculated score used by " "the pkgProblemResolver. The description of the package is the same as " @@ -5865,33 +5813,33 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term> -#: apt.conf.5.xml:1078 +#: apt.conf.5.xml:1061 #, fuzzy msgid "<literal>Debug::sourceList</literal>" msgstr "a linha <literal>Version:</literal>" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> -#: apt.conf.5.xml:1082 +#: apt.conf.5.xml:1065 msgid "" "Print information about the vendors read from <filename>/etc/apt/vendors." "list</filename>." msgstr "" #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1105 +#: apt.conf.5.xml:1088 msgid "" "&configureindex; is a configuration file showing example values for all " "possible options." msgstr "" #. type: Content of: <refentry><refsect1><variablelist> -#: apt.conf.5.xml:1112 +#: apt.conf.5.xml:1095 msgid "&file-aptconf;" msgstr "" #. ? reading apt.conf #. type: Content of: <refentry><refsect1><para> -#: apt.conf.5.xml:1117 +#: apt.conf.5.xml:1100 #, fuzzy msgid "&apt-cache;, &apt-config;, &apt-preferences;." msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" @@ -5986,8 +5934,8 @@ msgstr "" 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 either no or \"<literal>pref</" -"literal>\" as filename extension and only contain alphanumeric, hyphen (-), " +"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 " @@ -6451,7 +6399,7 @@ msgid "" "APT also supports pinning by glob() expressions and regular expressions " "surrounded by /. For example, the following example assigns the priority 500 " "to all packages from experimental where the name starts with gnome (as a glob" -"()-like expression) or contains the word kde (as a POSIX extended regular " +"()-like expression or contains the word kde (as a POSIX extended regular " "expression surrounded by slashes)." msgstr "" @@ -6472,7 +6420,7 @@ msgstr "" #: apt_preferences.5.xml:279 msgid "" "The rule for those expressions is that they can occur anywhere where a " -"string can occur. Thus, the following pin assigns the priority 990 to all " +"string can occur. Those, the following pin assigns the priority 990 to all " "packages from a release starting with karmic." msgstr "" @@ -7398,7 +7346,7 @@ msgstr "" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml:81 #, no-wrap -msgid "deb [ options ] uri distribution [component1] [component2] [...]" +msgid "deb uri distribution [component1] [component2] [...]" msgstr "" #. type: Content of: <refentry><refsect1><para> @@ -7443,27 +7391,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:112 msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> -#: sources.list.5.xml:117 -msgid "" -"<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 "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:123 -msgid "" "It is important to list sources in order of preference, with the most " "preferred source listed first. Typically this will result in sorting by " "speed from fastest to slowest (CD-ROM followed by hosts on a local network, " @@ -7471,13 +7398,13 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:128 +#: sources.list.5.xml:117 #, fuzzy msgid "Some examples:" msgstr "Exemplos" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:130 +#: sources.list.5.xml:119 #, no-wrap msgid "" "deb http://ftp.debian.org/debian &stable-codename; main contrib non-free\n" @@ -7486,17 +7413,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><title> -#: sources.list.5.xml:136 +#: sources.list.5.xml:125 msgid "URI specification" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:141 +#: sources.list.5.xml:130 msgid "file" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:143 +#: sources.list.5.xml:132 msgid "" "The file scheme allows an arbitrary directory in the file system to be " "considered an archive. This is useful for NFS mounts and local mirrors or " @@ -7504,14 +7431,14 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:150 +#: sources.list.5.xml:139 msgid "" "The cdrom scheme allows APT to use a local CDROM drive with media swapping. " "Use the &apt-cdrom; program to create cdrom entries in the source list." msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:157 +#: sources.list.5.xml:146 msgid "" "The http scheme specifies an HTTP server for the archive. If an environment " "variable <envar>http_proxy</envar> is set with the format http://server:" @@ -7522,7 +7449,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:168 +#: sources.list.5.xml:157 msgid "" "The ftp scheme specifies an FTP server for the archive. APT's FTP behavior " "is highly configurable; for more information see the &apt-conf; manual page. " @@ -7534,12 +7461,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:177 +#: sources.list.5.xml:166 msgid "copy" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:179 +#: sources.list.5.xml:168 msgid "" "The copy scheme is identical to the file scheme except that packages are " "copied into the cache directory instead of used directly at their location. " @@ -7547,17 +7474,17 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "rsh" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:184 +#: sources.list.5.xml:173 msgid "ssh" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:186 +#: sources.list.5.xml:175 msgid "" "The rsh/ssh method invokes rsh/ssh to connect to a remote host as a given " "user and access the files. It is a good idea to do prior arrangements with " @@ -7567,12 +7494,12 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term> -#: sources.list.5.xml:194 +#: sources.list.5.xml:183 msgid "more recognizable URI types" msgstr "" #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para> -#: sources.list.5.xml:196 +#: sources.list.5.xml:185 msgid "" "APT can be extended with more methods shipped in other optional packages " "which should follow the nameing scheme <literal>apt-transport-" @@ -7585,91 +7512,75 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:138 +#: sources.list.5.xml:127 msgid "" "The currently recognized URI types are cdrom, file, http, ftp, copy, ssh, " "rsh. <placeholder type=\"variablelist\" id=\"0\"/>" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:210 +#: sources.list.5.xml:199 msgid "" "Uses the archive stored locally (or NFS mounted) at /home/jason/debian for " "stable/main, stable/contrib, and stable/non-free." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:212 +#: sources.list.5.xml:201 #, no-wrap msgid "deb file:/home/jason/debian stable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:214 +#: sources.list.5.xml:203 msgid "As above, except this uses the unstable (development) distribution." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:215 +#: sources.list.5.xml:204 #, no-wrap msgid "deb file:/home/jason/debian unstable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:217 +#: sources.list.5.xml:206 msgid "Source line for the above" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:218 +#: sources.list.5.xml:207 #, no-wrap msgid "deb-src file:/home/jason/debian unstable main contrib non-free" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:220 -msgid "" -"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 "" - -#. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:222 -#, no-wrap -msgid "" -"deb http://ftp.debian.org/debian &stable-codename; main\n" -"deb [ arch=amd64,armel ] http://ftp.debian.org/debian &stable-codename; main" -msgstr "" - -#. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:225 +#: sources.list.5.xml:209 msgid "" "Uses HTTP to access the archive at archive.debian.org, and uses only the " "hamm/main area." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:227 +#: sources.list.5.xml:211 #, no-wrap msgid "deb http://archive.debian.org/debian-archive hamm main" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:229 +#: sources.list.5.xml:213 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the &stable-codename;/contrib area." msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:231 +#: sources.list.5.xml:215 #, no-wrap msgid "deb ftp://ftp.debian.org/debian &stable-codename; contrib" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:233 +#: sources.list.5.xml:217 msgid "" "Uses FTP to access the archive at ftp.debian.org, under the debian " "directory, and uses only the unstable/contrib area. If this line appears as " @@ -7678,19 +7589,19 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><literallayout> -#: sources.list.5.xml:237 +#: sources.list.5.xml:221 #, no-wrap msgid "deb ftp://ftp.debian.org/debian unstable contrib" msgstr "" #. type: Content of: <refentry><refsect1><para><literallayout> -#: sources.list.5.xml:246 +#: sources.list.5.xml:230 #, no-wrap msgid "deb http://ftp.tlh.debian.org/universe unstable/binary-$(ARCH)/" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:239 +#: sources.list.5.xml:223 msgid "" "Uses HTTP to access the archive at ftp.tlh.debian.org, under the universe " "directory, and uses only files found under <filename>unstable/binary-i386</" @@ -7702,7 +7613,7 @@ msgid "" msgstr "" #. type: Content of: <refentry><refsect1><para> -#: sources.list.5.xml:251 +#: sources.list.5.xml:235 #, fuzzy msgid "&apt-cache; &apt-conf;" msgstr "&apt-get; &apt-cache; &apt-conf; &sources-list;" diff --git a/doc/sources.list.5.xml b/doc/sources.list.5.xml index 09a5cbb6d..dd94f58f1 100644 --- a/doc/sources.list.5.xml +++ b/doc/sources.list.5.xml @@ -117,8 +117,13 @@ <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 - <literal>APT::Architectures</literal> option will be downloaded.</para> - </listitem></itemizedlist></para> + <literal>APT::Architectures</literal> option will be downloaded.</para></listitem> + <listitem><para><literal>trusted=yes</literal> can be set to indicate that packages + from this source are always authenificated even if the <filename>Release</filename> file + is not signed or the signature can't be checked. This disables parts of &apt-secure; + and should therefore only be used in a local and trusted context. <literal>trusted=no</literal> + is the opposite which handles even correctly authenificated sources as not authenificated.</para></listitem> + </itemizedlist></para> <para>It is important to list sources in order of preference, with the most preferred source listed first. Typically this will result in sorting diff --git a/ftparchive/apt-ftparchive.cc b/ftparchive/apt-ftparchive.cc index fabaaec1d..4efbecc8c 100644 --- a/ftparchive/apt-ftparchive.cc +++ b/ftparchive/apt-ftparchive.cc @@ -10,24 +10,25 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "apt-ftparchive.h" - +#include <config.h> + #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/cmndline.h> #include <apt-pkg/strutl.h> #include <apt-pkg/init.h> -#include <config.h> -#include <apti18n.h> #include <algorithm> #include <climits> #include <sys/time.h> #include <regex.h> +#include "apt-ftparchive.h" #include "contents.h" #include "multicompress.h" -#include "writer.h" +#include "writer.h" + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -205,7 +206,7 @@ bool PackageMap::GenPackages(Configuration &Setup,struct CacheDB::Stats &Stats) Packages.Output = 0; // Just in case // Finish compressing - unsigned long Size; + unsigned long long Size; if (Comp.Finalize(Size) == false) { c0out << endl; @@ -291,7 +292,7 @@ bool PackageMap::GenSources(Configuration &Setup,struct CacheDB::Stats &Stats) Sources.Output = 0; // Just in case // Finish compressing - unsigned long Size; + unsigned long long Size; if (Comp.Finalize(Size) == false) { c0out << endl; @@ -362,11 +363,11 @@ bool PackageMap::GenContents(Configuration &Setup, if (_error->PendingError() == true) return false; - unsigned long Size = Head.Size(); + unsigned long long Size = Head.Size(); unsigned char Buf[4096]; while (Size != 0) { - unsigned long ToRead = Size; + unsigned long long ToRead = Size; if (Size > sizeof(Buf)) ToRead = sizeof(Buf); @@ -400,7 +401,7 @@ bool PackageMap::GenContents(Configuration &Setup, Contents.Finish(); // Finish compressing - unsigned long Size; + unsigned long long Size; if (Comp.Finalize(Size) == false || _error->PendingError() == true) { c0out << endl; @@ -586,7 +587,7 @@ void LoadBinDir(vector<PackageMap> &PkgList,Configuration &Setup) /* */ bool ShowHelp(CommandLine &CmdL) { - ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,VERSION, + ioprintf(cout,_("%s %s for %s compiled on %s %s\n"),PACKAGE,PACKAGE_VERSION, COMMON_ARCH,__DATE__,__TIME__); if (_config->FindB("version") == true) return true; diff --git a/ftparchive/cachedb.cc b/ftparchive/cachedb.cc index 6573fa264..a8b637a80 100644 --- a/ftparchive/cachedb.cc +++ b/ftparchive/cachedb.cc @@ -10,23 +10,26 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "cachedb.h" +#include <config.h> -#include <apti18n.h> #include <apt-pkg/error.h> #include <apt-pkg/md5.h> #include <apt-pkg/sha1.h> -#include <apt-pkg/sha256.h> +#include <apt-pkg/sha2.h> #include <apt-pkg/strutl.h> #include <apt-pkg/configuration.h> +#include <apt-pkg/fileutl.h> #include <netinet/in.h> // htonl, etc + +#include <apti18n.h> +#include "cachedb.h" /*}}}*/ // CacheDB::ReadyDB - Ready the DB2 /*{{{*/ // --------------------------------------------------------------------- /* This opens the DB2 file for caching package information */ -bool CacheDB::ReadyDB(string const &DB) +bool CacheDB::ReadyDB(std::string const &DB) { int err; @@ -46,7 +49,7 @@ bool CacheDB::ReadyDB(string const &DB) DBLoaded = false; Dbp = 0; - DBFile = string(); + DBFile = std::string(); if (DB.empty()) return true; @@ -160,9 +163,10 @@ bool CacheDB::GetCurStat() /*}}}*/ // CacheDB::GetFileInfo - Get all the info about the file /*{{{*/ // --------------------------------------------------------------------- -bool CacheDB::GetFileInfo(string const &FileName, bool const &DoControl, bool const &DoContents, +bool CacheDB::GetFileInfo(std::string const &FileName, bool const &DoControl, bool const &DoContents, bool const &GenContentsOnly, bool const &DoMD5, bool const &DoSHA1, - bool const &DoSHA256, bool const &checkMtime) + bool const &DoSHA256, bool const &DoSHA512, + bool const &checkMtime) { this->FileName = FileName; @@ -190,7 +194,9 @@ bool CacheDB::GetFileInfo(string const &FileName, bool const &DoControl, bool co || (DoContents && LoadContents(GenContentsOnly) == false) || (DoMD5 && GetMD5(false) == false) || (DoSHA1 && GetSHA1(false) == false) - || (DoSHA256 && GetSHA256(false) == false)) + || (DoSHA256 && GetSHA256(false) == false) + || (DoSHA512 && GetSHA512(false) == false) + ) { delete Fd; Fd = NULL; @@ -293,9 +299,9 @@ bool CacheDB::LoadContents(bool const &GenOnly) } /*}}}*/ -static string bytes2hex(uint8_t *bytes, size_t length) { +static std::string bytes2hex(uint8_t *bytes, size_t length) { char buf[3]; - string space; + std::string space; space.reserve(length*2 + 1); for (size_t i = 0; i < length; i++) { @@ -345,7 +351,7 @@ bool CacheDB::GetMD5(bool const &GenOnly) 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(); @@ -376,7 +382,7 @@ bool CacheDB::GetSHA1(bool const &GenOnly) 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(); @@ -407,7 +413,7 @@ bool CacheDB::GetSHA256(bool const &GenOnly) 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(); @@ -416,6 +422,37 @@ bool CacheDB::GetSHA256(bool const &GenOnly) return true; } /*}}}*/ +// CacheDB::GetSHA256 - Get the SHA256 hash /*{{{*/ +// --------------------------------------------------------------------- +/* */ +bool CacheDB::GetSHA512(bool const &GenOnly) +{ + // Try to read the control information out of the DB. + if ((CurStat.Flags & FlSHA512) == FlSHA512) + { + if (GenOnly == true) + return true; + + SHA512Res = bytes2hex(CurStat.SHA512, sizeof(CurStat.SHA512)); + return true; + } + + Stats.SHA512Bytes += CurStat.FileSize; + + if (Fd == NULL && OpenFile() == false) + { + return false; + } + SHA512Summation SHA512; + if (Fd->Seek(0) == false || SHA512.AddFD(*Fd, CurStat.FileSize) == false) + return false; + + SHA512Res = SHA512.Result(); + hex2bytes(CurStat.SHA512, SHA512Res.data(), sizeof(CurStat.SHA512)); + CurStat.Flags |= FlSHA512; + return true; +} + /*}}}*/ // CacheDB::Finish - Write back the cache structure /*{{{*/ // --------------------------------------------------------------------- /* */ @@ -464,7 +501,7 @@ bool CacheDB::Clean() stringcmp(Colon + 1, (char *)Key.data+Key.size,"cl") == 0 || stringcmp(Colon + 1, (char *)Key.data+Key.size,"cn") == 0) { - if (FileExists(string((const char *)Key.data,Colon)) == true) + if (FileExists(std::string((const char *)Key.data,Colon)) == true) continue; } } diff --git a/ftparchive/cachedb.h b/ftparchive/cachedb.h index 0ba80909a..b9ced9418 100644 --- a/ftparchive/cachedb.h +++ b/ftparchive/cachedb.h @@ -13,16 +13,16 @@ #define CACHEDB_H +#include <apt-pkg/debfile.h> #include <db.h> -#include <string> -#include <apt-pkg/debfile.h> #include <inttypes.h> #include <sys/stat.h> #include <errno.h> - +#include <string> + #include "contents.h" - + class CacheDB { protected: @@ -34,7 +34,7 @@ class CacheDB DB *Dbp; bool DBLoaded; bool ReadOnly; - string DBFile; + std::string DBFile; // Generate a key for the DB of a given type inline void InitQuery(const char *Type) @@ -70,23 +70,27 @@ class CacheDB bool GetMD5(bool const &GenOnly); bool GetSHA1(bool const &GenOnly); bool GetSHA256(bool const &GenOnly); + bool GetSHA512(bool const &GenOnly); // Stat info stored in the DB, Fixed types since it is written to disk. enum FlagList {FlControl = (1<<0),FlMD5=(1<<1),FlContents=(1<<2), - FlSize=(1<<3), FlSHA1=(1<<4), FlSHA256=(1<<5)}; + FlSize=(1<<3), FlSHA1=(1<<4), FlSHA256=(1<<5), + FlSHA512=(1<<6)}; + struct StatStore { uint32_t Flags; uint32_t mtime; - uint32_t FileSize; + uint64_t FileSize; uint8_t MD5[16]; uint8_t SHA1[20]; uint8_t SHA256[32]; + uint8_t SHA512[64]; } CurStat; struct StatStore OldStat; // 'set' state - string FileName; + std::string FileName; FileFd *Fd; debDebFile *DebFile; @@ -95,9 +99,10 @@ class CacheDB // Data collection helpers debDebFile::MemControlExtract Control; ContentsExtract Contents; - string MD5Res; - string SHA1Res; - string SHA256Res; + std::string MD5Res; + std::string SHA1Res; + std::string SHA256Res; + std::string SHA512Res; // Runtime statistics struct Stats @@ -106,32 +111,40 @@ class CacheDB double MD5Bytes; double SHA1Bytes; double SHA256Bytes; + double SHA512Bytes; unsigned long Packages; unsigned long Misses; - unsigned long DeLinkBytes; + unsigned long long DeLinkBytes; inline void Add(const Stats &S) { - Bytes += S.Bytes; MD5Bytes += S.MD5Bytes; SHA1Bytes += S.SHA1Bytes; + Bytes += S.Bytes; + MD5Bytes += S.MD5Bytes; + SHA1Bytes += S.SHA1Bytes; SHA256Bytes += S.SHA256Bytes; - Packages += S.Packages; Misses += S.Misses; DeLinkBytes += S.DeLinkBytes;}; - Stats() : Bytes(0), MD5Bytes(0), SHA1Bytes(0), SHA256Bytes(0), Packages(0), Misses(0), DeLinkBytes(0) {}; + SHA512Bytes += S.SHA512Bytes; + Packages += S.Packages; + Misses += S.Misses; + DeLinkBytes += S.DeLinkBytes; + }; + Stats() : Bytes(0), MD5Bytes(0), SHA1Bytes(0), SHA256Bytes(0), + SHA512Bytes(0),Packages(0), Misses(0), DeLinkBytes(0) {}; } Stats; - bool ReadyDB(string const &DB); + bool ReadyDB(std::string const &DB); inline bool DBFailed() {return Dbp != 0 && DBLoaded == false;}; inline bool Loaded() {return DBLoaded == true;}; - inline off_t GetFileSize(void) {return CurStat.FileSize;} + inline unsigned long long GetFileSize(void) {return CurStat.FileSize;} - bool SetFile(string const &FileName,struct stat St,FileFd *Fd); - bool GetFileInfo(string const &FileName, bool const &DoControl, bool const &DoContents, bool const &GenContentsOnly, - bool const &DoMD5, bool const &DoSHA1, bool const &DoSHA256, bool const &checkMtime = false); + bool SetFile(std::string const &FileName,struct stat St,FileFd *Fd); + bool GetFileInfo(std::string const &FileName, bool const &DoControl, bool const &DoContents, bool const &GenContentsOnly, + bool const &DoMD5, bool const &DoSHA1, bool const &DoSHA256, bool const &DoSHA512, bool const &checkMtime = false); bool Finish(); bool Clean(); - CacheDB(string const &DB) : Dbp(0), Fd(NULL), DebFile(0) {ReadyDB(DB);}; - ~CacheDB() {ReadyDB(string()); delete DebFile;}; + CacheDB(std::string const &DB) : Dbp(0), Fd(NULL), DebFile(0) {TmpKey[0]='\0'; ReadyDB(DB);}; + ~CacheDB() {ReadyDB(std::string()); delete DebFile;}; }; #endif diff --git a/ftparchive/contents.cc b/ftparchive/contents.cc index eadced626..bbc5a1e2b 100644 --- a/ftparchive/contents.cc +++ b/ftparchive/contents.cc @@ -33,9 +33,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "contents.h" +#include <config.h> -#include <apti18n.h> #include <apt-pkg/debfile.h> #include <apt-pkg/extracttar.h> #include <apt-pkg/error.h> @@ -43,6 +42,9 @@ #include <stdlib.h> #include <string.h> #include <malloc.h> + +#include <apti18n.h> +#include "contents.h" /*}}}*/ // GenContents::~GenContents - Free allocated memory /*{{{*/ @@ -347,7 +349,7 @@ bool ContentsExtract::DoItem(Item &Itm,int &Fd) // ContentsExtract::TakeContents - Load the contents data /*{{{*/ // --------------------------------------------------------------------- /* */ -bool ContentsExtract::TakeContents(const void *NewData,unsigned long Length) +bool ContentsExtract::TakeContents(const void *NewData,unsigned long long Length) { if (Length == 0) { @@ -378,7 +380,7 @@ bool ContentsExtract::TakeContents(const void *NewData,unsigned long Length) // ContentsExtract::Add - Read the contents data into the sorter /*{{{*/ // --------------------------------------------------------------------- /* */ -void ContentsExtract::Add(GenContents &Contents,string const &Package) +void ContentsExtract::Add(GenContents &Contents,std::string const &Package) { const char *Start = Data; char *Pkg = Contents.Mystrdup(Package.c_str()); diff --git a/ftparchive/contents.h b/ftparchive/contents.h index 5b5092b66..4af9db574 100644 --- a/ftparchive/contents.h +++ b/ftparchive/contents.h @@ -12,9 +12,10 @@ #include <stdlib.h> #include <stdio.h> -#include <apt-pkg/debfile.h> #include <apt-pkg/dirstream.h> +class debDebFile; + class GenContents { struct Node @@ -71,16 +72,16 @@ class ContentsExtract : public pkgDirStream // The Data Block char *Data; - unsigned long MaxSize; - unsigned long CurSize; + unsigned long long MaxSize; + unsigned long long CurSize; void AddData(const char *Text); bool Read(debDebFile &Deb); virtual bool DoItem(Item &Itm,int &Fd); void Reset() {CurSize = 0;}; - bool TakeContents(const void *Data,unsigned long Length); - void Add(GenContents &Contents,string const &Package); + bool TakeContents(const void *Data,unsigned long long Length); + void Add(GenContents &Contents,std::string const &Package); ContentsExtract() : Data(0), MaxSize(0), CurSize(0) {}; virtual ~ContentsExtract() {delete [] Data;}; diff --git a/ftparchive/makefile b/ftparchive/makefile index 504ebf893..362c29198 100644 --- a/ftparchive/makefile +++ b/ftparchive/makefile @@ -7,6 +7,7 @@ include ../buildlib/defaults.mak # The apt-ftparchive program ifdef BDBLIB +APT_DOMAIN:=apt-utils PROGRAM=apt-ftparchive SLIBS = -lapt-pkg -lapt-inst $(BDBLIB) $(INTLLIBS) LIB_MAKES = apt-pkg/makefile apt-inst/makefile diff --git a/ftparchive/multicompress.cc b/ftparchive/multicompress.cc index 08853b0aa..1fea589e2 100644 --- a/ftparchive/multicompress.cc +++ b/ftparchive/multicompress.cc @@ -14,18 +14,21 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "multicompress.h" - -#include <apti18n.h> +#include <config.h> + +#include <apt-pkg/fileutl.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> #include <apt-pkg/md5.h> - + #include <sys/types.h> #include <sys/stat.h> #include <utime.h> #include <unistd.h> -#include <iostream> +#include <iostream> + +#include "multicompress.h" +#include <apti18n.h> /*}}}*/ using namespace std; @@ -88,7 +91,7 @@ MultiCompress::MultiCompress(string const &Output,string const &Compress, /* 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; @@ -180,11 +183,6 @@ bool MultiCompress::Start() _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) @@ -213,7 +211,7 @@ bool MultiCompress::Die() // MultiCompress::Finalize - Finish up writing /*{{{*/ // --------------------------------------------------------------------- /* This is only necessary for statistics reporting. */ -bool MultiCompress::Finalize(unsigned long &OutSize) +bool MultiCompress::Finalize(unsigned long long &OutSize) { OutSize = 0; if (Input == 0 || Die() == false) @@ -259,77 +257,10 @@ bool MultiCompress::Finalize(unsigned long &OutSize) 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) @@ -337,29 +268,9 @@ bool MultiCompress::OpenOld(int &Fd,pid_t &Proc) 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 @@ -369,19 +280,11 @@ bool MultiCompress::CloseOld(int Fd,pid_t Proc) 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); unsigned char Buffer[32*1024]; - unsigned long FileSize = 0; + unsigned long long FileSize = 0; MD5Summation MD5; while (1) { @@ -396,25 +299,14 @@ bool MultiCompress::Child(int const &FD) 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; @@ -433,31 +325,27 @@ bool MultiCompress::Child(int const &FD) // 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 NewFileSize = 0; + 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() && diff --git a/ftparchive/multicompress.h b/ftparchive/multicompress.h index 19dede174..388fad22e 100644 --- a/ftparchive/multicompress.h +++ b/ftparchive/multicompress.h @@ -16,11 +16,10 @@ #ifndef MULTICOMPRESS_H #define MULTICOMPRESS_H - - -#include <string> #include <apt-pkg/fileutl.h> #include <apt-pkg/aptconfiguration.h> + +#include <string> #include <stdio.h> #include <sys/types.h> @@ -29,21 +28,18 @@ class MultiCompress // An output file struct Files { - string Output; + std::string Output; APT::Configuration::Compressor CompressProg; Files *Next; 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(); @@ -54,12 +50,11 @@ class MultiCompress FILE *Input; unsigned long UpdateMTime; - bool Finalize(unsigned long &OutSize); - bool OpenOld(int &Fd,pid_t &Proc); - bool CloseOld(int Fd,pid_t Proc); - static bool GetStat(string const &Output,string const &Compress,struct stat &St); + bool Finalize(unsigned long long &OutSize); + bool OpenOld(FileFd &Fd); + static bool GetStat(std::string const &Output,std::string const &Compress,struct stat &St); - MultiCompress(string const &Output,string const &Compress, + MultiCompress(std::string const &Output,std::string const &Compress, mode_t const &Permissions, bool const &Write = true); ~MultiCompress(); }; diff --git a/ftparchive/override.cc b/ftparchive/override.cc index bd583a66f..d363fd0fe 100644 --- a/ftparchive/override.cc +++ b/ftparchive/override.cc @@ -10,14 +10,14 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "override.h" - +#include <config.h> + #include <apti18n.h> #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> #include <stdio.h> - + #include "override.h" /*}}}*/ @@ -34,7 +34,7 @@ bool Override::ReadOverride(string const &File,bool const &Source) return _error->Errno("fopen",_("Unable to open %s"),File.c_str()); char Line[500]; - unsigned long Counter = 0; + unsigned long long Counter = 0; while (fgets(Line,sizeof(Line),F) != 0) { Counter++; @@ -57,7 +57,7 @@ bool Override::ReadOverride(string const &File,bool const &Source) for (; isspace(*End) == 0 && *End != 0; End++); if (*End == 0) { - _error->Warning(_("Malformed override %s line %lu #1"),File.c_str(), + _error->Warning(_("Malformed override %s line %llu #1"),File.c_str(), Counter); continue; } @@ -71,7 +71,7 @@ bool Override::ReadOverride(string const &File,bool const &Source) for (; isspace(*End) == 0 && *End != 0; End++); if (*End == 0) { - _error->Warning(_("Malformed override %s line %lu #2"),File.c_str(), + _error->Warning(_("Malformed override %s line %llu #2"),File.c_str(), Counter); continue; } @@ -85,7 +85,7 @@ bool Override::ReadOverride(string const &File,bool const &Source) for (; isspace(*End) == 0 && *End != 0; End++); if (*End == 0) { - _error->Warning(_("Malformed override %s line %lu #3"),File.c_str(), + _error->Warning(_("Malformed override %s line %llu #3"),File.c_str(), Counter); continue; } @@ -142,7 +142,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &Source) return _error->Errno("fopen",_("Unable to open %s"),File.c_str()); char Line[500]; - unsigned long Counter = 0; + unsigned long long Counter = 0; while (fgets(Line,sizeof(Line),F) != 0) { Counter++; @@ -163,7 +163,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &Source) for (; isspace(*End) == 0 && *End != 0; End++); if (*End == 0) { - _error->Warning(_("Malformed override %s line %lu #1"),File.c_str(), + _error->Warning(_("Malformed override %s line %llu #1"),File.c_str(), Counter); continue; } @@ -175,7 +175,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &Source) for (; isspace(*End) == 0 && *End != 0; End++); if (*End == 0) { - _error->Warning(_("Malformed override %s line %lu #2"),File.c_str(), + _error->Warning(_("Malformed override %s line %llu #2"),File.c_str(), Counter); continue; } @@ -188,7 +188,7 @@ bool Override::ReadExtraOverride(string const &File,bool const &Source) for (; isspace(*(End-1)) && End > Value; End--); if (End == Value) { - _error->Warning(_("Malformed override %s line %lu #3"),File.c_str(), + _error->Warning(_("Malformed override %s line %llu #3"),File.c_str(), Counter); continue; } diff --git a/ftparchive/writer.cc b/ftparchive/writer.cc index 7837ce6ce..d02919969 100644 --- a/ftparchive/writer.cc +++ b/ftparchive/writer.cc @@ -11,16 +11,14 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "writer.h" - -#include <apti18n.h> +#include <config.h> + #include <apt-pkg/strutl.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/aptconfiguration.h> #include <apt-pkg/md5.h> -#include <apt-pkg/sha1.h> -#include <apt-pkg/sha256.h> +#include <apt-pkg/hashes.h> #include <apt-pkg/deblistparser.h> #include <sys/types.h> @@ -31,10 +29,13 @@ #include <iostream> #include <sstream> #include <memory> - + +#include "writer.h" #include "cachedb.h" #include "apt-ftparchive.h" #include "multicompress.h" + +#include <apti18n.h> /*}}}*/ using namespace std; FTWScanner *FTWScanner::Owner; @@ -64,6 +65,7 @@ FTWScanner::FTWScanner(string const &Arch): Arch(Arch) DoMD5 = _config->FindB("APT::FTPArchive::MD5",true); DoSHA1 = _config->FindB("APT::FTPArchive::SHA1",true); DoSHA256 = _config->FindB("APT::FTPArchive::SHA256",true); + DoSHA512 = _config->FindB("APT::FTPArchive::SHA512",true); } /*}}}*/ // FTWScanner::Scanner - FTW Scanner /*{{{*/ @@ -246,8 +248,8 @@ bool FTWScanner::LoadFileList(string const &Dir, string const &File) // --------------------------------------------------------------------- /* */ bool FTWScanner::Delink(string &FileName,const char *OriginalPath, - unsigned long &DeLinkBytes, - off_t const &FileSize) + unsigned long long &DeLinkBytes, + unsigned long long const &FileSize) { // See if this isn't an internaly prefix'd file name. if (InternalPrefix.empty() == false && @@ -316,6 +318,7 @@ PackagesWriter::PackagesWriter(string const &DB,string const &Overrides,string c DoMD5 = _config->FindB("APT::FTPArchive::Packages::MD5",DoMD5); DoSHA1 = _config->FindB("APT::FTPArchive::Packages::SHA1",DoSHA1); DoSHA256 = _config->FindB("APT::FTPArchive::Packages::SHA256",DoSHA256); + DoSHA256 = _config->FindB("APT::FTPArchive::Packages::SHA512",true); DoAlwaysStat = _config->FindB("APT::FTPArchive::AlwaysStat", false); DoContents = _config->FindB("APT::FTPArchive::Contents",true); NoOverride = _config->FindB("APT::FTPArchive::NoOverrideMsg",false); @@ -370,13 +373,13 @@ bool FTWScanner::SetExts(string const &Vals) bool PackagesWriter::DoPackage(string FileName) { // Pull all the data we need form the DB - if (Db.GetFileInfo(FileName, true, DoContents, true, DoMD5, DoSHA1, DoSHA256, DoAlwaysStat) + if (Db.GetFileInfo(FileName, true, DoContents, true, DoMD5, DoSHA1, DoSHA256, DoSHA512, DoAlwaysStat) == false) { return false; } - off_t FileSize = Db.GetFileSize(); + unsigned long long FileSize = Db.GetFileSize(); if (Delink(FileName,OriginalPath,Stats.DeLinkBytes,FileSize) == false) return false; @@ -412,7 +415,7 @@ bool PackagesWriter::DoPackage(string FileName) } char Size[40]; - sprintf(Size,"%lu", (unsigned long) FileSize); + sprintf(Size,"%llu", (unsigned long long) FileSize); // Strip the DirStrip prefix from the FileName and add the PathPrefix string NewFileName; @@ -446,6 +449,8 @@ bool PackagesWriter::DoPackage(string FileName) SetTFRewriteData(Changes[End++], "SHA1", Db.SHA1Res.c_str()); if (DoSHA256 == true) SetTFRewriteData(Changes[End++], "SHA256", Db.SHA256Res.c_str()); + if (DoSHA512 == true) + SetTFRewriteData(Changes[End++], "SHA512", Db.SHA512Res.c_str()); SetTFRewriteData(Changes[End++], "Filename", NewFileName.c_str()); SetTFRewriteData(Changes[End++], "Priority", OverItem->Priority.c_str()); SetTFRewriteData(Changes[End++], "Status", 0); @@ -607,7 +612,7 @@ bool SourcesWriter::DoPackage(string FileName) if (St.st_size > 128*1024) return _error->Error("DSC file '%s' is too large!",FileName.c_str()); - if (BufSize < (unsigned)St.st_size+1) + if (BufSize < (unsigned long long)St.st_size+1) { BufSize = St.st_size+1; Buffer = (char *)realloc(Buffer,St.st_size+1); @@ -623,6 +628,7 @@ bool SourcesWriter::DoPackage(string FileName) MD5Summation MD5; SHA1Summation SHA1; SHA256Summation SHA256; + SHA256Summation SHA512; if (DoMD5 == true) MD5.Add((unsigned char *)Start,BlkEnd - Start); @@ -630,6 +636,8 @@ bool SourcesWriter::DoPackage(string FileName) SHA1.Add((unsigned char *)Start,BlkEnd - Start); if (DoSHA256 == true) SHA256.Add((unsigned char *)Start,BlkEnd - Start); + if (DoSHA512 == true) + SHA512.Add((unsigned char *)Start,BlkEnd - Start); // Add an extra \n to the end, just in case *BlkEnd++ = '\n'; @@ -740,6 +748,12 @@ bool SourcesWriter::DoPackage(string FileName) << strippedName << "\n " << Tags.FindS("Checksums-Sha256"); string const ChecksumsSha256 = ostreamSha256.str(); + std::ostringstream ostreamSha512; + if (Tags.Exists("Checksums-Sha512")) + ostreamSha512 << "\n " << string(SHA512.Result()) << " " << St.st_size << " " + << strippedName << "\n " << Tags.FindS("Checksums-Sha512"); + string const ChecksumsSha512 = ostreamSha512.str(); + // Strip the DirStrip prefix from the FileName and add the PathPrefix string NewFileName; if (DirStrip.empty() == false && @@ -795,6 +809,8 @@ bool SourcesWriter::DoPackage(string FileName) SetTFRewriteData(Changes[End++],"Checksums-Sha1",ChecksumsSha1.c_str()); if (ChecksumsSha256.empty() == false) SetTFRewriteData(Changes[End++],"Checksums-Sha256",ChecksumsSha256.c_str()); + if (ChecksumsSha512.empty() == false) + SetTFRewriteData(Changes[End++],"Checksums-Sha512",ChecksumsSha512.c_str()); if (Directory != "./") SetTFRewriteData(Changes[End++],"Directory",Directory.c_str()); SetTFRewriteData(Changes[End++],"Priority",BestPrio.c_str()); @@ -873,22 +889,16 @@ bool ContentsWriter::ReadFromPkgs(string const &PkgFile,string const &PkgCompres 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) @@ -910,11 +920,10 @@ bool ContentsWriter::ReadFromPkgs(string const &PkgFile,string const &PkgCompres _error->DumpErrors(); } } - + // Tidy the compressor - if (Pkgs.CloseOld(CompFd,Proc) == false) - return false; - + Fd.Close(); + return true; } @@ -932,6 +941,7 @@ ReleaseWriter::ReleaseWriter(string const &DB) AddPattern("Packages.bz2"); AddPattern("Packages.lzma"); AddPattern("Packages.xz"); + AddPattern("Translation-*"); AddPattern("Sources"); AddPattern("Sources.gz"); AddPattern("Sources.bz2"); @@ -1025,29 +1035,18 @@ bool ReleaseWriter::DoPackage(string FileName) CheckSums[NewFileName].size = fd.Size(); + Hashes hs; + hs.AddFD(fd, 0, DoMD5, DoSHA1, DoSHA256, DoSHA512); if (DoMD5 == true) - { - MD5Summation MD5; - MD5.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].MD5 = MD5.Result(); - fd.Seek(0); - } + CheckSums[NewFileName].MD5 = hs.MD5.Result(); if (DoSHA1 == true) - { - SHA1Summation SHA1; - SHA1.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].SHA1 = SHA1.Result(); - fd.Seek(0); - } + CheckSums[NewFileName].SHA1 = hs.SHA1.Result(); if (DoSHA256 == true) - { - SHA256Summation SHA256; - SHA256.AddFD(fd.Fd(), fd.Size()); - CheckSums[NewFileName].SHA256 = SHA256.Result(); - } - + CheckSums[NewFileName].SHA256 = hs.SHA256.Result(); + if (DoSHA512 == true) + CheckSums[NewFileName].SHA512 = hs.SHA512.Result(); fd.Close(); - + return true; } @@ -1062,7 +1061,7 @@ void ReleaseWriter::Finish() for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); I != CheckSums.end(); ++I) { - fprintf(Output, " %s %16ld %s\n", + fprintf(Output, " %s %16llu %s\n", (*I).second.MD5.c_str(), (*I).second.size, (*I).first.c_str()); @@ -1074,7 +1073,7 @@ void ReleaseWriter::Finish() for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); I != CheckSums.end(); ++I) { - fprintf(Output, " %s %16ld %s\n", + fprintf(Output, " %s %16llu %s\n", (*I).second.SHA1.c_str(), (*I).second.size, (*I).first.c_str()); @@ -1086,10 +1085,22 @@ void ReleaseWriter::Finish() for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); I != CheckSums.end(); ++I) { - fprintf(Output, " %s %16ld %s\n", + fprintf(Output, " %s %16llu %s\n", (*I).second.SHA256.c_str(), (*I).second.size, (*I).first.c_str()); } } + + fprintf(Output, "SHA512:\n"); + for(map<string,struct CheckSum>::const_iterator I = CheckSums.begin(); + I != CheckSums.end(); + ++I) + { + fprintf(Output, " %s %16llu %s\n", + (*I).second.SHA512.c_str(), + (*I).second.size, + (*I).first.c_str()); + } + } diff --git a/ftparchive/writer.h b/ftparchive/writer.h index ce0eab7af..76a3dfd1e 100644 --- a/ftparchive/writer.h +++ b/ftparchive/writer.h @@ -22,7 +22,6 @@ #include <set> #include "cachedb.h" -#include "multicompress.h" #include "override.h" #include "apt-ftparchive.h" @@ -31,7 +30,7 @@ using std::cout; using std::endl; using std::vector; using std::map; - + class FTWScanner { protected: @@ -48,7 +47,7 @@ class FTWScanner static int ScannerFile(const char *File, bool const &ReadLink); bool Delink(string &FileName,const char *OriginalPath, - unsigned long &Bytes,off_t const &FileSize); + unsigned long long &Bytes,unsigned long long const &FileSize); inline void NewLine(unsigned const &Priority) { @@ -63,6 +62,7 @@ class FTWScanner bool DoMD5; bool DoSHA1; bool DoSHA256; + bool DoSHA512; unsigned long DeLinkLimit; string InternalPrefix; @@ -80,6 +80,8 @@ class FTWScanner virtual ~FTWScanner() {}; }; +class MultiCompress; + class TranslationWriter { MultiCompress *Comp; @@ -158,7 +160,7 @@ class SourcesWriter : public FTWScanner Override BOver; Override SOver; char *Buffer; - unsigned long BufSize; + unsigned long long BufSize; public: @@ -195,8 +197,9 @@ protected: string MD5; string SHA1; string SHA256; + string SHA512; // Limited by FileFd::Size() - unsigned long size; + unsigned long long size; ~CheckSum() {}; }; map<string,struct CheckSum> CheckSums; diff --git a/methods/bzip2.cc b/methods/bzip2.cc index 42932dded..8e7e46557 100644 --- a/methods/bzip2.cc +++ b/methods/bzip2.cc @@ -13,11 +13,14 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/error.h> #include <apt-pkg/acquire-method.h> #include <apt-pkg/strutl.h> #include <apt-pkg/hashes.h> +#include <apt-pkg/configuration.h> #include <sys/stat.h> #include <unistd.h> @@ -45,9 +48,9 @@ class Bzip2Method : public pkgAcqMethod bool Bzip2Method::Fetch(FetchItem *Itm) { URI Get = Itm->Uri; - string Path = Get.Host + Get.Path; // To account for relative paths + std::string Path = Get.Host + Get.Path; // To account for relative paths - string GzPathOption = "Dir::bin::"+string(Prog); + std::string GzPathOption = "Dir::bin::" + std::string(Prog); FetchResult Res; Res.Filename = Itm->DestFile; @@ -76,7 +79,7 @@ bool Bzip2Method::Fetch(FetchItem *Itm) SetCloseExec(STDOUT_FILENO,false); const char *Args[3]; - string Tmp = _config->Find(GzPathOption,Prog); + std::string Tmp = _config->Find(GzPathOption,Prog); Args[0] = Tmp.c_str(); Args[1] = "-d"; Args[2] = 0; diff --git a/methods/cdrom.cc b/methods/cdrom.cc index ae699dfc3..22d4b9164 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -8,12 +8,15 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/acquire-method.h> #include <apt-pkg/cdrom.h> #include <apt-pkg/cdromutl.h> #include <apt-pkg/error.h> #include <apt-pkg/configuration.h> #include <apt-pkg/fileutl.h> +#include <apt-pkg/strutl.h> #include <apt-pkg/hashes.h> #include <sys/stat.h> @@ -265,7 +268,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) Hashes Hash; FileFd Fd(Res.Filename, FileFd::ReadOnly); - Hash.AddFD(Fd.Fd(), Fd.Size()); + Hash.AddFD(Fd); Res.TakeHashes(Hash); URIDone(Res); diff --git a/methods/connect.cc b/methods/connect.cc index a5af1f1a6..9a092a43c 100644 --- a/methods/connect.cc +++ b/methods/connect.cc @@ -11,9 +11,12 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "connect.h" +#include <config.h> + #include <apt-pkg/error.h> #include <apt-pkg/fileutl.h> +#include <apt-pkg/strutl.h> +#include <apt-pkg/acquire-method.h> #include <stdio.h> #include <errno.h> @@ -29,17 +32,18 @@ #include <arpa/inet.h> #include <netdb.h> +#include "connect.h" #include "rfc2553emu.h" #include <apti18n.h> /*}}}*/ -static string LastHost; +static std::string LastHost; static int LastPort = 0; static struct addrinfo *LastHostAddr = 0; static struct addrinfo *LastUsed = 0; // Set of IP/hostnames that we timed out before or couldn't resolve -static std::set<string> bad_addr; +static std::set<std::string> bad_addr; // RotateDNS - Select a new server from a DNS rotation /*{{{*/ // --------------------------------------------------------------------- @@ -56,7 +60,7 @@ void RotateDNS() // DoConnect - Attempt a connect operation /*{{{*/ // --------------------------------------------------------------------- /* This helper function attempts a connection to a single address. */ -static bool DoConnect(struct addrinfo *Addr,string Host, +static bool DoConnect(struct addrinfo *Addr,std::string Host, unsigned long TimeOut,int &Fd,pkgAcqMethod *Owner) { // Show a status indicator @@ -71,7 +75,7 @@ static bool DoConnect(struct addrinfo *Addr,string Host, Owner->Status(_("Connecting to %s (%s)"),Host.c_str(),Name); // if that addr did timeout before, we do not try it again - if(bad_addr.find(string(Name)) != bad_addr.end()) + if(bad_addr.find(std::string(Name)) != bad_addr.end()) return false; /* If this is an IP rotation store the IP we are using.. If something goes @@ -98,7 +102,7 @@ static bool DoConnect(struct addrinfo *Addr,string Host, /* This implements a timeout for connect by opening the connection nonblocking */ if (WaitFd(Fd,true,TimeOut) == false) { - bad_addr.insert(bad_addr.begin(), string(Name)); + bad_addr.insert(bad_addr.begin(), std::string(Name)); Owner->SetFailReason("Timeout"); return _error->Error(_("Could not connect to %s:%s (%s), " "connection timed out"),Host.c_str(),Service,Name); @@ -117,7 +121,7 @@ static bool DoConnect(struct addrinfo *Addr,string Host, Owner->SetFailReason("ConnectionRefused"); else if (errno == ETIMEDOUT) Owner->SetFailReason("ConnectionTimedOut"); - bad_addr.insert(bad_addr.begin(), string(Name)); + bad_addr.insert(bad_addr.begin(), std::string(Name)); return _error->Errno("connect",_("Could not connect to %s:%s (%s)."),Host.c_str(), Service,Name); } @@ -128,7 +132,7 @@ static bool DoConnect(struct addrinfo *Addr,string Host, // Connect - Connect to a server /*{{{*/ // --------------------------------------------------------------------- /* Performs a connection to the server */ -bool Connect(string Host,int Port,const char *Service,int DefPort,int &Fd, +bool Connect(std::string Host,int Port,const char *Service,int DefPort,int &Fd, unsigned long TimeOut,pkgAcqMethod *Owner) { if (_error->PendingError() == true) diff --git a/methods/connect.h b/methods/connect.h index 6f208e31d..bbe1bb35d 100644 --- a/methods/connect.h +++ b/methods/connect.h @@ -11,9 +11,10 @@ #define CONNECT_H #include <string> -#include <apt-pkg/acquire-method.h> -bool Connect(string To,int Port,const char *Service,int DefPort, +class pkgAcqMethod; + +bool Connect(std::string To,int Port,const char *Service,int DefPort, int &Fd,unsigned long TimeOut,pkgAcqMethod *Owner); void RotateDNS(); diff --git a/methods/copy.cc b/methods/copy.cc index a6bb372a3..e81d0022b 100644 --- a/methods/copy.cc +++ b/methods/copy.cc @@ -9,7 +9,10 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> +#include <apt-pkg/strutl.h> #include <apt-pkg/acquire-method.h> #include <apt-pkg/error.h> #include <apt-pkg/hashes.h> @@ -35,7 +38,7 @@ class CopyMethod : public pkgAcqMethod bool CopyMethod::Fetch(FetchItem *Itm) { URI Get = Itm->Uri; - string File = Get.Path; + std::string File = Get.Path; // Stat the file and send a start message struct stat Buf; @@ -82,7 +85,7 @@ bool CopyMethod::Fetch(FetchItem *Itm) Hashes Hash; FileFd Fd(Res.Filename, FileFd::ReadOnly); - Hash.AddFD(Fd.Fd(), Fd.Size()); + Hash.AddFD(Fd); Res.TakeHashes(Hash); URIDone(Res); diff --git a/methods/file.cc b/methods/file.cc index 9cdd5bc2d..7ed4e6f60 100644 --- a/methods/file.cc +++ b/methods/file.cc @@ -13,10 +13,13 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/acquire-method.h> #include <apt-pkg/error.h> #include <apt-pkg/hashes.h> #include <apt-pkg/fileutl.h> +#include <apt-pkg/strutl.h> #include <sys/stat.h> #include <unistd.h> @@ -38,7 +41,7 @@ class FileMethod : public pkgAcqMethod bool FileMethod::Fetch(FetchItem *Itm) { URI Get = Itm->Uri; - string File = Get.Path; + std::string File = Get.Path; FetchResult Res; if (Get.Host.empty() == false) return _error->Error(_("Invalid URI, local URIS must not start with //")); @@ -56,10 +59,10 @@ bool FileMethod::Fetch(FetchItem *Itm) } // See if we can compute a file without a .gz exentsion - string::size_type Pos = File.rfind(".gz"); + std::string::size_type Pos = File.rfind(".gz"); if (Pos + 3 == File.length()) { - File = string(File,0,Pos); + File = std::string(File,0,Pos); if (stat(File.c_str(),&Buf) == 0) { FetchResult AltRes; @@ -80,7 +83,7 @@ bool FileMethod::Fetch(FetchItem *Itm) Hashes Hash; FileFd Fd(Res.Filename, FileFd::ReadOnly); - Hash.AddFD(Fd.Fd(), Fd.Size()); + Hash.AddFD(Fd); Res.TakeHashes(Hash); URIDone(Res); return true; diff --git a/methods/ftp.cc b/methods/ftp.cc index eb7fedd85..d55ac1224 100644 --- a/methods/ftp.cc +++ b/methods/ftp.cc @@ -15,11 +15,14 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/acquire-method.h> #include <apt-pkg/error.h> #include <apt-pkg/hashes.h> #include <apt-pkg/netrc.h> +#include <apt-pkg/configuration.h> #include <sys/stat.h> #include <sys/time.h> @@ -30,7 +33,6 @@ #include <errno.h> #include <stdarg.h> #include <iostream> -#include <apti18n.h> // Internet stuff #include <netinet/in.h> @@ -41,6 +43,7 @@ #include "rfc2553emu.h" #include "connect.h" #include "ftp.h" +#include <apti18n.h> /*}}}*/ using namespace std; @@ -74,6 +77,7 @@ FTPConn::FTPConn(URI Srv) : Len(0), ServerFd(-1), DataFd(-1), { Debug = _config->FindB("Debug::Acquire::Ftp",false); PasvAddr = 0; + Buffer[0] = '\0'; } /*}}}*/ // FTPConn::~FTPConn - Destructor /*{{{*/ @@ -618,8 +622,7 @@ bool FTPConn::ExtGoPasv() } // Get a new passive address. - int Res; - if ((Res = getaddrinfo(IP.c_str(),PStr,&Hints,&PasvAddr)) != 0) + if (getaddrinfo(IP.c_str(),PStr,&Hints,&PasvAddr) != 0) return true; return true; @@ -628,7 +631,7 @@ bool FTPConn::ExtGoPasv() // FTPConn::Size - Return the size of a file /*{{{*/ // --------------------------------------------------------------------- /* Grab the file size from the server, 0 means no size or empty file */ -bool FTPConn::Size(const char *Path,unsigned long &Size) +bool FTPConn::Size(const char *Path,unsigned long long &Size) { // Query the size unsigned int Tag; @@ -638,7 +641,7 @@ bool FTPConn::Size(const char *Path,unsigned long &Size) return false; char *End; - Size = strtol(Msg.c_str(),&End,10); + Size = strtoull(Msg.c_str(),&End,10); if (Tag >= 400 || End == Msg.c_str()) Size = 0; return true; @@ -717,14 +720,13 @@ bool FTPConn::CreateDataFd() DataListenFd = -1; // Get the information for a listening socket. - struct addrinfo *BindAddr = 0; + struct addrinfo *BindAddr = NULL; struct addrinfo Hints; memset(&Hints,0,sizeof(Hints)); Hints.ai_socktype = SOCK_STREAM; Hints.ai_flags |= AI_PASSIVE; Hints.ai_family = ((struct sockaddr *)&ServerAddr)->sa_family; - int Res; - if ((Res = getaddrinfo(0,"0",&Hints,&BindAddr)) != 0) + if (getaddrinfo(0,"0",&Hints,&BindAddr) != 0 || BindAddr == NULL) return _error->Error(_("getaddrinfo was unable to get a listening socket")); // Construct the socket @@ -840,7 +842,7 @@ bool FTPConn::Finalize() // --------------------------------------------------------------------- /* This opens a data connection, sends REST and RETR and then transfers the file over. */ -bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume, +bool FTPConn::Get(const char *Path,FileFd &To,unsigned long long Resume, Hashes &Hash,bool &Missing) { Missing = false; @@ -865,7 +867,7 @@ bool FTPConn::Get(const char *Path,FileFd &To,unsigned long Resume, if (Resume != 0) { - if (Hash.AddFD(To.Fd(),Resume) == false) + if (Hash.AddFD(To,Resume) == false) { _error->Errno("read",_("Problem hashing file")); return false; @@ -1003,7 +1005,7 @@ bool FtpMethod::Fetch(FetchItem *Itm) // Get the files information Status(_("Query")); - unsigned long Size; + unsigned long long Size; if (Server->Size(File,Size) == false || Server->ModTime(File,FailTime) == false) { @@ -1025,7 +1027,7 @@ bool FtpMethod::Fetch(FetchItem *Itm) struct stat Buf; if (stat(Itm->DestFile.c_str(),&Buf) == 0) { - if (Size == (unsigned)Buf.st_size && FailTime == Buf.st_mtime) + if (Size == (unsigned long long)Buf.st_size && FailTime == Buf.st_mtime) { Res.Size = Buf.st_size; Res.LastModified = Buf.st_mtime; @@ -1035,7 +1037,7 @@ bool FtpMethod::Fetch(FetchItem *Itm) } // Resume? - if (FailTime == Buf.st_mtime && Size > (unsigned)Buf.st_size) + if (FailTime == Buf.st_mtime && Size > (unsigned long long)Buf.st_size) Res.ResumePoint = Buf.st_size; } diff --git a/methods/ftp.h b/methods/ftp.h index d7f1f7fbe..2634f0732 100644 --- a/methods/ftp.h +++ b/methods/ftp.h @@ -10,6 +10,10 @@ #ifndef APT_FTP_H #define APT_FTP_H +#include <apt-pkg/strutl.h> + +#include <string> + class FTPConn { char Buffer[1024*10]; @@ -33,7 +37,7 @@ class FTPConn socklen_t ServerAddrLen; // Private helper functions - bool ReadLine(string &Text); + bool ReadLine(std::string &Text); bool Login(); bool CreateDataFd(); bool Finalize(); @@ -43,8 +47,8 @@ class FTPConn bool Comp(URI Other) {return Other.Host == ServerName.Host && Other.Port == ServerName.Port && Other.User == ServerName.User && Other.Password == ServerName.Password; }; // Raw connection IO - bool ReadResp(unsigned int &Ret,string &Text); - bool WriteMsg(unsigned int &Ret,string &Text,const char *Fmt,...); + bool ReadResp(unsigned int &Ret,std::string &Text); + bool WriteMsg(unsigned int &Ret,std::string &Text,const char *Fmt,...); // Connection control bool Open(pkgAcqMethod *Owner); @@ -53,9 +57,9 @@ class FTPConn bool ExtGoPasv(); // Query - bool Size(const char *Path,unsigned long &Size); + bool Size(const char *Path,unsigned long long &Size); bool ModTime(const char *Path, time_t &Time); - bool Get(const char *Path,FileFd &To,unsigned long Resume, + bool Get(const char *Path,FileFd &To,unsigned long long Resume, Hashes &MD5,bool &Missing); FTPConn(URI Srv); @@ -65,11 +69,11 @@ class FTPConn class FtpMethod : public pkgAcqMethod { virtual bool Fetch(FetchItem *Itm); - virtual bool Configuration(string Message); + virtual bool Configuration(std::string Message); FTPConn *Server; - static string FailFile; + static std::string FailFile; static int FailFd; static time_t FailTime; static void SigTerm(int); diff --git a/methods/gpgv.cc b/methods/gpgv.cc index 3ad3e8d84..25ba0d063 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -1,9 +1,11 @@ +#include <config.h> + #include <apt-pkg/error.h> #include <apt-pkg/acquire-method.h> #include <apt-pkg/strutl.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/indexcopy.h> -#include <apti18n.h> +#include <apt-pkg/configuration.h> #include <utime.h> #include <stdio.h> @@ -12,9 +14,13 @@ #include <sys/wait.h> #include <iostream> #include <sstream> - #include <vector> +#include <apti18n.h> + +using std::string; +using std::vector; + #define GNUPGPREFIX "[GNUPG:]" #define GNUPGBADSIG "[GNUPG:] BADSIG" #define GNUPGNOPUBKEY "[GNUPG:] NO_PUBKEY" @@ -92,8 +98,16 @@ string GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, // Read a line. Sigh. while ((c = getc(pipein)) != EOF && c != '\n') { - if (bufferoff == buffersize) - buffer = (char *) realloc(buffer, buffersize *= 2); + if (bufferoff == buffersize) + { + char* newBuffer = (char *) realloc(buffer, buffersize *= 2); + if (newBuffer == NULL) + { + free(buffer); + return "Couldn't allocate a buffer big enough for reading"; + } + buffer = newBuffer; + } *(buffer+bufferoff) = c; bufferoff++; } diff --git a/methods/gzip.cc b/methods/gzip.cc index fc4e1ecfd..6ab6548ef 100644 --- a/methods/gzip.cc +++ b/methods/gzip.cc @@ -9,6 +9,8 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/error.h> #include <apt-pkg/acquire-method.h> @@ -39,14 +41,14 @@ class GzipMethod : public pkgAcqMethod bool GzipMethod::Fetch(FetchItem *Itm) { URI Get = Itm->Uri; - string Path = Get.Host + Get.Path; // To account for relative paths + std::string Path = Get.Host + Get.Path; // To account for relative paths FetchResult Res; Res.Filename = Itm->DestFile; 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")); @@ -62,7 +64,7 @@ bool GzipMethod::Fetch(FetchItem *Itm) while (1) { unsigned char Buffer[4*1024]; - unsigned long Count; + unsigned long long Count = 0; if (!From.Read(Buffer,sizeof(Buffer),&Count)) { diff --git a/methods/http.cc b/methods/http.cc index 65a0cbbb7..c62ca71d3 100644 --- a/methods/http.cc +++ b/methods/http.cc @@ -25,8 +25,11 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/acquire-method.h> +#include <apt-pkg/configuration.h> #include <apt-pkg/error.h> #include <apt-pkg/hashes.h> #include <apt-pkg/netrc.h> @@ -39,10 +42,9 @@ #include <stdio.h> #include <errno.h> #include <string.h> +#include <climits> #include <iostream> #include <map> -#include <apti18n.h> - // Internet stuff #include <netdb.h> @@ -51,6 +53,8 @@ #include "connect.h" #include "rfc2553emu.h" #include "http.h" + +#include <apti18n.h> /*}}}*/ using namespace std; @@ -63,15 +67,15 @@ bool AllowRedirect = false; bool Debug = false; URI Proxy; -unsigned long CircleBuf::BwReadLimit=0; -unsigned long CircleBuf::BwTickReadData=0; +unsigned long long CircleBuf::BwReadLimit=0; +unsigned long long CircleBuf::BwTickReadData=0; struct timeval CircleBuf::BwReadTick={0,0}; const unsigned int CircleBuf::BW_HZ=10; // CircleBuf::CircleBuf - Circular input buffer /*{{{*/ // --------------------------------------------------------------------- /* */ -CircleBuf::CircleBuf(unsigned long Size) : Size(Size), Hash(0) +CircleBuf::CircleBuf(unsigned long long Size) : Size(Size), Hash(0) { Buf = new unsigned char[Size]; Reset(); @@ -87,7 +91,7 @@ void CircleBuf::Reset() InP = 0; OutP = 0; StrPos = 0; - MaxGet = (unsigned int)-1; + MaxGet = (unsigned long long)-1; OutQueue = string(); if (Hash != 0) { @@ -102,7 +106,7 @@ void CircleBuf::Reset() is non-blocking.. */ bool CircleBuf::Read(int Fd) { - unsigned long BwReadMax; + unsigned long long BwReadMax; while (1) { @@ -117,7 +121,7 @@ bool CircleBuf::Read(int Fd) struct timeval now; gettimeofday(&now,0); - unsigned long d = (now.tv_sec-CircleBuf::BwReadTick.tv_sec)*1000000 + + unsigned long long d = (now.tv_sec-CircleBuf::BwReadTick.tv_sec)*1000000 + now.tv_usec-CircleBuf::BwReadTick.tv_usec; if(d > 1000000/BW_HZ) { CircleBuf::BwReadTick = now; @@ -131,7 +135,7 @@ bool CircleBuf::Read(int Fd) } // Write the buffer segment - int Res; + ssize_t Res; if(CircleBuf::BwReadLimit) { Res = read(Fd,Buf + (InP%Size), BwReadMax > LeftRead() ? LeftRead() : BwReadMax); @@ -180,7 +184,7 @@ void CircleBuf::FillOut() return; // Write the buffer segment - unsigned long Sz = LeftRead(); + unsigned long long Sz = LeftRead(); if (OutQueue.length() - StrPos < Sz) Sz = OutQueue.length() - StrPos; memcpy(Buf + (InP%Size),OutQueue.c_str() + StrPos,Sz); @@ -214,7 +218,7 @@ bool CircleBuf::Write(int Fd) return true; // Write the buffer segment - int Res; + ssize_t Res; Res = write(Fd,Buf + (OutP%Size),LeftWrite()); if (Res == 0) @@ -240,7 +244,7 @@ bool CircleBuf::Write(int Fd) bool CircleBuf::WriteTillEl(string &Data,bool Single) { // We cheat and assume it is unneeded to have more than one buffer load - for (unsigned long I = OutP; I < InP; I++) + for (unsigned long long I = OutP; I < InP; I++) { if (Buf[I%Size] != '\n') continue; @@ -258,7 +262,7 @@ bool CircleBuf::WriteTillEl(string &Data,bool Single) Data = ""; while (OutP < I) { - unsigned long Sz = LeftWrite(); + unsigned long long Sz = LeftWrite(); if (Sz == 0) return false; if (I - OutP < Sz) @@ -286,6 +290,11 @@ void CircleBuf::Stats() clog << "Got " << InP << " in " << Diff << " at " << InP/Diff << endl;*/ } /*}}}*/ +CircleBuf::~CircleBuf() +{ + delete [] Buf; + delete Hash; +} // ServerState::ServerState - Constructor /*{{{*/ // --------------------------------------------------------------------- @@ -453,7 +462,7 @@ bool ServerState::RunData() return false; // See if we are done - unsigned long Len = strtol(Data.c_str(),0,16); + unsigned long long Len = strtoull(Data.c_str(),0,16); if (Len == 0) { In.Limit(-1); @@ -526,10 +535,6 @@ bool ServerState::HeaderLine(string Line) if (Line.empty() == true) return true; - // The http server might be trying to do something evil. - if (Line.length() >= MAXLEN) - return _error->Error(_("Got a single header line over %u chars"),MAXLEN); - string::size_type Pos = Line.find(' '); if (Pos == string::npos || Pos+1 > Line.length()) { @@ -553,7 +558,7 @@ bool ServerState::HeaderLine(string Line) // Evil servers return no version if (Line[4] == '/') { - int const elements = sscanf(Line.c_str(),"HTTP/%u.%u %u%[^\n]",&Major,&Minor,&Result,Code); + int const elements = sscanf(Line.c_str(),"HTTP/%3u.%3u %3u%359[^\n]",&Major,&Minor,&Result,Code); if (elements == 3) { Code[0] = '\0'; @@ -567,7 +572,7 @@ bool ServerState::HeaderLine(string Line) { Major = 0; Minor = 9; - if (sscanf(Line.c_str(),"HTTP %u%[^\n]",&Result,Code) != 2) + if (sscanf(Line.c_str(),"HTTP %3u%359[^\n]",&Result,Code) != 2) return _error->Error(_("The HTTP server sent an invalid reply header")); } @@ -577,7 +582,7 @@ bool ServerState::HeaderLine(string Line) Persistent = false; else { - if (Major == 1 && Minor <= 0) + if (Major == 1 && Minor == 0) Persistent = false; else Persistent = true; @@ -595,9 +600,10 @@ bool ServerState::HeaderLine(string Line) // The length is already set from the Content-Range header if (StartPos != 0) return true; - - if (sscanf(Val.c_str(),"%lu",&Size) != 1) - return _error->Error(_("The HTTP server sent an invalid Content-Length header")); + + Size = strtoull(Val.c_str(), NULL, 10); + if (Size == ULLONG_MAX) + return _error->Errno("HeaderLine", _("The HTTP server sent an invalid Content-Length header")); return true; } @@ -611,9 +617,9 @@ bool ServerState::HeaderLine(string Line) { HaveContent = true; - if (sscanf(Val.c_str(),"bytes %lu-%*u/%lu",&StartPos,&Size) != 2) + if (sscanf(Val.c_str(),"bytes %llu-%*u/%llu",&StartPos,&Size) != 2) return _error->Error(_("The HTTP server sent an invalid Content-Range header")); - if ((unsigned)StartPos > Size) + if ((unsigned long long)StartPos > Size) return _error->Error(_("This HTTP server has broken range support")); return true; } @@ -708,7 +714,19 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) } } - + // If we ask for uncompressed files servers might respond with content- + // negotation which lets us end up with compressed files we do not support, + // see 657029, 657560 and co, so if we have no extension on the request + // ask for text only. As a sidenote: If there is nothing to negotate servers + // seem to be nice and ignore it. + if (_config->FindB("Acquire::http::SendAccept", true) == true) + { + size_t const filepos = Itm->Uri.find_last_of('/'); + string const file = Itm->Uri.substr(filepos + 1); + if (flExtension(file) == file) + strcat(Buf,"Accept: text/*\r\n"); + } + string Req = Buf; // Check for a partial file @@ -716,7 +734,7 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) if (stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0) { // In this case we send an if-range query with a range header - sprintf(Buf,"Range: bytes=%li-\r\nIf-Range: %s\r\n",(long)SBuf.st_size - 1, + sprintf(Buf,"Range: bytes=%lli-\r\nIf-Range: %s\r\n",(long long)SBuf.st_size - 1, TimeRFC1123(SBuf.st_mtime).c_str()); Req += Buf; } @@ -740,7 +758,7 @@ void HttpMethod::SendReq(FetchItem *Itm,CircleBuf &Out) Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n"; } Req += "User-Agent: " + _config->Find("Acquire::http::User-Agent", - "Debian APT-HTTP/1.3 ("VERSION")") + "\r\n\r\n"; + "Debian APT-HTTP/1.3 ("PACKAGE_VERSION")") + "\r\n\r\n"; if (Debug == true) cerr << Req << endl; @@ -999,31 +1017,21 @@ HttpMethod::DealWithHeaders(FetchResult &Res,ServerState *Srv) 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); @@ -1319,7 +1327,7 @@ int HttpMethod::Loop() after the same URI is seen twice in a queue item. */ StringVector &R = Redirected[Queue->DestFile]; bool StopRedirects = false; - if (R.size() == 0) + if (R.empty() == true) R.push_back(Queue->Uri); else if (R[0] == "STOP" || R.size() > 10) StopRedirects = true; diff --git a/methods/http.h b/methods/http.h index 6302807c5..7a3ccda54 100644 --- a/methods/http.h +++ b/methods/http.h @@ -11,41 +11,42 @@ #ifndef APT_HTTP_H #define APT_HTTP_H -#define MAXLEN 360 +#include <apt-pkg/strutl.h> -#include <apt-pkg/hashes.h> +#include <string> using std::cout; using std::endl; class HttpMethod; +class Hashes; class CircleBuf { unsigned char *Buf; - unsigned long Size; - unsigned long InP; - unsigned long OutP; - string OutQueue; - unsigned long StrPos; - unsigned long MaxGet; + unsigned long long Size; + unsigned long long InP; + unsigned long long OutP; + std::string OutQueue; + unsigned long long StrPos; + unsigned long long MaxGet; struct timeval Start; - static unsigned long BwReadLimit; - static unsigned long BwTickReadData; + static unsigned long long BwReadLimit; + static unsigned long long BwTickReadData; static struct timeval BwReadTick; static const unsigned int BW_HZ; - unsigned long LeftRead() const + unsigned long long LeftRead() const { - unsigned long Sz = Size - (InP - OutP); + unsigned long long Sz = Size - (InP - OutP); if (Sz > Size - (InP%Size)) Sz = Size - (InP%Size); return Sz; } - unsigned long LeftWrite() const + unsigned long long LeftWrite() const { - unsigned long Sz = InP - OutP; + unsigned long long Sz = InP - OutP; if (InP > MaxGet) Sz = MaxGet - OutP; if (Sz > Size - (OutP%Size)) @@ -60,14 +61,14 @@ class CircleBuf // Read data in bool Read(int Fd); - bool Read(string Data); + bool Read(std::string Data); // Write data out bool Write(int Fd); - bool WriteTillEl(string &Data,bool Single = false); + bool WriteTillEl(std::string &Data,bool Single = false); // Control the write limit - void Limit(long Max) {if (Max == -1) MaxGet = 0-1; else MaxGet = OutP + Max;} + void Limit(long long Max) {if (Max == -1) MaxGet = 0-1; else MaxGet = OutP + Max;} bool IsLimit() const {return MaxGet == OutP;}; void Print() const {cout << MaxGet << ',' << OutP << endl;}; @@ -79,8 +80,8 @@ class CircleBuf void Reset(); void Stats(); - CircleBuf(unsigned long Size); - ~CircleBuf() {delete [] Buf; delete Hash;}; + CircleBuf(unsigned long long Size); + ~CircleBuf(); }; struct ServerState @@ -89,17 +90,17 @@ struct ServerState unsigned int Major; unsigned int Minor; unsigned int Result; - char Code[MAXLEN]; + char Code[360]; // These are some statistics from the last parsed header lines - unsigned long Size; - signed long StartPos; + unsigned long long Size; + signed long long StartPos; time_t Date; bool HaveContent; enum {Chunked,Stream,Closes} Encoding; enum {Header, Data} State; bool Persistent; - string Location; + std::string Location; // This is a Persistent attribute of the server itself. bool Pipeline; @@ -112,11 +113,12 @@ struct ServerState int ServerFd; URI ServerName; - bool HeaderLine(string Line); + bool HeaderLine(std::string Line); bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;}; - void Reset() {Major = 0; Minor = 0; Result = 0; Size = 0; StartPos = 0; - Encoding = Closes; time(&Date); ServerFd = -1; - Pipeline = true;}; + void Reset() {Major = 0; Minor = 0; Result = 0; Code[0] = '\0'; Size = 0; + StartPos = 0; Encoding = Closes; time(&Date); HaveContent = false; + State = Header; Persistent = false; ServerFd = -1; + Pipeline = true;}; /** \brief Result of the header acquire */ enum RunHeadersResult { @@ -167,10 +169,10 @@ class HttpMethod : public pkgAcqMethod /** \brief Try to AutoDetect the proxy */ bool AutoDetectProxy(); - virtual bool Configuration(string Message); + virtual bool Configuration(std::string Message); // In the event of a fatal signal this file will be closed and timestamped. - static string FailFile; + static std::string FailFile; static int FailFd; static time_t FailTime; static void SigTerm(int); @@ -178,8 +180,8 @@ class HttpMethod : public pkgAcqMethod protected: virtual bool Fetch(FetchItem *); - string NextURI; - string AutoDetectProxyCmd; + std::string NextURI; + std::string AutoDetectProxyCmd; public: friend struct ServerState; diff --git a/methods/http_main.cc b/methods/http_main.cc index 7815c2fc1..2ca91bfc9 100644 --- a/methods/http_main.cc +++ b/methods/http_main.cc @@ -1,3 +1,5 @@ +#include <config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/acquire-method.h> #include <signal.h> diff --git a/methods/https.cc b/methods/https.cc index fc649d6c2..fac7ba790 100644 --- a/methods/https.cc +++ b/methods/https.cc @@ -10,11 +10,14 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/acquire-method.h> #include <apt-pkg/error.h> #include <apt-pkg/hashes.h> #include <apt-pkg/netrc.h> +#include <apt-pkg/configuration.h> #include <sys/stat.h> #include <sys/time.h> @@ -25,12 +28,11 @@ #include <errno.h> #include <string.h> #include <iostream> -#include <apti18n.h> #include <sstream> #include "config.h" #include "https.h" - +#include <apti18n.h> /*}}}*/ using namespace std; @@ -51,7 +53,7 @@ HttpsMethod::progress_callback(void *clientp, double dltotal, double dlnow, { HttpsMethod *me = (HttpsMethod *)clientp; if(dltotal > 0 && me->Res.Size == 0) { - me->Res.Size = (unsigned long)dltotal; + me->Res.Size = (unsigned long long)dltotal; me->URIStart(me->Res); } return 0; @@ -98,7 +100,6 @@ void HttpsMethod::SetupProxy() /*{{{*/ depth. */ bool HttpsMethod::Fetch(FetchItem *Itm) { - stringstream ss; struct stat SBuf; struct curl_slist *headers=NULL; char curl_errorstr[CURL_ERROR_SIZE]; @@ -197,6 +198,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm) if (_config->FindB("Acquire::https::No-Store", _config->FindB("Acquire::http::No-Store",false)) == true) headers = curl_slist_append(headers,"Cache-Control: no-store"); + stringstream ss; ioprintf(ss, "Cache-Control: max-age=%u", _config->FindI("Acquire::https::Max-Age", _config->FindI("Acquire::http::Max-Age",0))); headers = curl_slist_append(headers, ss.str().c_str()); @@ -217,7 +219,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm) curl_easy_setopt(curl, CURLOPT_USERAGENT, _config->Find("Acquire::https::User-Agent", _config->Find("Acquire::http::User-Agent", - "Debian APT-CURL/1.0 ("VERSION")").c_str()).c_str()); + "Debian APT-CURL/1.0 ("PACKAGE_VERSION")").c_str()).c_str()); // set timeout int const timeout = _config->FindI("Acquire::https::Timeout", @@ -240,15 +242,28 @@ bool HttpsMethod::Fetch(FetchItem *Itm) // error handling curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curl_errorstr); + // If we ask for uncompressed files servers might respond with content- + // negotation which lets us end up with compressed files we do not support, + // see 657029, 657560 and co, so if we have no extension on the request + // ask for text only. As a sidenote: If there is nothing to negotate servers + // seem to be nice and ignore it. + if (_config->FindB("Acquire::https::SendAccept", _config->FindB("Acquire::http::SendAccept", true)) == true) + { + size_t const filepos = Itm->Uri.find_last_of('/'); + string const file = Itm->Uri.substr(filepos + 1); + if (flExtension(file) == file) + headers = curl_slist_append(headers, "Accept: text/*"); + } + // if we have the file send an if-range query with a range header if (stat(Itm->DestFile.c_str(),&SBuf) >= 0 && SBuf.st_size > 0) { char Buf[1000]; - sprintf(Buf,"Range: bytes=%li-\r\nIf-Range: %s\r\n", - (long)SBuf.st_size - 1, - TimeRFC1123(SBuf.st_mtime).c_str()); + sprintf(Buf, "Range: bytes=%li-", (long) SBuf.st_size - 1); + headers = curl_slist_append(headers, Buf); + sprintf(Buf, "If-Range: %s", TimeRFC1123(SBuf.st_mtime).c_str()); headers = curl_slist_append(headers, Buf); - } + } else if(Itm->LastModified > 0) { curl_easy_setopt(curl, CURLOPT_TIMECONDITION, CURL_TIMECOND_IFMODSINCE); @@ -270,14 +285,17 @@ bool HttpsMethod::Fetch(FetchItem *Itm) long curl_servdate; curl_easy_getinfo(curl, CURLINFO_FILETIME, &curl_servdate); + File->Close(); + // cleanup if(success != 0) { _error->Error("%s", curl_errorstr); + // unlink, no need keep 401/404 page content in partial/ + unlink(File->Name().c_str()); Fail(); return true; } - File->Close(); // Timestamp struct utimbuf UBuf; @@ -309,7 +327,7 @@ bool HttpsMethod::Fetch(FetchItem *Itm) // 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 diff --git a/methods/https.h b/methods/https.h index 3f0c416b6..b1961a870 100644 --- a/methods/https.h +++ b/methods/https.h @@ -8,10 +8,8 @@ ##################################################################### */ /*}}}*/ -#ifndef APT_HTTP_H -#define APT_HTTP_H - -#define MAXLEN 360 +#ifndef APT_HTTPS_H +#define APT_HTTPS_H #include <iostream> #include <curl/curl.h> @@ -20,7 +18,7 @@ using std::cout; using std::endl; class HttpsMethod; - +class FileFd; class HttpsMethod : public pkgAcqMethod { @@ -45,6 +43,7 @@ class HttpsMethod : public pkgAcqMethod }; }; +#include <apt-pkg/strutl.h> URI Proxy; #endif diff --git a/methods/makefile b/methods/makefile index 6ba51058e..6fe95f29a 100644 --- a/methods/makefile +++ b/methods/makefile @@ -7,7 +7,7 @@ include ../buildlib/defaults.mak BIN := $(BIN)/methods include ../buildlib/libversion.mak -APT_DOMAIN := libapt-pkg$(LIBAPTPKG_MAJOR) +APT_DOMAIN := apt # The file method PROGRAM=file @@ -67,7 +67,7 @@ include $(PROGRAM_H) # The rred method PROGRAM=rred -SLIBS = -lapt-pkg -lz $(SOCKETLIBS) $(INTLLIBS) +SLIBS = -lapt-pkg $(SOCKETLIBS) $(INTLLIBS) LIB_MAKES = apt-pkg/makefile SOURCE = rred.cc include $(PROGRAM_H) diff --git a/methods/mirror.cc b/methods/mirror.cc index cb24a06cf..eb6d97425 100644 --- a/methods/mirror.cc +++ b/methods/mirror.cc @@ -8,6 +8,9 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ +#include <config.h> + +#include <apt-pkg/aptconfiguration.h> #include <apt-pkg/fileutl.h> #include <apt-pkg/acquire-method.h> #include <apt-pkg/acquire-item.h> @@ -15,7 +18,8 @@ #include <apt-pkg/error.h> #include <apt-pkg/hashes.h> #include <apt-pkg/sourcelist.h> - +#include <apt-pkg/configuration.h> +#include <apt-pkg/metaindex.h> #include <algorithm> #include <fstream> @@ -33,7 +37,7 @@ using namespace std; #include "mirror.h" #include "http.h" -#include "apti18n.h" +#include <apti18n.h> /*}}}*/ /* Done: @@ -120,9 +124,10 @@ bool MirrorMethod::Clean(string Dir) if (I == list.end()) unlink(Dir->d_name); }; - - chdir(StartDir.c_str()); + closedir(D); + if (chdir(StartDir.c_str()) != 0) + return _error->Errno("chdir",_("Unable to change to %s"),StartDir.c_str()); return true; } @@ -134,9 +139,24 @@ bool MirrorMethod::DownloadMirrorFile(string mirror_uri_str) string fetch = BaseUri; fetch.replace(0,strlen("mirror://"),"http://"); +#if 0 // no need for this, the getArchitectures() will also include the main + // arch + // append main architecture + fetch += "?arch=" + _config->Find("Apt::Architecture"); +#endif + + // append all architectures + std::vector<std::string> vec = APT::Configuration::getArchitectures(); + for (std::vector<std::string>::const_iterator I = vec.begin(); + I != vec.end(); ++I) + if (I == vec.begin()) + fetch += "?arch" + (*I); + else + fetch += "&arch=" + (*I); + // append the dist as a query string if (Dist != "") - fetch += "?dist=" + Dist; + fetch += "&dist=" + Dist; if(Debug) clog << "MirrorMethod::DownloadMirrorFile(): '" << fetch << "'" diff --git a/methods/mirror.h b/methods/mirror.h index 97d18144a..81e531e21 100644 --- a/methods/mirror.h +++ b/methods/mirror.h @@ -11,8 +11,9 @@ #ifndef APT_MIRROR_H #define APT_MIRROR_H - #include <iostream> +#include <string> +#include <vector> using std::cout; using std::cerr; @@ -24,29 +25,29 @@ class MirrorMethod : public HttpMethod { FetchResult Res; // we simply transform between BaseUri and Mirror - string BaseUri; // the original mirror://... url - string Mirror; // the selected mirror uri (http://...) - vector<string> AllMirrors; // all available mirrors - string MirrorFile; // the file that contains the list of mirrors + std::string BaseUri; // the original mirror://... url + std::string Mirror; // the selected mirror uri (http://...) + std::vector<std::string> AllMirrors; // all available mirrors + std::string MirrorFile; // the file that contains the list of mirrors bool DownloadedMirrorFile; // already downloaded this session - string Dist; // the target distrubtion (e.g. sid, oneiric) + std::string Dist; // the target distrubtion (e.g. sid, oneiric) bool Debug; protected: - bool DownloadMirrorFile(string uri); - bool RandomizeMirrorFile(string file); - string GetMirrorFileName(string uri); + bool DownloadMirrorFile(std::string uri); + bool RandomizeMirrorFile(std::string file); + std::string GetMirrorFileName(std::string uri); bool InitMirrors(); bool TryNextMirror(); void CurrentQueueUriToMirror(); - bool Clean(string dir); + bool Clean(std::string dir); // we need to overwrite those to transform the url back - virtual void Fail(string Why, bool Transient = false); + virtual void Fail(std::string Why, bool Transient = false); virtual void URIStart(FetchResult &Res); virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0); - virtual bool Configuration(string Message); + virtual bool Configuration(std::string Message); public: MirrorMethod(); diff --git a/methods/rfc2553emu.cc b/methods/rfc2553emu.cc index 66bc906e9..f00e85889 100644 --- a/methods/rfc2553emu.cc +++ b/methods/rfc2553emu.cc @@ -14,12 +14,14 @@ ##################################################################### */ /*}}}*/ -#include "rfc2553emu.h" +#include <config.h> + #include <stdlib.h> #include <arpa/inet.h> #include <netinet/in.h> #include <string.h> #include <stdio.h> +#include "rfc2553emu.h" #ifndef HAVE_GETADDRINFO // getaddrinfo - Resolve a hostname /*{{{*/ diff --git a/methods/rred.cc b/methods/rred.cc index 6c55880ca..38554464d 100644 --- a/methods/rred.cc +++ b/methods/rred.cc @@ -1,10 +1,13 @@ // Includes /*{{{*/ +#include <config.h> + #include <apt-pkg/fileutl.h> #include <apt-pkg/mmap.h> #include <apt-pkg/error.h> #include <apt-pkg/acquire-method.h> #include <apt-pkg/strutl.h> #include <apt-pkg/hashes.h> +#include <apt-pkg/configuration.h> #include <sys/stat.h> #include <sys/uio.h> @@ -34,13 +37,10 @@ class RredMethod : public pkgAcqMethod { // 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; @@ -69,10 +69,10 @@ public: * \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; @@ -127,7 +127,7 @@ RredMethod::State RredMethod::applyFile(gzFile &ed_cmds, FILE *in_file, FILE *ou 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; @@ -161,7 +161,7 @@ RredMethod::State RredMethod::applyFile(gzFile &ed_cmds, FILE *in_file, FILE *ou // 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); } @@ -175,44 +175,24 @@ RredMethod::State RredMethod::applyFile(gzFile &ed_cmds, FILE *in_file, FILE *ou return ED_OK; } /*}}}*/ -void RredMethod::copyLinesFromFileToFile(FILE *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 { - fgets(buffer, BUF_SIZE, fin); - 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::copyLinesFromFileToFile(gzFile &fin, FILE *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); - } 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] = ' '; } } @@ -220,21 +200,18 @@ void RredMethod::ignoreLineInFile(gzFile &fin, char *buffer) const { /*{{{*/ 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; } @@ -250,28 +227,32 @@ struct EdCommand { char type; }; #define IOV_COUNT 1024 /* Don't really want IOV_MAX since it can be arbitrarily large */ +ssize_t retry_writev(int fd, const struct iovec *iov, int iovcnt) { + ssize_t Res; + errno = 0; + ssize_t i = 0; + do { + Res = writev(fd, iov + i, iovcnt); + if (Res < 0 && errno == EINTR) + continue; + if (Res < 0) + return _error->Errno("writev",_("Write error")); + iovcnt -= Res; + i += Res; + } while (Res > 0 && iovcnt > 0); + return i; +} #endif /*}}}*/ 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 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) + unsigned long long const ed_size = ed_cmds.Size(); + unsigned long long const in_size = in_file.Size(); + if (ed_size == 0 || in_size == 0) return MMAP_FAILED; EdCommand* commands = 0; @@ -280,10 +261,10 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ const char* begin = (char*) ed_cmds.Data(); const char* end = begin; - const char* ed_end = (char*) ed_cmds.Data() + ed_cmds.Size(); + const char* ed_end = (char*) ed_cmds.Data() + ed_size; const char* input = (char*) in_file.Data(); - const char* input_end = (char*) in_file.Data() + in_file.Size(); + const char* input_end = (char*) in_file.Data() + in_size; size_t i; @@ -367,7 +348,12 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ } if(command_count == command_alloc) { command_alloc = (command_alloc + 64) * 3 / 2; - commands = (EdCommand*) realloc(commands, command_alloc * sizeof(EdCommand)); + EdCommand* newCommands = (EdCommand*) realloc(commands, command_alloc * sizeof(EdCommand)); + if (newCommands == NULL) { + free(commands); + return MMAP_FAILED; + } + commands = newCommands; } commands[command_count++] = cmd; } @@ -406,7 +392,7 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ hash->Add((const unsigned char*) begin, input - begin); if(++iov_size == IOV_COUNT) { - writev(out_file.Fd(), iov, IOV_COUNT); + retry_writev(out_file.Fd(), iov, IOV_COUNT); iov_size = 0; } } @@ -431,7 +417,7 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ iov[iov_size].iov_len); if(++iov_size == IOV_COUNT) { - writev(out_file.Fd(), iov, IOV_COUNT); + retry_writev(out_file.Fd(), iov, IOV_COUNT); iov_size = 0; } } @@ -446,15 +432,15 @@ RredMethod::State RredMethod::patchMMap(FileFd &Patch, FileFd &From, /*{{{*/ } if(iov_size) { - writev(out_file.Fd(), iov, iov_size); + retry_writev(out_file.Fd(), iov, iov_size); iov_size = 0; } for(i = 0; i < iov_size; i += IOV_COUNT) { if(iov_size - i < IOV_COUNT) - writev(out_file.Fd(), iov + i, iov_size - i); + retry_writev(out_file.Fd(), iov + i, iov_size - i); else - writev(out_file.Fd(), iov + i, IOV_COUNT); + retry_writev(out_file.Fd(), iov + i, IOV_COUNT); } delete [] iov; @@ -470,7 +456,7 @@ bool RredMethod::Fetch(FetchItem *Itm) /*{{{*/ { Debug = _config->FindB("Debug::pkgAcquire::RRed", false); URI Get = Itm->Uri; - string Path = Get.Host + Get.Path; // To account for relative paths + std::string Path = Get.Host + Get.Path; // To account for relative paths FetchResult Res; Res.Filename = Itm->DestFile; @@ -486,7 +472,7 @@ bool RredMethod::Fetch(FetchItem *Itm) /*{{{*/ // 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) @@ -523,7 +509,7 @@ bool RredMethod::Fetch(FetchItem *Itm) /*{{{*/ and use the access time from the "old" file */ struct stat BufBase, BufPatch; if (stat(Path.c_str(),&BufBase) != 0 || - stat(string(Path+".ed").c_str(),&BufPatch) != 0) + stat(std::string(Path+".ed").c_str(),&BufPatch) != 0) return _error->Errno("stat",_("Failed to stat")); struct utimbuf TimeBuf; diff --git a/methods/rsh.cc b/methods/rsh.cc index 21f0d0a22..fb3782314 100644 --- a/methods/rsh.cc +++ b/methods/rsh.cc @@ -11,8 +11,12 @@ ##################################################################### */ /*}}}*/ // Include Files /*{{{*/ -#include "rsh.h" +#include <config.h> + #include <apt-pkg/error.h> +#include <apt-pkg/fileutl.h> +#include <apt-pkg/hashes.h> +#include <apt-pkg/configuration.h> #include <sys/stat.h> #include <sys/time.h> @@ -22,6 +26,8 @@ #include <stdio.h> #include <errno.h> #include <stdarg.h> +#include "rsh.h" + #include <apti18n.h> /*}}}*/ @@ -29,14 +35,16 @@ const char *Prog; unsigned long TimeOut = 120; Configuration::Item const *RshOptions = 0; time_t RSHMethod::FailTime = 0; -string RSHMethod::FailFile; +std::string RSHMethod::FailFile; int RSHMethod::FailFd = -1; // RSHConn::RSHConn - Constructor /*{{{*/ // --------------------------------------------------------------------- /* */ RSHConn::RSHConn(URI Srv) : Len(0), WriteFd(-1), ReadFd(-1), - ServerName(Srv), Process(-1) {} + ServerName(Srv), Process(-1) { + Buffer[0] = '\0'; +} /*}}}*/ // RSHConn::RSHConn - Destructor /*{{{*/ // --------------------------------------------------------------------- @@ -82,7 +90,7 @@ bool RSHConn::Open() // RSHConn::Connect - Fire up rsh and connect /*{{{*/ // --------------------------------------------------------------------- /* */ -bool RSHConn::Connect(string Host, string User) +bool RSHConn::Connect(std::string Host, std::string User) { // Create the pipes int Pipes[4] = {-1,-1,-1,-1}; @@ -151,7 +159,7 @@ bool RSHConn::Connect(string Host, string User) // RSHConn::ReadLine - Very simple buffered read with timeout /*{{{*/ // --------------------------------------------------------------------- /* */ -bool RSHConn::ReadLine(string &Text) +bool RSHConn::ReadLine(std::string &Text) { if (Process == -1 || ReadFd == -1) return false; @@ -171,7 +179,7 @@ bool RSHConn::ReadLine(string &Text) continue; I++; - Text = string(Buffer,I); + Text = std::string(Buffer,I); memmove(Buffer,Buffer+I,Len - I); Len -= I; return true; @@ -202,7 +210,7 @@ bool RSHConn::ReadLine(string &Text) // --------------------------------------------------------------------- /* The remote sync flag appends a || echo which will insert blank line once the command completes. */ -bool RSHConn::WriteMsg(string &Text,bool Sync,const char *Fmt,...) +bool RSHConn::WriteMsg(std::string &Text,bool Sync,const char *Fmt,...) { va_list args; va_start(args,Fmt); @@ -248,10 +256,10 @@ bool RSHConn::WriteMsg(string &Text,bool Sync,const char *Fmt,...) // --------------------------------------------------------------------- /* Right now for successfull transfer the file size must be known in advance. */ -bool RSHConn::Size(const char *Path,unsigned long &Size) +bool RSHConn::Size(const char *Path,unsigned long long &Size) { // Query the size - string Msg; + std::string Msg; Size = 0; if (WriteMsg(Msg,true,"find %s -follow -printf '%%s\\n'",Path) == false) @@ -260,7 +268,7 @@ bool RSHConn::Size(const char *Path,unsigned long &Size) // FIXME: Sense if the bad reply is due to a File Not Found. char *End; - Size = strtoul(Msg.c_str(),&End,10); + Size = strtoull(Msg.c_str(),&End,10); if (End == Msg.c_str()) return _error->Error(_("File not found")); return true; @@ -273,7 +281,7 @@ bool RSHConn::ModTime(const char *Path, time_t &Time) { Time = time(&Time); // Query the mod time - string Msg; + std::string Msg; if (WriteMsg(Msg,true,"TZ=UTC find %s -follow -printf '%%TY%%Tm%%Td%%TH%%TM%%TS\\n'",Path) == false) return false; @@ -285,8 +293,8 @@ bool RSHConn::ModTime(const char *Path, time_t &Time) // RSHConn::Get - Get a file /*{{{*/ // --------------------------------------------------------------------- /* */ -bool RSHConn::Get(const char *Path,FileFd &To,unsigned long Resume, - Hashes &Hash,bool &Missing, unsigned long Size) +bool RSHConn::Get(const char *Path,FileFd &To,unsigned long long Resume, + Hashes &Hash,bool &Missing, unsigned long long Size) { Missing = false; @@ -299,19 +307,19 @@ bool RSHConn::Get(const char *Path,FileFd &To,unsigned long Resume, 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; } } // FIXME: Detect file-not openable type errors. - string Jnk; + std::string Jnk; if (WriteMsg(Jnk,false,"dd if=%s bs=2048 skip=%u", Path, Resume / 2048) == false) return false; // Copy loop - unsigned int MyLen = Resume; + unsigned long long MyLen = Resume; unsigned char Buffer[4096]; while (MyLen < Size) { @@ -363,7 +371,7 @@ RSHMethod::RSHMethod() : pkgAcqMethod("1.0",SendConfig) /*}}}*/ // RSHMethod::Configuration - Handle a configuration message /*{{{*/ // --------------------------------------------------------------------- -bool RSHMethod::Configuration(string Message) +bool RSHMethod::Configuration(std::string Message) { char ProgStr[100]; @@ -425,7 +433,7 @@ bool RSHMethod::Fetch(FetchItem *Itm) Status(_("Connecting to %s"), Get.Host.c_str()); // Get the files information - unsigned long Size; + unsigned long long Size; if (Server->Size(File,Size) == false || Server->ModTime(File,FailTime) == false) { @@ -446,7 +454,7 @@ bool RSHMethod::Fetch(FetchItem *Itm) // See if the file exists struct stat Buf; if (stat(Itm->DestFile.c_str(),&Buf) == 0) { - if (Size == (unsigned)Buf.st_size && FailTime == Buf.st_mtime) { + if (Size == (unsigned long long)Buf.st_size && FailTime == Buf.st_mtime) { Res.Size = Buf.st_size; Res.LastModified = Buf.st_mtime; Res.ResumePoint = Buf.st_size; @@ -455,7 +463,7 @@ bool RSHMethod::Fetch(FetchItem *Itm) } // Resume? - if (FailTime == Buf.st_mtime && Size > (unsigned)Buf.st_size) + if (FailTime == Buf.st_mtime && Size > (unsigned long long)Buf.st_size) Res.ResumePoint = Buf.st_size; } diff --git a/methods/rsh.h b/methods/rsh.h index 98ca6a88c..d7efa3f06 100644 --- a/methods/rsh.h +++ b/methods/rsh.h @@ -12,9 +12,9 @@ #include <string> #include <apt-pkg/strutl.h> -#include <apt-pkg/hashes.h> -#include <apt-pkg/acquire-method.h> -#include <apt-pkg/fileutl.h> + +class Hashes; +class FileFd; class RSHConn { @@ -25,15 +25,15 @@ class RSHConn URI ServerName; // Private helper functions - bool ReadLine(string &Text); + bool ReadLine(std::string &Text); public: pid_t Process; // Raw connection IO - bool WriteMsg(string &Text,bool Sync,const char *Fmt,...); - bool Connect(string Host, string User); + bool WriteMsg(std::string &Text,bool Sync,const char *Fmt,...); + bool Connect(std::string Host, std::string User); bool Comp(URI Other) const {return Other.Host == ServerName.Host && Other.Port == ServerName.Port;}; // Connection control @@ -41,23 +41,25 @@ class RSHConn void Close(); // Query - bool Size(const char *Path,unsigned long &Size); + bool Size(const char *Path,unsigned long long &Size); bool ModTime(const char *Path, time_t &Time); - bool Get(const char *Path,FileFd &To,unsigned long Resume, - Hashes &Hash,bool &Missing, unsigned long Size); + bool Get(const char *Path,FileFd &To,unsigned long long Resume, + Hashes &Hash,bool &Missing, unsigned long long Size); RSHConn(URI Srv); ~RSHConn(); }; +#include <apt-pkg/acquire-method.h> + class RSHMethod : public pkgAcqMethod { virtual bool Fetch(FetchItem *Itm); - virtual bool Configuration(string Message); + virtual bool Configuration(std::string Message); RSHConn *Server; - static string FailFile; + static std::string FailFile; static int FailFd; static time_t FailTime; static void SigTerm(int); diff --git a/po/apt-all.pot b/po/apt-all.pot index f3392d204..82d61f4c4 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-14 12:59+0200\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" @@ -17,149 +17,150 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: cmdline/apt-cache.cc:154 +#: cmdline/apt-cache.cc:158 #, c-format msgid "Package %s version %s has an unmet dep:\n" msgstr "" -#: cmdline/apt-cache.cc:282 +#: cmdline/apt-cache.cc:286 msgid "Total package names: " msgstr "" -#: cmdline/apt-cache.cc:284 +#: cmdline/apt-cache.cc:288 msgid "Total package structures: " msgstr "" -#: cmdline/apt-cache.cc:324 +#: cmdline/apt-cache.cc:328 msgid " Normal packages: " msgstr "" -#: cmdline/apt-cache.cc:325 +#: cmdline/apt-cache.cc:329 msgid " Pure virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:326 +#: cmdline/apt-cache.cc:330 msgid " Single virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:327 +#: cmdline/apt-cache.cc:331 msgid " Mixed virtual packages: " msgstr "" -#: cmdline/apt-cache.cc:328 +#: cmdline/apt-cache.cc:332 msgid " Missing: " msgstr "" -#: cmdline/apt-cache.cc:330 +#: cmdline/apt-cache.cc:334 msgid "Total distinct versions: " msgstr "" -#: cmdline/apt-cache.cc:332 +#: cmdline/apt-cache.cc:336 msgid "Total distinct descriptions: " msgstr "" -#: cmdline/apt-cache.cc:334 +#: cmdline/apt-cache.cc:338 msgid "Total dependencies: " msgstr "" -#: cmdline/apt-cache.cc:337 +#: cmdline/apt-cache.cc:341 msgid "Total ver/file relations: " msgstr "" -#: cmdline/apt-cache.cc:339 +#: cmdline/apt-cache.cc:343 msgid "Total Desc/File relations: " msgstr "" -#: cmdline/apt-cache.cc:341 +#: cmdline/apt-cache.cc:345 msgid "Total Provides mappings: " msgstr "" -#: cmdline/apt-cache.cc:353 +#: cmdline/apt-cache.cc:357 msgid "Total globbed strings: " msgstr "" -#: cmdline/apt-cache.cc:367 +#: cmdline/apt-cache.cc:371 msgid "Total dependency version space: " msgstr "" -#: cmdline/apt-cache.cc:372 +#: cmdline/apt-cache.cc:376 msgid "Total slack space: " msgstr "" -#: cmdline/apt-cache.cc:380 +#: cmdline/apt-cache.cc:384 msgid "Total space accounted for: " msgstr "" -#: cmdline/apt-cache.cc:511 cmdline/apt-cache.cc:1139 +#: cmdline/apt-cache.cc:515 cmdline/apt-cache.cc:1143 #, c-format msgid "Package file %s is out of sync." msgstr "" -#: cmdline/apt-cache.cc:589 cmdline/apt-cache.cc:1374 -#: cmdline/apt-cache.cc:1376 cmdline/apt-cache.cc:1453 cmdline/apt-mark.cc:37 -#: cmdline/apt-mark.cc:84 cmdline/apt-mark.cc:160 +#: cmdline/apt-cache.cc:593 cmdline/apt-cache.cc:1378 +#: cmdline/apt-cache.cc:1380 cmdline/apt-cache.cc:1457 cmdline/apt-mark.cc:39 +#: cmdline/apt-mark.cc:86 cmdline/apt-mark.cc:162 msgid "No packages found" msgstr "" -#: cmdline/apt-cache.cc:1218 +#: cmdline/apt-cache.cc:1222 msgid "You must give at least one search pattern" msgstr "" -#: cmdline/apt-cache.cc:1353 +#: cmdline/apt-cache.cc:1357 msgid "This command is deprecated. Please use 'apt-mark showauto' instead." msgstr "" -#: cmdline/apt-cache.cc:1448 apt-pkg/cacheset.cc:440 +#: cmdline/apt-cache.cc:1452 apt-pkg/cacheset.cc:459 #, c-format msgid "Unable to locate package %s" msgstr "" -#: cmdline/apt-cache.cc:1478 +#: cmdline/apt-cache.cc:1482 msgid "Package files:" msgstr "" -#: cmdline/apt-cache.cc:1485 cmdline/apt-cache.cc:1576 +#: cmdline/apt-cache.cc:1489 cmdline/apt-cache.cc:1580 msgid "Cache is out of sync, can't x-ref a package file" msgstr "" #. Show any packages have explicit pins -#: cmdline/apt-cache.cc:1499 +#: cmdline/apt-cache.cc:1503 msgid "Pinned packages:" msgstr "" -#: cmdline/apt-cache.cc:1511 cmdline/apt-cache.cc:1556 +#: cmdline/apt-cache.cc:1515 cmdline/apt-cache.cc:1560 msgid "(not found)" msgstr "" -#: cmdline/apt-cache.cc:1519 +#: cmdline/apt-cache.cc:1523 msgid " Installed: " msgstr "" -#: cmdline/apt-cache.cc:1520 +#: cmdline/apt-cache.cc:1524 msgid " Candidate: " msgstr "" -#: cmdline/apt-cache.cc:1538 cmdline/apt-cache.cc:1546 +#: cmdline/apt-cache.cc:1542 cmdline/apt-cache.cc:1550 msgid "(none)" msgstr "" -#: cmdline/apt-cache.cc:1553 +#: cmdline/apt-cache.cc:1557 msgid " Package pin: " msgstr "" #. Show the priority tables -#: cmdline/apt-cache.cc:1562 +#: cmdline/apt-cache.cc:1566 msgid " Version table:" msgstr "" -#: 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:3235 cmdline/apt-mark.cc:264 cmdline/apt-sortpkgs.cc:144 +#: 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: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" msgstr "" -#: cmdline/apt-cache.cc:1682 +#: cmdline/apt-cache.cc:1686 msgid "" "Usage: apt-cache [options] command\n" " apt-cache [options] showpkg pkg1 [pkg2 ...]\n" @@ -196,28 +197,28 @@ msgid "" "See the apt-cache(8) and apt.conf(5) manual pages for more information.\n" msgstr "" -#: cmdline/apt-cdrom.cc:77 +#: cmdline/apt-cdrom.cc:79 msgid "Please provide a name for this Disc, such as 'Debian 5.0.3 Disk 1'" msgstr "" -#: cmdline/apt-cdrom.cc:92 +#: cmdline/apt-cdrom.cc:94 msgid "Please insert a Disc in the drive and press enter" msgstr "" -#: cmdline/apt-cdrom.cc:127 +#: cmdline/apt-cdrom.cc:129 #, c-format msgid "Failed to mount '%s' to '%s'" msgstr "" -#: cmdline/apt-cdrom.cc:162 +#: cmdline/apt-cdrom.cc:164 msgid "Repeat this process for the rest of the CDs in your set." msgstr "" -#: cmdline/apt-config.cc:44 +#: cmdline/apt-config.cc:46 msgid "Arguments not in pairs" msgstr "" -#: cmdline/apt-config.cc:79 +#: cmdline/apt-config.cc:81 msgid "" "Usage: apt-config [options] command\n" "\n" @@ -233,12 +234,12 @@ msgid "" " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" msgstr "" -#: cmdline/apt-extracttemplates.cc:98 +#: cmdline/apt-extracttemplates.cc:100 #, c-format msgid "%s not a valid DEB package." msgstr "" -#: cmdline/apt-extracttemplates.cc:232 +#: cmdline/apt-extracttemplates.cc:234 msgid "" "Usage: apt-extracttemplates file1 [file2 ...]\n" "\n" @@ -252,40 +253,40 @@ msgid "" " -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" msgstr "" -#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:1164 +#: cmdline/apt-extracttemplates.cc:269 apt-pkg/pkgcachegen.cc:1271 #, c-format msgid "Unable to write to %s" msgstr "" -#: cmdline/apt-extracttemplates.cc:309 +#: cmdline/apt-extracttemplates.cc:311 msgid "Cannot get debconf version. Is debconf installed?" msgstr "" -#: ftparchive/apt-ftparchive.cc:170 ftparchive/apt-ftparchive.cc:347 +#: ftparchive/apt-ftparchive.cc:171 ftparchive/apt-ftparchive.cc:348 msgid "Package extension list is too long" msgstr "" -#: ftparchive/apt-ftparchive.cc:172 ftparchive/apt-ftparchive.cc:189 -#: ftparchive/apt-ftparchive.cc:212 ftparchive/apt-ftparchive.cc:262 -#: ftparchive/apt-ftparchive.cc:276 ftparchive/apt-ftparchive.cc:298 +#: ftparchive/apt-ftparchive.cc:173 ftparchive/apt-ftparchive.cc:190 +#: ftparchive/apt-ftparchive.cc:213 ftparchive/apt-ftparchive.cc:263 +#: ftparchive/apt-ftparchive.cc:277 ftparchive/apt-ftparchive.cc:299 #, c-format msgid "Error processing directory %s" msgstr "" -#: ftparchive/apt-ftparchive.cc:260 +#: ftparchive/apt-ftparchive.cc:261 msgid "Source extension list is too long" msgstr "" -#: ftparchive/apt-ftparchive.cc:377 +#: ftparchive/apt-ftparchive.cc:378 msgid "Error writing header to contents file" msgstr "" -#: ftparchive/apt-ftparchive.cc:407 +#: ftparchive/apt-ftparchive.cc:408 #, c-format msgid "Error processing contents %s" msgstr "" -#: ftparchive/apt-ftparchive.cc:595 +#: ftparchive/apt-ftparchive.cc:596 msgid "" "Usage: apt-ftparchive [options] command\n" "Commands: packages binarypath [overridefile [pathprefix]]\n" @@ -327,136 +328,136 @@ msgid "" " -o=? Set an arbitrary configuration option" msgstr "" -#: ftparchive/apt-ftparchive.cc:801 +#: ftparchive/apt-ftparchive.cc:802 msgid "No selections matched" msgstr "" -#: ftparchive/apt-ftparchive.cc:879 +#: ftparchive/apt-ftparchive.cc:880 #, c-format msgid "Some files are missing in the package file group `%s'" msgstr "" -#: ftparchive/cachedb.cc:43 +#: ftparchive/cachedb.cc:46 #, c-format msgid "DB was corrupted, file renamed to %s.old" msgstr "" -#: ftparchive/cachedb.cc:61 +#: ftparchive/cachedb.cc:64 #, c-format msgid "DB is old, attempting to upgrade %s" msgstr "" -#: ftparchive/cachedb.cc:72 +#: ftparchive/cachedb.cc:75 msgid "" "DB format is invalid. If you upgraded from an older version of apt, please " "remove and re-create the database." msgstr "" -#: ftparchive/cachedb.cc:77 +#: ftparchive/cachedb.cc:80 #, c-format msgid "Unable to open DB file %s: %s" msgstr "" -#: ftparchive/cachedb.cc:123 apt-inst/extract.cc:178 apt-inst/extract.cc:190 -#: apt-inst/extract.cc:207 apt-inst/deb/dpkgdb.cc:117 +#: ftparchive/cachedb.cc:126 apt-inst/extract.cc:181 apt-inst/extract.cc:193 +#: apt-inst/extract.cc:210 apt-inst/deb/dpkgdb.cc:121 #, c-format msgid "Failed to stat %s" msgstr "" -#: ftparchive/cachedb.cc:242 +#: ftparchive/cachedb.cc:248 msgid "Archive has no control record" msgstr "" -#: ftparchive/cachedb.cc:452 +#: ftparchive/cachedb.cc:489 msgid "Unable to get a cursor" msgstr "" -#: ftparchive/writer.cc:78 +#: ftparchive/writer.cc:80 #, c-format msgid "W: Unable to read directory %s\n" msgstr "" -#: ftparchive/writer.cc:83 +#: ftparchive/writer.cc:85 #, c-format msgid "W: Unable to stat %s\n" msgstr "" -#: ftparchive/writer.cc:139 +#: ftparchive/writer.cc:141 msgid "E: " msgstr "" -#: ftparchive/writer.cc:141 +#: ftparchive/writer.cc:143 msgid "W: " msgstr "" -#: ftparchive/writer.cc:148 +#: ftparchive/writer.cc:150 msgid "E: Errors apply to file " msgstr "" -#: ftparchive/writer.cc:166 ftparchive/writer.cc:198 +#: ftparchive/writer.cc:168 ftparchive/writer.cc:200 #, c-format msgid "Failed to resolve %s" msgstr "" -#: ftparchive/writer.cc:179 +#: ftparchive/writer.cc:181 msgid "Tree walking failed" msgstr "" -#: ftparchive/writer.cc:206 +#: ftparchive/writer.cc:208 #, c-format msgid "Failed to open %s" msgstr "" -#: ftparchive/writer.cc:265 +#: ftparchive/writer.cc:267 #, c-format msgid " DeLink %s [%s]\n" msgstr "" -#: ftparchive/writer.cc:273 +#: ftparchive/writer.cc:275 #, c-format msgid "Failed to readlink %s" msgstr "" -#: ftparchive/writer.cc:277 +#: ftparchive/writer.cc:279 #, c-format msgid "Failed to unlink %s" msgstr "" -#: ftparchive/writer.cc:284 +#: ftparchive/writer.cc:286 #, c-format msgid "*** Failed to link %s to %s" msgstr "" -#: ftparchive/writer.cc:294 +#: ftparchive/writer.cc:296 #, c-format msgid " DeLink limit of %sB hit.\n" msgstr "" -#: ftparchive/writer.cc:398 +#: ftparchive/writer.cc:401 msgid "Archive had no package field" msgstr "" -#: ftparchive/writer.cc:406 ftparchive/writer.cc:703 +#: ftparchive/writer.cc:409 ftparchive/writer.cc:711 #, c-format msgid " %s has no override entry\n" msgstr "" -#: ftparchive/writer.cc:472 ftparchive/writer.cc:811 +#: ftparchive/writer.cc:477 ftparchive/writer.cc:827 #, c-format msgid " %s maintainer is %s not %s\n" msgstr "" -#: ftparchive/writer.cc:713 +#: ftparchive/writer.cc:721 #, c-format msgid " %s has no source override entry\n" msgstr "" -#: ftparchive/writer.cc:717 +#: ftparchive/writer.cc:725 #, c-format msgid " %s has no binary override entry either\n" msgstr "" -#: ftparchive/contents.cc:337 ftparchive/contents.cc:368 +#: ftparchive/contents.cc:339 ftparchive/contents.cc:370 msgid "realloc - Failed to allocate memory" msgstr "" @@ -467,17 +468,17 @@ msgstr "" #: ftparchive/override.cc:60 ftparchive/override.cc:166 #, c-format -msgid "Malformed override %s line %lu #1" +msgid "Malformed override %s line %llu #1" msgstr "" #: ftparchive/override.cc:74 ftparchive/override.cc:178 #, c-format -msgid "Malformed override %s line %lu #2" +msgid "Malformed override %s line %llu #2" msgstr "" #: ftparchive/override.cc:88 ftparchive/override.cc:191 #, c-format -msgid "Malformed override %s line %lu #3" +msgid "Malformed override %s line %llu #3" msgstr "" #: ftparchive/override.cc:127 ftparchive/override.cc:201 @@ -485,63 +486,51 @@ msgstr "" msgid "Failed to read the override file %s" msgstr "" -#: ftparchive/multicompress.cc:67 +#: ftparchive/multicompress.cc:70 #, c-format msgid "Unknown compression algorithm '%s'" msgstr "" -#: ftparchive/multicompress.cc:97 +#: ftparchive/multicompress.cc:100 #, c-format msgid "Compressed output %s needs a compression set" msgstr "" -#: ftparchive/multicompress.cc:165 methods/rsh.cc:91 +#: ftparchive/multicompress.cc:168 methods/rsh.cc:97 msgid "Failed to create IPC pipe to subprocess" msgstr "" -#: ftparchive/multicompress.cc:191 +#: ftparchive/multicompress.cc:189 msgid "Failed to create FILE*" msgstr "" -#: ftparchive/multicompress.cc:194 +#: ftparchive/multicompress.cc:192 msgid "Failed to fork" msgstr "" -#: ftparchive/multicompress.cc:208 +#: ftparchive/multicompress.cc:206 msgid "Compress child" msgstr "" -#: ftparchive/multicompress.cc:231 +#: ftparchive/multicompress.cc:229 #, c-format msgid "Internal error, failed to create %s" msgstr "" -#: ftparchive/multicompress.cc:282 -msgid "Failed to create subprocess IPC" -msgstr "" - -#: ftparchive/multicompress.cc:319 -msgid "Failed to exec compressor " -msgstr "" - -#: ftparchive/multicompress.cc:358 -msgid "decompressor" -msgstr "" - -#: ftparchive/multicompress.cc:401 +#: ftparchive/multicompress.cc:304 msgid "IO to subprocess/file failed" msgstr "" -#: ftparchive/multicompress.cc:453 +#: ftparchive/multicompress.cc:342 msgid "Failed to read while computing MD5" msgstr "" -#: ftparchive/multicompress.cc:470 +#: ftparchive/multicompress.cc:358 #, c-format msgid "Problem unlinking %s" msgstr "" -#: ftparchive/multicompress.cc:485 apt-inst/extract.cc:185 +#: ftparchive/multicompress.cc:373 apt-inst/extract.cc:188 #, c-format msgid "Failed to rename %s to %s" msgstr "" @@ -550,133 +539,137 @@ msgstr "" msgid "Y" msgstr "" -#: cmdline/apt-get.cc:157 apt-pkg/cachefilter.cc:29 +#: cmdline/apt-get.cc:140 +msgid "N" +msgstr "" + +#: cmdline/apt-get.cc:162 apt-pkg/cachefilter.cc:31 #, c-format msgid "Regex compilation error - %s" msgstr "" -#: cmdline/apt-get.cc:252 +#: cmdline/apt-get.cc:257 msgid "The following packages have unmet dependencies:" msgstr "" -#: cmdline/apt-get.cc:342 +#: cmdline/apt-get.cc:347 #, c-format msgid "but %s is installed" msgstr "" -#: cmdline/apt-get.cc:344 +#: cmdline/apt-get.cc:349 #, c-format msgid "but %s is to be installed" msgstr "" -#: cmdline/apt-get.cc:351 +#: cmdline/apt-get.cc:356 msgid "but it is not installable" msgstr "" -#: cmdline/apt-get.cc:353 +#: cmdline/apt-get.cc:358 msgid "but it is a virtual package" msgstr "" -#: cmdline/apt-get.cc:356 +#: cmdline/apt-get.cc:361 msgid "but it is not installed" msgstr "" -#: cmdline/apt-get.cc:356 +#: cmdline/apt-get.cc:361 msgid "but it is not going to be installed" msgstr "" -#: cmdline/apt-get.cc:361 +#: cmdline/apt-get.cc:366 msgid " or" msgstr "" -#: cmdline/apt-get.cc:390 +#: cmdline/apt-get.cc:395 msgid "The following NEW packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:416 +#: cmdline/apt-get.cc:421 msgid "The following packages will be REMOVED:" msgstr "" -#: cmdline/apt-get.cc:438 +#: cmdline/apt-get.cc:443 msgid "The following packages have been kept back:" msgstr "" -#: cmdline/apt-get.cc:459 +#: cmdline/apt-get.cc:464 msgid "The following packages will be upgraded:" msgstr "" -#: cmdline/apt-get.cc:480 +#: cmdline/apt-get.cc:485 msgid "The following packages will be DOWNGRADED:" msgstr "" -#: cmdline/apt-get.cc:500 +#: cmdline/apt-get.cc:505 msgid "The following held packages will be changed:" msgstr "" -#: cmdline/apt-get.cc:555 +#: cmdline/apt-get.cc:560 #, c-format msgid "%s (due to %s) " msgstr "" -#: cmdline/apt-get.cc:563 +#: cmdline/apt-get.cc:568 msgid "" "WARNING: The following essential packages will be removed.\n" "This should NOT be done unless you know exactly what you are doing!" msgstr "" -#: cmdline/apt-get.cc:594 +#: cmdline/apt-get.cc:599 #, c-format msgid "%lu upgraded, %lu newly installed, " msgstr "" -#: cmdline/apt-get.cc:598 +#: cmdline/apt-get.cc:603 #, c-format msgid "%lu reinstalled, " msgstr "" -#: cmdline/apt-get.cc:600 +#: cmdline/apt-get.cc:605 #, c-format msgid "%lu downgraded, " msgstr "" -#: cmdline/apt-get.cc:602 +#: cmdline/apt-get.cc:607 #, c-format msgid "%lu to remove and %lu not upgraded.\n" msgstr "" -#: cmdline/apt-get.cc:606 +#: cmdline/apt-get.cc:611 #, c-format msgid "%lu not fully installed or removed.\n" msgstr "" -#: cmdline/apt-get.cc:628 +#: cmdline/apt-get.cc:632 #, c-format msgid "Note, selecting '%s' for task '%s'\n" msgstr "" -#: cmdline/apt-get.cc:634 +#: cmdline/apt-get.cc:637 #, c-format msgid "Note, selecting '%s' for regex '%s'\n" msgstr "" -#: cmdline/apt-get.cc:651 +#: cmdline/apt-get.cc:654 #, c-format msgid "Package %s is a virtual package provided by:\n" msgstr "" -#: cmdline/apt-get.cc:662 +#: cmdline/apt-get.cc:665 msgid " [Installed]" msgstr "" -#: cmdline/apt-get.cc:671 +#: cmdline/apt-get.cc:674 msgid " [Not candidate version]" msgstr "" -#: cmdline/apt-get.cc:673 +#: cmdline/apt-get.cc:676 msgid "You should explicitly select one to install." msgstr "" -#: cmdline/apt-get.cc:676 +#: cmdline/apt-get.cc:679 #, c-format msgid "" "Package %s is not available, but is referred to by another package.\n" @@ -684,177 +677,177 @@ msgid "" "is only available from another source\n" msgstr "" -#: cmdline/apt-get.cc:694 +#: cmdline/apt-get.cc:697 msgid "However the following packages replace it:" msgstr "" -#: cmdline/apt-get.cc:706 +#: cmdline/apt-get.cc:709 #, c-format msgid "Package '%s' has no installation candidate" msgstr "" -#: cmdline/apt-get.cc:717 +#: cmdline/apt-get.cc:720 #, c-format msgid "Virtual packages like '%s' can't be removed\n" msgstr "" -#: cmdline/apt-get.cc:748 +#: cmdline/apt-get.cc:764 #, c-format msgid "Note, selecting '%s' instead of '%s'\n" msgstr "" -#: cmdline/apt-get.cc:778 +#: 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:782 +#: 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:794 +#: cmdline/apt-get.cc:810 #, c-format msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" msgstr "" -#: cmdline/apt-get.cc:799 +#: cmdline/apt-get.cc:815 #, c-format msgid "%s is already the newest version.\n" msgstr "" -#: cmdline/apt-get.cc:818 cmdline/apt-get.cc:2096 cmdline/apt-mark.cc:59 +#: 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:844 +#: cmdline/apt-get.cc:860 #, c-format msgid "Selected version '%s' (%s) for '%s'\n" msgstr "" -#: cmdline/apt-get.cc:849 +#: cmdline/apt-get.cc:865 #, c-format msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" msgstr "" -#: cmdline/apt-get.cc:891 +#: cmdline/apt-get.cc:907 #, c-format msgid "Package %s is not installed, so not removed\n" msgstr "" -#: cmdline/apt-get.cc:969 +#: cmdline/apt-get.cc:985 msgid "Correcting dependencies..." msgstr "" -#: cmdline/apt-get.cc:972 +#: cmdline/apt-get.cc:988 msgid " failed." msgstr "" -#: cmdline/apt-get.cc:975 +#: cmdline/apt-get.cc:991 msgid "Unable to correct dependencies" msgstr "" -#: cmdline/apt-get.cc:978 +#: cmdline/apt-get.cc:994 msgid "Unable to minimize the upgrade set" msgstr "" -#: cmdline/apt-get.cc:980 +#: cmdline/apt-get.cc:996 msgid " Done" msgstr "" -#: cmdline/apt-get.cc:984 +#: cmdline/apt-get.cc:1000 msgid "You might want to run 'apt-get -f install' to correct these." msgstr "" -#: cmdline/apt-get.cc:987 +#: cmdline/apt-get.cc:1003 msgid "Unmet dependencies. Try using -f." msgstr "" -#: cmdline/apt-get.cc:1012 +#: cmdline/apt-get.cc:1028 msgid "WARNING: The following packages cannot be authenticated!" msgstr "" -#: cmdline/apt-get.cc:1016 +#: cmdline/apt-get.cc:1032 msgid "Authentication warning overridden.\n" msgstr "" -#: cmdline/apt-get.cc:1023 +#: cmdline/apt-get.cc:1039 msgid "Install these packages without verification [y/N]? " msgstr "" -#: cmdline/apt-get.cc:1025 +#: cmdline/apt-get.cc:1041 msgid "Some packages could not be authenticated" msgstr "" -#: cmdline/apt-get.cc:1034 cmdline/apt-get.cc:1195 +#: 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:1075 +#: cmdline/apt-get.cc:1091 msgid "Internal error, InstallPackages was called with broken packages!" msgstr "" -#: cmdline/apt-get.cc:1084 +#: cmdline/apt-get.cc:1100 msgid "Packages need to be removed but remove is disabled." msgstr "" -#: cmdline/apt-get.cc:1095 +#: cmdline/apt-get.cc:1111 msgid "Internal error, Ordering didn't finish" msgstr "" -#: cmdline/apt-get.cc:1133 +#: 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:1140 +#: 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:1145 +#: 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:1152 +#: 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:1157 +#: cmdline/apt-get.cc:1173 #, c-format msgid "After this operation, %sB disk space will be freed.\n" msgstr "" -#: cmdline/apt-get.cc:1172 cmdline/apt-get.cc:1175 cmdline/apt-get.cc:2514 -#: cmdline/apt-get.cc:2517 +#: 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:1185 +#: cmdline/apt-get.cc:1201 #, c-format msgid "You don't have enough free space in %s." msgstr "" -#: cmdline/apt-get.cc:1201 cmdline/apt-get.cc:1221 +#: 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:1203 +#: cmdline/apt-get.cc:1219 msgid "Yes, do as I say!" msgstr "" -#: cmdline/apt-get.cc:1205 +#: cmdline/apt-get.cc:1221 #, c-format msgid "" "You are about to do something potentially harmful.\n" @@ -862,46 +855,46 @@ msgid "" " ?] " msgstr "" -#: cmdline/apt-get.cc:1211 cmdline/apt-get.cc:1230 +#: cmdline/apt-get.cc:1227 cmdline/apt-get.cc:1246 msgid "Abort." msgstr "" -#: cmdline/apt-get.cc:1226 +#: cmdline/apt-get.cc:1242 msgid "Do you want to continue [Y/n]? " msgstr "" -#: cmdline/apt-get.cc:1298 cmdline/apt-get.cc:2579 apt-pkg/algorithms.cc:1445 +#: 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:1316 +#: cmdline/apt-get.cc:1332 msgid "Some files failed to download" msgstr "" -#: cmdline/apt-get.cc:1317 cmdline/apt-get.cc:2591 +#: cmdline/apt-get.cc:1333 cmdline/apt-get.cc:2611 msgid "Download complete and in download only mode" msgstr "" -#: cmdline/apt-get.cc:1323 +#: 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:1327 +#: cmdline/apt-get.cc:1343 msgid "--fix-missing and media swapping is not currently supported" msgstr "" -#: cmdline/apt-get.cc:1332 +#: cmdline/apt-get.cc:1348 msgid "Unable to correct missing packages." msgstr "" -#: cmdline/apt-get.cc:1333 +#: cmdline/apt-get.cc:1349 msgid "Aborting install." msgstr "" -#: cmdline/apt-get.cc:1361 +#: cmdline/apt-get.cc:1377 msgid "" "The following package disappeared from your system as\n" "all files have been overwritten by other packages:" @@ -911,35 +904,35 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1365 +#: cmdline/apt-get.cc:1381 msgid "Note: This is done automatic and on purpose by dpkg." msgstr "" -#: cmdline/apt-get.cc:1503 +#: cmdline/apt-get.cc:1519 #, c-format msgid "Ignore unavailable target release '%s' of package '%s'" msgstr "" -#: cmdline/apt-get.cc:1535 +#: 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:1573 +#: cmdline/apt-get.cc:1589 #, c-format msgid "Ignore unavailable version '%s' of package '%s'" msgstr "" -#: cmdline/apt-get.cc:1589 +#: cmdline/apt-get.cc:1605 msgid "The update command takes no arguments" msgstr "" -#: cmdline/apt-get.cc:1652 +#: cmdline/apt-get.cc:1668 msgid "We are not supposed to delete stuff, can't start AutoRemover" msgstr "" -#: cmdline/apt-get.cc:1756 +#: 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." @@ -955,15 +948,15 @@ msgstr "" #. "that package should be filed.") << endl; #. } #. -#: cmdline/apt-get.cc:1759 cmdline/apt-get.cc:1929 +#: 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:1763 +#: cmdline/apt-get.cc:1779 msgid "Internal Error, AutoRemover broke stuff" msgstr "" -#: cmdline/apt-get.cc:1770 +#: cmdline/apt-get.cc:1786 msgid "" "The following package was automatically installed and is no longer required:" msgid_plural "" @@ -972,7 +965,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1774 +#: cmdline/apt-get.cc:1790 #, c-format msgid "%lu package was automatically installed and is no longer required.\n" msgid_plural "" @@ -980,25 +973,25 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: cmdline/apt-get.cc:1776 +#: cmdline/apt-get.cc:1792 msgid "Use 'apt-get autoremove' to remove them." msgstr "" -#: cmdline/apt-get.cc:1795 +#: cmdline/apt-get.cc:1811 msgid "Internal error, AllUpgrade broke stuff" msgstr "" -#: cmdline/apt-get.cc:1894 +#: cmdline/apt-get.cc:1910 msgid "You might want to run 'apt-get -f install' to correct these:" msgstr "" -#: cmdline/apt-get.cc:1898 +#: 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:1914 +#: 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" @@ -1006,80 +999,80 @@ msgid "" "or been moved out of Incoming." msgstr "" -#: cmdline/apt-get.cc:1932 +#: cmdline/apt-get.cc:1950 msgid "Broken packages" msgstr "" -#: cmdline/apt-get.cc:1958 +#: cmdline/apt-get.cc:1976 msgid "The following extra packages will be installed:" msgstr "" -#: cmdline/apt-get.cc:2048 +#: cmdline/apt-get.cc:2066 msgid "Suggested packages:" msgstr "" -#: cmdline/apt-get.cc:2049 +#: cmdline/apt-get.cc:2067 msgid "Recommended packages:" msgstr "" -#: cmdline/apt-get.cc:2091 +#: cmdline/apt-get.cc:2109 #, c-format msgid "Couldn't find package %s" msgstr "" -#: cmdline/apt-get.cc:2098 cmdline/apt-mark.cc:61 +#: cmdline/apt-get.cc:2116 cmdline/apt-mark.cc:63 #, c-format msgid "%s set to automatically installed.\n" msgstr "" -#: cmdline/apt-get.cc:2106 cmdline/apt-mark.cc:105 +#: 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:2122 +#: cmdline/apt-get.cc:2140 msgid "Calculating upgrade... " msgstr "" -#: cmdline/apt-get.cc:2125 methods/ftp.cc:708 methods/connect.cc:111 +#: cmdline/apt-get.cc:2143 methods/ftp.cc:711 methods/connect.cc:115 msgid "Failed" msgstr "" -#: cmdline/apt-get.cc:2130 +#: cmdline/apt-get.cc:2148 msgid "Done" msgstr "" -#: cmdline/apt-get.cc:2197 cmdline/apt-get.cc:2205 +#: cmdline/apt-get.cc:2215 cmdline/apt-get.cc:2223 msgid "Internal error, problem resolver broke stuff" msgstr "" -#: cmdline/apt-get.cc:2233 cmdline/apt-get.cc:2269 +#: cmdline/apt-get.cc:2251 cmdline/apt-get.cc:2287 msgid "Unable to lock the download directory" msgstr "" -#: cmdline/apt-get.cc:2320 +#: cmdline/apt-get.cc:2338 #, c-format msgid "Downloading %s %s" msgstr "" -#: cmdline/apt-get.cc:2376 +#: cmdline/apt-get.cc:2396 msgid "Must specify at least one package to fetch source for" msgstr "" -#: cmdline/apt-get.cc:2416 cmdline/apt-get.cc:2728 +#: 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:2433 +#: 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:2438 +#: cmdline/apt-get.cc:2458 #, c-format msgid "" "Please use:\n" @@ -1087,141 +1080,141 @@ msgid "" "to retrieve the latest (possibly unreleased) updates to the package.\n" msgstr "" -#: cmdline/apt-get.cc:2491 +#: cmdline/apt-get.cc:2511 #, c-format msgid "Skipping already downloaded file '%s'\n" msgstr "" -#: cmdline/apt-get.cc:2528 +#: 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:2537 +#: 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:2542 +#: cmdline/apt-get.cc:2562 #, c-format msgid "Need to get %sB of source archives.\n" msgstr "" -#: cmdline/apt-get.cc:2548 +#: cmdline/apt-get.cc:2568 #, c-format msgid "Fetch source %s\n" msgstr "" -#: cmdline/apt-get.cc:2586 +#: cmdline/apt-get.cc:2606 msgid "Failed to fetch some archives." msgstr "" -#: cmdline/apt-get.cc:2617 +#: cmdline/apt-get.cc:2637 #, c-format msgid "Skipping unpack of already unpacked source in %s\n" msgstr "" -#: cmdline/apt-get.cc:2629 +#: cmdline/apt-get.cc:2649 #, c-format msgid "Unpack command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2630 +#: cmdline/apt-get.cc:2650 #, c-format msgid "Check if the 'dpkg-dev' package is installed.\n" msgstr "" -#: cmdline/apt-get.cc:2652 +#: cmdline/apt-get.cc:2672 #, c-format msgid "Build command '%s' failed.\n" msgstr "" -#: cmdline/apt-get.cc:2672 +#: cmdline/apt-get.cc:2692 msgid "Child process failed" msgstr "" -#: cmdline/apt-get.cc:2691 +#: cmdline/apt-get.cc:2711 msgid "Must specify at least one package to check builddeps for" msgstr "" -#: cmdline/apt-get.cc:2716 +#: 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:2733 +#: cmdline/apt-get.cc:2753 #, c-format msgid "Unable to get build-dependency information for %s" msgstr "" -#: cmdline/apt-get.cc:2753 +#: cmdline/apt-get.cc:2773 #, c-format msgid "%s has no build depends.\n" msgstr "" -#: cmdline/apt-get.cc:2883 +#: 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:2904 +#: 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:2927 +#: 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:2966 +#: 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:2972 +#: 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:2995 +#: cmdline/apt-get.cc:3015 #, c-format msgid "Failed to satisfy %s dependency for %s: %s" msgstr "" -#: cmdline/apt-get.cc:3011 +#: cmdline/apt-get.cc:3031 #, c-format msgid "Build-dependencies for %s could not be satisfied." msgstr "" -#: cmdline/apt-get.cc:3016 +#: cmdline/apt-get.cc:3036 msgid "Failed to process build dependencies" msgstr "" -#: cmdline/apt-get.cc:3109 cmdline/apt-get.cc:3121 +#: cmdline/apt-get.cc:3129 cmdline/apt-get.cc:3141 #, c-format msgid "Changelog for %s (%s)" msgstr "" -#: cmdline/apt-get.cc:3240 +#: cmdline/apt-get.cc:3260 msgid "Supported modules:" msgstr "" -#: cmdline/apt-get.cc:3281 +#: cmdline/apt-get.cc:3301 msgid "" "Usage: apt-get [options] command\n" " apt-get [options] install|remove pkg1 [pkg2 ...]\n" @@ -1267,7 +1260,7 @@ msgid "" " This APT has Super Cow Powers.\n" msgstr "" -#: cmdline/apt-get.cc:3444 +#: cmdline/apt-get.cc:3466 msgid "" "NOTE: This is only a simulation!\n" " apt-get needs root privileges for real execution.\n" @@ -1275,33 +1268,33 @@ msgid "" " so don't depend on the relevance to the real current situation!" msgstr "" -#: cmdline/acqprogress.cc:57 +#: cmdline/acqprogress.cc:59 msgid "Hit " msgstr "" -#: cmdline/acqprogress.cc:81 +#: cmdline/acqprogress.cc:83 msgid "Get:" msgstr "" -#: cmdline/acqprogress.cc:112 +#: cmdline/acqprogress.cc:114 msgid "Ign " msgstr "" -#: cmdline/acqprogress.cc:116 +#: cmdline/acqprogress.cc:118 msgid "Err " msgstr "" -#: cmdline/acqprogress.cc:137 +#: cmdline/acqprogress.cc:139 #, c-format msgid "Fetched %sB in %s (%sB/s)\n" msgstr "" -#: cmdline/acqprogress.cc:227 +#: cmdline/acqprogress.cc:229 #, c-format msgid " [Working]" msgstr "" -#: cmdline/acqprogress.cc:283 +#: cmdline/acqprogress.cc:285 #, c-format msgid "" "Media change: please insert the disc labeled\n" @@ -1309,46 +1302,62 @@ msgid "" "in the drive '%s' and press enter\n" msgstr "" -#: cmdline/apt-mark.cc:46 +#: cmdline/apt-internal-solver.cc:36 +msgid "" +"Usage: apt-internal-resolver\n" +"\n" +"apt-internal-resolver is an interface to use the current internal\n" +"like an external resolver for the APT family for debugging or alike\n" +"\n" +"Options:\n" +" -h This help text.\n" +" -q Loggable output - no progress indicator\n" +" -c=? Read this configuration file\n" +" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n" +"apt.conf(5) manual pages for more information and options.\n" +" This APT has Super Cow Powers.\n" +msgstr "" + +#: cmdline/apt-mark.cc:48 #, c-format msgid "%s can not be marked as it is not installed.\n" msgstr "" -#: cmdline/apt-mark.cc:52 +#: cmdline/apt-mark.cc:54 #, c-format msgid "%s was already set to manually installed.\n" msgstr "" -#: cmdline/apt-mark.cc:54 +#: cmdline/apt-mark.cc:56 #, c-format msgid "%s was already set to automatically installed.\n" msgstr "" -#: cmdline/apt-mark.cc:169 +#: cmdline/apt-mark.cc:171 #, c-format msgid "%s was already set on hold.\n" msgstr "" -#: cmdline/apt-mark.cc:171 +#: cmdline/apt-mark.cc:173 #, c-format msgid "%s was already not hold.\n" msgstr "" -#: cmdline/apt-mark.cc:185 cmdline/apt-mark.cc:207 +#: cmdline/apt-mark.cc:187 cmdline/apt-mark.cc:209 #, c-format msgid "%s set on hold.\n" msgstr "" -#: cmdline/apt-mark.cc:187 cmdline/apt-mark.cc:212 +#: cmdline/apt-mark.cc:189 cmdline/apt-mark.cc:214 #, c-format msgid "Canceled hold on %s.\n" msgstr "" -#: cmdline/apt-mark.cc:220 +#: cmdline/apt-mark.cc:222 msgid "Executing dpkg failed. Are you root?" msgstr "" -#: cmdline/apt-mark.cc:268 +#: cmdline/apt-mark.cc:270 msgid "" "Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n" "\n" @@ -1370,11 +1379,11 @@ msgid "" "See the apt-mark(8) and apt.conf(5) manual pages for more information." msgstr "" -#: cmdline/apt-sortpkgs.cc:86 +#: cmdline/apt-sortpkgs.cc:89 msgid "Unknown package record!" msgstr "" -#: cmdline/apt-sortpkgs.cc:150 +#: cmdline/apt-sortpkgs.cc:153 msgid "" "Usage: apt-sortpkgs [options] file1 [file2 ...]\n" "\n" @@ -1422,196 +1431,196 @@ msgstr "" msgid "Merging available information" msgstr "" -#: apt-inst/contrib/extracttar.cc:114 +#: apt-inst/contrib/extracttar.cc:117 msgid "Failed to create pipes" msgstr "" -#: apt-inst/contrib/extracttar.cc:141 +#: apt-inst/contrib/extracttar.cc:144 msgid "Failed to exec gzip " msgstr "" -#: apt-inst/contrib/extracttar.cc:178 apt-inst/contrib/extracttar.cc:208 +#: apt-inst/contrib/extracttar.cc:181 apt-inst/contrib/extracttar.cc:211 msgid "Corrupted archive" msgstr "" -#: apt-inst/contrib/extracttar.cc:193 +#: apt-inst/contrib/extracttar.cc:196 msgid "Tar checksum failed, archive corrupted" msgstr "" -#: apt-inst/contrib/extracttar.cc:300 +#: apt-inst/contrib/extracttar.cc:303 #, c-format msgid "Unknown TAR header type %u, member %s" msgstr "" -#: apt-inst/contrib/arfile.cc:70 +#: apt-inst/contrib/arfile.cc:74 msgid "Invalid archive signature" msgstr "" -#: apt-inst/contrib/arfile.cc:78 +#: apt-inst/contrib/arfile.cc:82 msgid "Error reading archive member header" msgstr "" -#: apt-inst/contrib/arfile.cc:90 +#: apt-inst/contrib/arfile.cc:94 #, c-format msgid "Invalid archive member header %s" msgstr "" -#: apt-inst/contrib/arfile.cc:102 +#: apt-inst/contrib/arfile.cc:106 msgid "Invalid archive member header" msgstr "" -#: apt-inst/contrib/arfile.cc:128 +#: apt-inst/contrib/arfile.cc:132 msgid "Archive is too short" msgstr "" -#: apt-inst/contrib/arfile.cc:132 +#: apt-inst/contrib/arfile.cc:136 msgid "Failed to read the archive headers" msgstr "" -#: apt-inst/filelist.cc:380 +#: apt-inst/filelist.cc:382 msgid "DropNode called on still linked node" msgstr "" -#: apt-inst/filelist.cc:412 +#: apt-inst/filelist.cc:414 msgid "Failed to locate the hash element!" msgstr "" -#: apt-inst/filelist.cc:459 +#: apt-inst/filelist.cc:461 msgid "Failed to allocate diversion" msgstr "" -#: apt-inst/filelist.cc:464 +#: apt-inst/filelist.cc:466 msgid "Internal error in AddDiversion" msgstr "" -#: apt-inst/filelist.cc:477 +#: apt-inst/filelist.cc:479 #, c-format msgid "Trying to overwrite a diversion, %s -> %s and %s/%s" msgstr "" -#: apt-inst/filelist.cc:506 +#: apt-inst/filelist.cc:508 #, c-format msgid "Double add of diversion %s -> %s" msgstr "" -#: apt-inst/filelist.cc:549 +#: apt-inst/filelist.cc:551 #, c-format msgid "Duplicate conf file %s/%s" msgstr "" -#: apt-inst/dirstream.cc:41 apt-inst/dirstream.cc:47 apt-inst/dirstream.cc:53 +#: apt-inst/dirstream.cc:43 apt-inst/dirstream.cc:49 apt-inst/dirstream.cc:55 #, c-format msgid "Failed to write file %s" msgstr "" -#: apt-inst/dirstream.cc:98 apt-inst/dirstream.cc:106 +#: apt-inst/dirstream.cc:100 apt-inst/dirstream.cc:108 #, c-format msgid "Failed to close file %s" msgstr "" -#: apt-inst/extract.cc:93 apt-inst/extract.cc:164 +#: apt-inst/extract.cc:96 apt-inst/extract.cc:167 #, c-format msgid "The path %s is too long" msgstr "" -#: apt-inst/extract.cc:124 +#: apt-inst/extract.cc:127 #, c-format msgid "Unpacking %s more than once" msgstr "" -#: apt-inst/extract.cc:134 +#: apt-inst/extract.cc:137 #, c-format msgid "The directory %s is diverted" msgstr "" -#: apt-inst/extract.cc:144 +#: apt-inst/extract.cc:147 #, c-format msgid "The package is trying to write to the diversion target %s/%s" msgstr "" -#: apt-inst/extract.cc:154 apt-inst/extract.cc:297 +#: apt-inst/extract.cc:157 apt-inst/extract.cc:300 msgid "The diversion path is too long" msgstr "" -#: apt-inst/extract.cc:240 +#: apt-inst/extract.cc:243 #, c-format msgid "The directory %s is being replaced by a non-directory" msgstr "" -#: apt-inst/extract.cc:280 +#: apt-inst/extract.cc:283 msgid "Failed to locate node in its hash bucket" msgstr "" -#: apt-inst/extract.cc:284 +#: apt-inst/extract.cc:287 msgid "The path is too long" msgstr "" -#: apt-inst/extract.cc:412 +#: apt-inst/extract.cc:415 #, c-format msgid "Overwrite package match with no version for %s" msgstr "" -#: apt-inst/extract.cc:429 +#: apt-inst/extract.cc:432 #, c-format msgid "File %s/%s overwrites the one in the package %s" msgstr "" #. Only warn if there are no sources.list.d. #. 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: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 +#: apt-inst/extract.cc:465 apt-pkg/contrib/cdromutl.cc:183 +#: 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 #, c-format msgid "Unable to read %s" msgstr "" -#: apt-inst/extract.cc:489 +#: apt-inst/extract.cc:492 #, c-format msgid "Unable to stat %s" msgstr "" -#: apt-inst/deb/dpkgdb.cc:51 apt-inst/deb/dpkgdb.cc:57 +#: apt-inst/deb/dpkgdb.cc:55 apt-inst/deb/dpkgdb.cc:61 #, c-format msgid "Failed to remove %s" msgstr "" -#: apt-inst/deb/dpkgdb.cc:106 apt-inst/deb/dpkgdb.cc:108 +#: apt-inst/deb/dpkgdb.cc:110 apt-inst/deb/dpkgdb.cc:112 #, c-format msgid "Unable to create %s" msgstr "" -#: apt-inst/deb/dpkgdb.cc:114 +#: apt-inst/deb/dpkgdb.cc:118 #, c-format msgid "Failed to stat %sinfo" msgstr "" -#: apt-inst/deb/dpkgdb.cc:119 +#: apt-inst/deb/dpkgdb.cc:123 msgid "The info and temp directories need to be on the same filesystem" msgstr "" -#: 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 +#: 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 "" -#: apt-inst/deb/dpkgdb.cc:176 +#: apt-inst/deb/dpkgdb.cc:180 #, c-format msgid "Failed to change to the admin dir %sinfo" msgstr "" -#: apt-inst/deb/dpkgdb.cc:197 apt-inst/deb/dpkgdb.cc:351 -#: apt-inst/deb/dpkgdb.cc:444 +#: apt-inst/deb/dpkgdb.cc:201 apt-inst/deb/dpkgdb.cc:355 +#: apt-inst/deb/dpkgdb.cc:448 msgid "Internal error getting a package name" msgstr "" -#: apt-inst/deb/dpkgdb.cc:201 apt-inst/deb/dpkgdb.cc:382 +#: apt-inst/deb/dpkgdb.cc:205 apt-inst/deb/dpkgdb.cc:386 msgid "Reading file listing" msgstr "" -#: apt-inst/deb/dpkgdb.cc:212 +#: apt-inst/deb/dpkgdb.cc:216 #, c-format msgid "" "Failed to open the list file '%sinfo/%s'. If you cannot restore this file " @@ -1619,482 +1628,487 @@ msgid "" "package!" msgstr "" -#: apt-inst/deb/dpkgdb.cc:225 apt-inst/deb/dpkgdb.cc:238 +#: apt-inst/deb/dpkgdb.cc:229 apt-inst/deb/dpkgdb.cc:242 #, c-format msgid "Failed reading the list file %sinfo/%s" msgstr "" -#: apt-inst/deb/dpkgdb.cc:262 +#: apt-inst/deb/dpkgdb.cc:266 msgid "Internal error getting a node" msgstr "" -#: apt-inst/deb/dpkgdb.cc:305 +#: apt-inst/deb/dpkgdb.cc:309 #, c-format msgid "Failed to open the diversions file %sdiversions" msgstr "" -#: apt-inst/deb/dpkgdb.cc:320 +#: apt-inst/deb/dpkgdb.cc:324 msgid "The diversion file is corrupted" msgstr "" -#: apt-inst/deb/dpkgdb.cc:327 apt-inst/deb/dpkgdb.cc:332 -#: apt-inst/deb/dpkgdb.cc:337 +#: apt-inst/deb/dpkgdb.cc:331 apt-inst/deb/dpkgdb.cc:336 +#: apt-inst/deb/dpkgdb.cc:341 #, c-format msgid "Invalid line in the diversion file: %s" msgstr "" -#: apt-inst/deb/dpkgdb.cc:358 +#: apt-inst/deb/dpkgdb.cc:362 msgid "Internal error adding a diversion" msgstr "" -#: apt-inst/deb/dpkgdb.cc:379 +#: apt-inst/deb/dpkgdb.cc:383 msgid "The pkg cache must be initialized first" msgstr "" -#: apt-inst/deb/dpkgdb.cc:439 +#: apt-inst/deb/dpkgdb.cc:443 #, c-format msgid "Failed to find a Package: header, offset %lu" msgstr "" -#: apt-inst/deb/dpkgdb.cc:461 +#: apt-inst/deb/dpkgdb.cc:465 #, c-format msgid "Bad ConfFile section in the status file. Offset %lu" msgstr "" -#: apt-inst/deb/dpkgdb.cc:466 +#: apt-inst/deb/dpkgdb.cc:470 #, c-format msgid "Error parsing MD5. Offset %lu" msgstr "" -#: apt-inst/deb/debfile.cc:39 apt-inst/deb/debfile.cc:44 +#: apt-inst/deb/debfile.cc:42 apt-inst/deb/debfile.cc:47 #, c-format msgid "This is not a valid DEB archive, missing '%s' member" msgstr "" #. FIXME: add data.tar.xz here - adding it now would require a Translation round for a very small gain -#: apt-inst/deb/debfile.cc:53 +#: apt-inst/deb/debfile.cc:56 #, c-format msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member" msgstr "" -#: apt-inst/deb/debfile.cc:113 +#: apt-inst/deb/debfile.cc:116 #, c-format msgid "Couldn't change to %s" msgstr "" -#: apt-inst/deb/debfile.cc:154 +#: apt-inst/deb/debfile.cc:157 #, c-format msgid "Internal error, could not locate member %s" msgstr "" -#: apt-inst/deb/debfile.cc:189 +#: apt-inst/deb/debfile.cc:192 msgid "Failed to locate a valid control file" msgstr "" -#: apt-inst/deb/debfile.cc:274 +#: apt-inst/deb/debfile.cc:277 msgid "Unparsable control file" msgstr "" -#: methods/bzip2.cc:60 methods/gzip.cc:52 +#: methods/bzip2.cc:63 methods/gzip.cc:54 msgid "Empty files can't be valid archives" msgstr "" -#: methods/bzip2.cc:64 +#: methods/bzip2.cc:67 #, c-format msgid "Couldn't open pipe for %s" msgstr "" -#: methods/bzip2.cc:108 +#: methods/bzip2.cc:111 #, c-format msgid "Read error from %s process" msgstr "" -#: methods/bzip2.cc:140 methods/bzip2.cc:149 methods/copy.cc:43 -#: methods/gzip.cc:92 methods/gzip.cc:101 methods/rred.cc:527 -#: methods/rred.cc:536 +#: methods/bzip2.cc:143 methods/bzip2.cc:152 methods/copy.cc:46 +#: methods/gzip.cc:94 methods/gzip.cc:103 methods/rred.cc:491 +#: methods/rred.cc:500 msgid "Failed to stat" msgstr "" -#: methods/bzip2.cc:146 methods/copy.cc:80 methods/gzip.cc:98 -#: methods/rred.cc:533 +#: methods/bzip2.cc:149 methods/copy.cc:83 methods/gzip.cc:100 +#: methods/rred.cc:497 msgid "Failed to set modification time" msgstr "" -#: methods/cdrom.cc:200 +#: methods/cdrom.cc:203 #, c-format msgid "Unable to read the cdrom database %s" msgstr "" -#: methods/cdrom.cc:209 +#: methods/cdrom.cc:212 msgid "" "Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update " "cannot be used to add new CD-ROMs" msgstr "" -#: methods/cdrom.cc:219 +#: methods/cdrom.cc:222 msgid "Wrong CD-ROM" msgstr "" -#: methods/cdrom.cc:246 +#: methods/cdrom.cc:249 #, c-format msgid "Unable to unmount the CD-ROM in %s, it may still be in use." msgstr "" -#: methods/cdrom.cc:251 +#: methods/cdrom.cc:254 msgid "Disk not found." msgstr "" -#: methods/cdrom.cc:259 methods/file.cc:79 methods/rsh.cc:265 +#: methods/cdrom.cc:262 methods/file.cc:82 methods/rsh.cc:271 msgid "File not found" msgstr "" -#: methods/file.cc:44 +#: methods/file.cc:47 msgid "Invalid URI, local URIS must not start with //" msgstr "" #. Login must be before getpeername otherwise dante won't work. -#: methods/ftp.cc:169 +#: methods/ftp.cc:172 msgid "Logging in" msgstr "" -#: methods/ftp.cc:175 +#: methods/ftp.cc:178 msgid "Unable to determine the peer name" msgstr "" -#: methods/ftp.cc:180 +#: methods/ftp.cc:183 msgid "Unable to determine the local name" msgstr "" -#: methods/ftp.cc:211 methods/ftp.cc:239 +#: methods/ftp.cc:214 methods/ftp.cc:242 #, c-format msgid "The server refused the connection and said: %s" msgstr "" -#: methods/ftp.cc:217 +#: methods/ftp.cc:220 #, c-format msgid "USER failed, server said: %s" msgstr "" -#: methods/ftp.cc:224 +#: methods/ftp.cc:227 #, c-format msgid "PASS failed, server said: %s" msgstr "" -#: methods/ftp.cc:244 +#: methods/ftp.cc:247 msgid "" "A proxy server was specified but no login script, Acquire::ftp::ProxyLogin " "is empty." msgstr "" -#: methods/ftp.cc:272 +#: methods/ftp.cc:275 #, c-format msgid "Login script command '%s' failed, server said: %s" msgstr "" -#: methods/ftp.cc:298 +#: methods/ftp.cc:301 #, c-format msgid "TYPE failed, server said: %s" msgstr "" -#: methods/ftp.cc:336 methods/ftp.cc:447 methods/rsh.cc:184 methods/rsh.cc:227 +#: methods/ftp.cc:339 methods/ftp.cc:450 methods/rsh.cc:190 methods/rsh.cc:233 msgid "Connection timeout" msgstr "" -#: methods/ftp.cc:342 +#: methods/ftp.cc:345 msgid "Server closed the connection" msgstr "" -#: methods/ftp.cc:345 apt-pkg/contrib/fileutl.cc:831 methods/rsh.cc:191 +#: methods/ftp.cc:348 apt-pkg/contrib/fileutl.cc:1065 methods/rsh.cc:197 msgid "Read error" msgstr "" -#: methods/ftp.cc:352 methods/rsh.cc:198 +#: methods/ftp.cc:355 methods/rsh.cc:204 msgid "A response overflowed the buffer." msgstr "" -#: methods/ftp.cc:369 methods/ftp.cc:381 +#: methods/ftp.cc:372 methods/ftp.cc:384 msgid "Protocol corruption" msgstr "" -#: methods/ftp.cc:453 apt-pkg/contrib/fileutl.cc:873 methods/rsh.cc:233 +#: methods/ftp.cc:456 apt-pkg/contrib/fileutl.cc:1139 methods/rsh.cc:239 msgid "Write error" msgstr "" -#: methods/ftp.cc:693 methods/ftp.cc:699 methods/ftp.cc:735 +#: methods/ftp.cc:696 methods/ftp.cc:702 methods/ftp.cc:738 msgid "Could not create a socket" msgstr "" -#: methods/ftp.cc:704 +#: methods/ftp.cc:707 msgid "Could not connect data socket, connection timed out" msgstr "" -#: methods/ftp.cc:710 +#: methods/ftp.cc:713 msgid "Could not connect passive socket." msgstr "" -#: methods/ftp.cc:728 +#: methods/ftp.cc:731 msgid "getaddrinfo was unable to get a listening socket" msgstr "" -#: methods/ftp.cc:742 +#: methods/ftp.cc:745 msgid "Could not bind a socket" msgstr "" -#: methods/ftp.cc:746 +#: methods/ftp.cc:749 msgid "Could not listen on the socket" msgstr "" -#: methods/ftp.cc:753 +#: methods/ftp.cc:756 msgid "Could not determine the socket's name" msgstr "" -#: methods/ftp.cc:785 +#: methods/ftp.cc:788 msgid "Unable to send PORT command" msgstr "" -#: methods/ftp.cc:795 +#: methods/ftp.cc:798 #, c-format msgid "Unknown address family %u (AF_*)" msgstr "" -#: methods/ftp.cc:804 +#: methods/ftp.cc:807 #, c-format msgid "EPRT failed, server said: %s" msgstr "" -#: methods/ftp.cc:824 +#: methods/ftp.cc:827 msgid "Data socket connect timed out" msgstr "" -#: methods/ftp.cc:831 +#: methods/ftp.cc:834 msgid "Unable to accept connection" msgstr "" -#: methods/ftp.cc:870 methods/http.cc:1023 methods/rsh.cc:303 +#: methods/ftp.cc:873 methods/http.cc:1022 methods/rsh.cc:309 msgid "Problem hashing file" msgstr "" -#: methods/ftp.cc:883 +#: methods/ftp.cc:886 #, c-format msgid "Unable to fetch file, server said '%s'" msgstr "" -#: methods/ftp.cc:898 methods/rsh.cc:322 +#: methods/ftp.cc:901 methods/rsh.cc:328 msgid "Data socket timed out" msgstr "" -#: methods/ftp.cc:928 +#: methods/ftp.cc:931 #, c-format msgid "Data transfer failed, server said '%s'" msgstr "" #. Get the files information -#: methods/ftp.cc:1005 +#: methods/ftp.cc:1008 msgid "Query" msgstr "" -#: methods/ftp.cc:1117 +#: methods/ftp.cc:1120 msgid "Unable to invoke " msgstr "" -#: methods/connect.cc:71 +#: methods/connect.cc:75 #, c-format msgid "Connecting to %s (%s)" msgstr "" -#: methods/connect.cc:82 +#: methods/connect.cc:86 #, c-format msgid "[IP: %s %s]" msgstr "" -#: methods/connect.cc:89 +#: methods/connect.cc:93 #, c-format msgid "Could not create a socket for %s (f=%u t=%u p=%u)" msgstr "" -#: methods/connect.cc:95 +#: methods/connect.cc:99 #, c-format msgid "Cannot initiate the connection to %s:%s (%s)." msgstr "" -#: methods/connect.cc:103 +#: methods/connect.cc:107 #, c-format msgid "Could not connect to %s:%s (%s), connection timed out" msgstr "" -#: methods/connect.cc:121 +#: methods/connect.cc:125 #, c-format msgid "Could not connect to %s:%s (%s)." msgstr "" #. We say this mainly because the pause here is for the #. ssh connection that is still going -#: methods/connect.cc:149 methods/rsh.cc:425 +#: methods/connect.cc:153 methods/rsh.cc:431 #, c-format msgid "Connecting to %s" msgstr "" -#: methods/connect.cc:168 methods/connect.cc:187 +#: methods/connect.cc:172 methods/connect.cc:191 #, c-format msgid "Could not resolve '%s'" msgstr "" -#: methods/connect.cc:193 +#: methods/connect.cc:197 #, c-format msgid "Temporary failure resolving '%s'" msgstr "" -#: methods/connect.cc:196 +#: methods/connect.cc:200 #, c-format msgid "Something wicked happened resolving '%s:%s' (%i - %s)" msgstr "" -#: methods/connect.cc:243 +#: methods/connect.cc:247 #, c-format msgid "Unable to connect to %s:%s:" msgstr "" -#: methods/gpgv.cc:166 +#: methods/gpgv.cc:172 msgid "" "Internal error: Good signature, but could not determine key fingerprint?!" msgstr "" -#: methods/gpgv.cc:171 +#: methods/gpgv.cc:177 msgid "At least one invalid signature was encountered." msgstr "" -#: methods/gpgv.cc:175 +#: methods/gpgv.cc:181 msgid "Could not execute 'gpgv' to verify signature (is gpgv installed?)" msgstr "" -#: methods/gpgv.cc:180 +#: methods/gpgv.cc:186 msgid "Unknown error executing gpgv" msgstr "" -#: methods/gpgv.cc:214 methods/gpgv.cc:221 +#: methods/gpgv.cc:220 methods/gpgv.cc:227 msgid "The following signatures were invalid:\n" msgstr "" -#: methods/gpgv.cc:228 +#: methods/gpgv.cc:234 msgid "" "The following signatures couldn't be verified because the public key is not " "available:\n" msgstr "" -#: methods/http.cc:385 +#: methods/http.cc:393 msgid "Waiting for headers" msgstr "" -#: methods/http.cc:531 +#: methods/http.cc:539 #, c-format msgid "Got a single header line over %u chars" msgstr "" -#: methods/http.cc:539 +#: methods/http.cc:547 msgid "Bad header line" msgstr "" -#: methods/http.cc:564 methods/http.cc:571 +#: methods/http.cc:572 methods/http.cc:579 msgid "The HTTP server sent an invalid reply header" msgstr "" -#: methods/http.cc:600 +#: methods/http.cc:608 msgid "The HTTP server sent an invalid Content-Length header" msgstr "" -#: methods/http.cc:615 +#: methods/http.cc:623 msgid "The HTTP server sent an invalid Content-Range header" msgstr "" -#: methods/http.cc:617 +#: methods/http.cc:625 msgid "This HTTP server has broken range support" msgstr "" -#: methods/http.cc:641 +#: methods/http.cc:649 msgid "Unknown date format" msgstr "" -#: methods/http.cc:800 +#: methods/http.cc:808 msgid "Select failed" msgstr "" -#: methods/http.cc:805 +#: methods/http.cc:813 msgid "Connection timed out" msgstr "" -#: methods/http.cc:828 +#: methods/http.cc:836 msgid "Error writing to output file" msgstr "" -#: methods/http.cc:859 +#: methods/http.cc:867 msgid "Error writing to file" msgstr "" -#: methods/http.cc:887 +#: methods/http.cc:895 msgid "Error writing to the file" msgstr "" -#: methods/http.cc:901 +#: methods/http.cc:909 msgid "Error reading from server. Remote end closed connection" msgstr "" -#: methods/http.cc:903 +#: methods/http.cc:911 msgid "Error reading from server" msgstr "" -#: methods/http.cc:1008 apt-pkg/contrib/mmap.cc:291 -msgid "Failed to truncate file" -msgstr "" - -#: methods/http.cc:1183 +#: methods/http.cc:1181 msgid "Bad header data" msgstr "" -#: methods/http.cc:1200 methods/http.cc:1255 +#: methods/http.cc:1198 methods/http.cc:1253 msgid "Connection failed" msgstr "" -#: methods/http.cc:1347 +#: methods/http.cc:1345 msgid "Internal error" msgstr "" -#: apt-pkg/contrib/mmap.cc:77 +#: apt-pkg/contrib/mmap.cc:79 msgid "Can't mmap an empty file" msgstr "" -#: apt-pkg/contrib/mmap.cc:89 +#: apt-pkg/contrib/mmap.cc:109 #, c-format msgid "Couldn't duplicate file descriptor %i" msgstr "" -#: apt-pkg/contrib/mmap.cc:97 apt-pkg/contrib/mmap.cc:258 +#: apt-pkg/contrib/mmap.cc:117 #, c-format -msgid "Couldn't make mmap of %lu bytes" +msgid "Couldn't make mmap of %llu bytes" msgstr "" -#: apt-pkg/contrib/mmap.cc:124 +#: apt-pkg/contrib/mmap.cc:144 msgid "Unable to close mmap" msgstr "" -#: apt-pkg/contrib/mmap.cc:152 apt-pkg/contrib/mmap.cc:180 +#: apt-pkg/contrib/mmap.cc:172 apt-pkg/contrib/mmap.cc:200 msgid "Unable to synchronize mmap" msgstr "" -#: apt-pkg/contrib/mmap.cc:310 +#: apt-pkg/contrib/mmap.cc:278 +#, c-format +msgid "Couldn't make mmap of %lu bytes" +msgstr "" + +#: 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:409 +#: 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:412 +#: apt-pkg/contrib/mmap.cc:432 msgid "" "Unable to increase size of the MMap as automatic growing is disabled by user." msgstr "" @@ -2123,705 +2137,677 @@ msgstr "" msgid "%lis" msgstr "" -#: apt-pkg/contrib/strutl.cc:1137 +#: apt-pkg/contrib/strutl.cc:1165 #, c-format msgid "Selection %s not found" msgstr "" -#: apt-pkg/contrib/configuration.cc:465 +#: apt-pkg/contrib/configuration.cc:468 #, c-format msgid "Unrecognized type abbreviation: '%c'" msgstr "" -#: apt-pkg/contrib/configuration.cc:523 +#: apt-pkg/contrib/configuration.cc:526 #, c-format msgid "Opening configuration file %s" msgstr "" -#: apt-pkg/contrib/configuration.cc:691 +#: apt-pkg/contrib/configuration.cc:694 #, c-format msgid "Syntax error %s:%u: Block starts with no name." msgstr "" -#: apt-pkg/contrib/configuration.cc:710 +#: apt-pkg/contrib/configuration.cc:713 #, c-format msgid "Syntax error %s:%u: Malformed tag" msgstr "" -#: apt-pkg/contrib/configuration.cc:727 +#: apt-pkg/contrib/configuration.cc:730 #, c-format msgid "Syntax error %s:%u: Extra junk after value" msgstr "" -#: apt-pkg/contrib/configuration.cc:767 +#: apt-pkg/contrib/configuration.cc:770 #, c-format msgid "Syntax error %s:%u: Directives can only be done at the top level" msgstr "" -#: apt-pkg/contrib/configuration.cc:774 +#: apt-pkg/contrib/configuration.cc:777 #, c-format msgid "Syntax error %s:%u: Too many nested includes" msgstr "" -#: apt-pkg/contrib/configuration.cc:778 apt-pkg/contrib/configuration.cc:783 +#: apt-pkg/contrib/configuration.cc:781 apt-pkg/contrib/configuration.cc:786 #, c-format msgid "Syntax error %s:%u: Included from here" msgstr "" -#: apt-pkg/contrib/configuration.cc:787 +#: apt-pkg/contrib/configuration.cc:790 #, c-format msgid "Syntax error %s:%u: Unsupported directive '%s'" msgstr "" -#: apt-pkg/contrib/configuration.cc:790 +#: apt-pkg/contrib/configuration.cc:793 #, c-format msgid "Syntax error %s:%u: clear directive requires an option tree as argument" msgstr "" -#: apt-pkg/contrib/configuration.cc:840 +#: apt-pkg/contrib/configuration.cc:843 #, c-format msgid "Syntax error %s:%u: Extra junk at end of file" msgstr "" -#: apt-pkg/contrib/progress.cc:153 +#: apt-pkg/contrib/progress.cc:146 #, c-format msgid "%c%s... Error!" msgstr "" -#: apt-pkg/contrib/progress.cc:155 +#: apt-pkg/contrib/progress.cc:148 #, c-format msgid "%c%s... Done" msgstr "" -#: apt-pkg/contrib/cmndline.cc:77 +#: apt-pkg/contrib/cmndline.cc:80 #, c-format msgid "Command line option '%c' [from %s] is not known." msgstr "" -#: apt-pkg/contrib/cmndline.cc:101 apt-pkg/contrib/cmndline.cc:109 -#: apt-pkg/contrib/cmndline.cc:117 +#: apt-pkg/contrib/cmndline.cc:104 apt-pkg/contrib/cmndline.cc:112 +#: apt-pkg/contrib/cmndline.cc:120 #, c-format msgid "Command line option %s is not understood" msgstr "" -#: apt-pkg/contrib/cmndline.cc:122 +#: apt-pkg/contrib/cmndline.cc:125 #, c-format msgid "Command line option %s is not boolean" msgstr "" -#: apt-pkg/contrib/cmndline.cc:163 apt-pkg/contrib/cmndline.cc:184 +#: apt-pkg/contrib/cmndline.cc:166 apt-pkg/contrib/cmndline.cc:187 #, c-format msgid "Option %s requires an argument." msgstr "" -#: apt-pkg/contrib/cmndline.cc:197 apt-pkg/contrib/cmndline.cc:203 +#: apt-pkg/contrib/cmndline.cc:200 apt-pkg/contrib/cmndline.cc:206 #, c-format msgid "Option %s: Configuration item specification must have an =<val>." msgstr "" -#: apt-pkg/contrib/cmndline.cc:232 +#: apt-pkg/contrib/cmndline.cc:235 #, c-format msgid "Option %s requires an integer argument, not '%s'" msgstr "" -#: apt-pkg/contrib/cmndline.cc:263 +#: apt-pkg/contrib/cmndline.cc:266 #, c-format msgid "Option '%s' is too long" msgstr "" -#: apt-pkg/contrib/cmndline.cc:295 +#: apt-pkg/contrib/cmndline.cc:298 #, c-format msgid "Sense %s is not understood, try true or false." msgstr "" -#: apt-pkg/contrib/cmndline.cc:345 +#: apt-pkg/contrib/cmndline.cc:348 #, c-format msgid "Invalid operation %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:52 +#: apt-pkg/contrib/cdromutl.cc:56 #, c-format msgid "Unable to stat the mount point %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:175 apt-pkg/contrib/cdromutl.cc:209 -#: apt-pkg/acquire.cc:460 apt-pkg/acquire.cc:485 apt-pkg/clean.cc:39 -#: methods/mirror.cc:97 +#: apt-pkg/contrib/cdromutl.cc:179 apt-pkg/contrib/cdromutl.cc:213 +#: apt-pkg/acquire.cc:462 apt-pkg/acquire.cc:487 apt-pkg/clean.cc:42 +#: methods/mirror.cc:101 #, c-format msgid "Unable to change to %s" msgstr "" -#: apt-pkg/contrib/cdromutl.cc:220 +#: apt-pkg/contrib/cdromutl.cc:224 msgid "Failed to stat the cdrom" msgstr "" -#: apt-pkg/contrib/fileutl.cc:168 +#: apt-pkg/contrib/fileutl.cc:197 #, c-format msgid "Not using locking for read only lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:173 +#: apt-pkg/contrib/fileutl.cc:202 #, c-format msgid "Could not open lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:191 +#: apt-pkg/contrib/fileutl.cc:220 #, c-format msgid "Not using locking for nfs mounted lock file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:195 +#: apt-pkg/contrib/fileutl.cc:224 #, c-format msgid "Could not get lock %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:335 +#: 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:362 +#: 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:380 +#: 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:389 +#: 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:690 +#: apt-pkg/contrib/fileutl.cc:719 #, c-format msgid "Waited for %s but it wasn't there" msgstr "" -#: apt-pkg/contrib/fileutl.cc:702 +#: apt-pkg/contrib/fileutl.cc:731 #, c-format msgid "Sub-process %s received a segmentation fault." msgstr "" -#: apt-pkg/contrib/fileutl.cc:704 +#: apt-pkg/contrib/fileutl.cc:733 #, c-format msgid "Sub-process %s received signal %u." msgstr "" -#: apt-pkg/contrib/fileutl.cc:708 +#: apt-pkg/contrib/fileutl.cc:737 #, c-format msgid "Sub-process %s returned an error code (%u)" msgstr "" -#: apt-pkg/contrib/fileutl.cc:710 +#: apt-pkg/contrib/fileutl.cc:739 #, c-format msgid "Sub-process %s exited unexpectedly" msgstr "" -#: apt-pkg/contrib/fileutl.cc:775 apt-pkg/indexcopy.cc:673 +#: 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:792 +#: apt-pkg/contrib/fileutl.cc:923 #, c-format msgid "Could not open file descriptor %d" msgstr "" -#: apt-pkg/contrib/fileutl.cc:852 +#: 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 %lu to read but none left" +msgid "read, still have %llu to read but none left" msgstr "" -#: apt-pkg/contrib/fileutl.cc:885 +#: apt-pkg/contrib/fileutl.cc:1152 #, c-format -msgid "write, still have %lu to write but couldn't" +msgid "write, still have %llu to write but couldn't" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1021 +#: apt-pkg/contrib/fileutl.cc:1410 #, c-format msgid "Problem closing the gzip file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1024 +#: apt-pkg/contrib/fileutl.cc:1414 #, c-format msgid "Problem closing the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1029 +#: apt-pkg/contrib/fileutl.cc:1419 #, c-format msgid "Problem renaming the file %s to %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1040 +#: apt-pkg/contrib/fileutl.cc:1430 #, c-format msgid "Problem unlinking the file %s" msgstr "" -#: apt-pkg/contrib/fileutl.cc:1053 +#: apt-pkg/contrib/fileutl.cc:1450 msgid "Problem syncing the file" msgstr "" -#: apt-pkg/pkgcache.cc:145 +#: apt-pkg/pkgcache.cc:148 msgid "Empty package cache" msgstr "" -#: apt-pkg/pkgcache.cc:151 +#: apt-pkg/pkgcache.cc:154 msgid "The package cache file is corrupted" msgstr "" -#: apt-pkg/pkgcache.cc:156 +#: apt-pkg/pkgcache.cc:159 msgid "The package cache file is an incompatible version" msgstr "" -#: apt-pkg/pkgcache.cc:161 +#: apt-pkg/pkgcache.cc:162 +msgid "The package cache file is corrupted, it is too small" +msgstr "" + +#: apt-pkg/pkgcache.cc:167 #, c-format msgid "This APT does not support the versioning system '%s'" msgstr "" -#: apt-pkg/pkgcache.cc:166 +#: apt-pkg/pkgcache.cc:172 msgid "The package cache was built for a different architecture" msgstr "" -#: apt-pkg/pkgcache.cc:299 +#: apt-pkg/pkgcache.cc:305 msgid "Depends" msgstr "" -#: apt-pkg/pkgcache.cc:299 +#: apt-pkg/pkgcache.cc:305 msgid "PreDepends" msgstr "" -#: apt-pkg/pkgcache.cc:299 +#: apt-pkg/pkgcache.cc:305 msgid "Suggests" msgstr "" -#: apt-pkg/pkgcache.cc:300 +#: apt-pkg/pkgcache.cc:306 msgid "Recommends" msgstr "" -#: apt-pkg/pkgcache.cc:300 +#: apt-pkg/pkgcache.cc:306 msgid "Conflicts" msgstr "" -#: apt-pkg/pkgcache.cc:300 +#: apt-pkg/pkgcache.cc:306 msgid "Replaces" msgstr "" -#: apt-pkg/pkgcache.cc:301 +#: apt-pkg/pkgcache.cc:307 msgid "Obsoletes" msgstr "" -#: apt-pkg/pkgcache.cc:301 +#: apt-pkg/pkgcache.cc:307 msgid "Breaks" msgstr "" -#: apt-pkg/pkgcache.cc:301 +#: apt-pkg/pkgcache.cc:307 msgid "Enhances" msgstr "" -#: apt-pkg/pkgcache.cc:312 +#: apt-pkg/pkgcache.cc:318 msgid "important" msgstr "" -#: apt-pkg/pkgcache.cc:312 +#: apt-pkg/pkgcache.cc:318 msgid "required" msgstr "" -#: apt-pkg/pkgcache.cc:312 +#: apt-pkg/pkgcache.cc:318 msgid "standard" msgstr "" -#: apt-pkg/pkgcache.cc:313 +#: apt-pkg/pkgcache.cc:319 msgid "optional" msgstr "" -#: apt-pkg/pkgcache.cc:313 +#: apt-pkg/pkgcache.cc:319 msgid "extra" msgstr "" -#: apt-pkg/depcache.cc:125 apt-pkg/depcache.cc:154 +#: apt-pkg/depcache.cc:132 apt-pkg/depcache.cc:161 msgid "Building dependency tree" msgstr "" -#: apt-pkg/depcache.cc:126 +#: apt-pkg/depcache.cc:133 msgid "Candidate versions" msgstr "" -#: apt-pkg/depcache.cc:155 +#: apt-pkg/depcache.cc:162 msgid "Dependency generation" msgstr "" -#: apt-pkg/depcache.cc:175 apt-pkg/depcache.cc:208 apt-pkg/depcache.cc:212 +#: apt-pkg/depcache.cc:182 apt-pkg/depcache.cc:215 apt-pkg/depcache.cc:219 msgid "Reading state information" msgstr "" -#: apt-pkg/depcache.cc:237 +#: apt-pkg/depcache.cc:244 #, c-format msgid "Failed to open StateFile %s" msgstr "" -#: apt-pkg/depcache.cc:243 +#: apt-pkg/depcache.cc:250 #, c-format msgid "Failed to write temporary StateFile %s" msgstr "" -#: apt-pkg/tagfile.cc:102 +#: apt-pkg/tagfile.cc:126 #, c-format msgid "Unable to parse package file %s (1)" msgstr "" -#: apt-pkg/tagfile.cc:189 +#: apt-pkg/tagfile.cc:213 #, c-format msgid "Unable to parse package file %s (2)" msgstr "" -#: apt-pkg/sourcelist.cc:92 +#: apt-pkg/sourcelist.cc:96 #, c-format msgid "Malformed line %lu in source list %s ([option] unparseable)" msgstr "" -#: apt-pkg/sourcelist.cc:95 +#: apt-pkg/sourcelist.cc:99 #, c-format msgid "Malformed line %lu in source list %s ([option] too short)" msgstr "" -#: apt-pkg/sourcelist.cc:106 +#: apt-pkg/sourcelist.cc:110 #, c-format msgid "Malformed line %lu in source list %s ([%s] is not an assignment)" msgstr "" -#: apt-pkg/sourcelist.cc:112 +#: apt-pkg/sourcelist.cc:116 #, c-format msgid "Malformed line %lu in source list %s ([%s] has no key)" msgstr "" -#: apt-pkg/sourcelist.cc:115 +#: apt-pkg/sourcelist.cc:119 #, c-format msgid "Malformed line %lu in source list %s ([%s] key %s has no value)" msgstr "" -#: apt-pkg/sourcelist.cc:128 +#: apt-pkg/sourcelist.cc:132 #, c-format msgid "Malformed line %lu in source list %s (URI)" msgstr "" -#: apt-pkg/sourcelist.cc:130 +#: apt-pkg/sourcelist.cc:134 #, c-format msgid "Malformed line %lu in source list %s (dist)" msgstr "" -#: apt-pkg/sourcelist.cc:133 +#: apt-pkg/sourcelist.cc:137 #, c-format msgid "Malformed line %lu in source list %s (URI parse)" msgstr "" -#: apt-pkg/sourcelist.cc:139 +#: apt-pkg/sourcelist.cc:143 #, c-format msgid "Malformed line %lu in source list %s (absolute dist)" msgstr "" -#: apt-pkg/sourcelist.cc:146 +#: apt-pkg/sourcelist.cc:150 #, c-format msgid "Malformed line %lu in source list %s (dist parse)" msgstr "" -#: apt-pkg/sourcelist.cc:244 +#: apt-pkg/sourcelist.cc:248 #, c-format msgid "Opening %s" msgstr "" -#: apt-pkg/sourcelist.cc:261 apt-pkg/cdrom.cc:444 +#: apt-pkg/sourcelist.cc:265 apt-pkg/cdrom.cc:485 #, c-format msgid "Line %u too long in source list %s." msgstr "" -#: apt-pkg/sourcelist.cc:281 +#: apt-pkg/sourcelist.cc:285 #, c-format msgid "Malformed line %u in source list %s (type)" msgstr "" -#: apt-pkg/sourcelist.cc:285 +#: apt-pkg/sourcelist.cc:289 #, c-format msgid "Type '%s' is not known on line %u in source list %s" msgstr "" -#: apt-pkg/packagemanager.cc:335 apt-pkg/packagemanager.cc:645 +#: 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:456 +#: apt-pkg/packagemanager.cc:437 apt-pkg/packagemanager.cc:467 #, c-format -msgid "" -"This installation run will require temporarily removing the essential " -"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if " -"you really want to do it, activate the APT::Force-LoopBreak option." +msgid "Could not configure '%s'. " msgstr "" -#: apt-pkg/packagemanager.cc:501 +#: apt-pkg/packagemanager.cc:507 #, c-format msgid "" -"Could not perform immediate configuration on already unpacked '%s'. Please " -"see man 5 apt.conf under APT::Immediate-Configure for details." +"This installation run will require temporarily removing the essential " +"package %s due to a Conflicts/Pre-Depends loop. This is often bad, but if " +"you really want to do it, activate the APT::Force-LoopBreak option." msgstr "" -#: apt-pkg/pkgrecords.cc:32 +#: apt-pkg/pkgrecords.cc:34 #, c-format msgid "Index file type '%s' is not supported" msgstr "" -#: apt-pkg/algorithms.cc:247 +#: apt-pkg/algorithms.cc:255 #, c-format msgid "" "The package %s needs to be reinstalled, but I can't find an archive for it." msgstr "" -#: apt-pkg/algorithms.cc:1158 +#: apt-pkg/algorithms.cc:1191 msgid "" "Error, pkgProblemResolver::Resolve generated breaks, this may be caused by " "held packages." msgstr "" -#: apt-pkg/algorithms.cc:1160 +#: apt-pkg/algorithms.cc:1193 msgid "Unable to correct problems, you have held broken packages." msgstr "" -#: apt-pkg/algorithms.cc:1471 apt-pkg/algorithms.cc:1473 +#: apt-pkg/algorithms.cc:1518 apt-pkg/algorithms.cc:1520 msgid "" "Some index files failed to download. They have been ignored, or old ones " "used instead." msgstr "" -#: apt-pkg/acquire.cc:79 +#: apt-pkg/acquire.cc:81 #, c-format msgid "List directory %spartial is missing." msgstr "" -#: apt-pkg/acquire.cc:83 +#: apt-pkg/acquire.cc:85 #, c-format msgid "Archives directory %spartial is missing." msgstr "" -#: apt-pkg/acquire.cc:91 +#: apt-pkg/acquire.cc:93 #, c-format msgid "Unable to lock directory %s" msgstr "" #. only show the ETA if it makes sense #. two days -#: apt-pkg/acquire.cc:861 +#: apt-pkg/acquire.cc:864 #, c-format msgid "Retrieving file %li of %li (%s remaining)" msgstr "" -#: apt-pkg/acquire.cc:863 +#: apt-pkg/acquire.cc:866 #, c-format msgid "Retrieving file %li of %li" msgstr "" -#: apt-pkg/acquire-worker.cc:110 +#: apt-pkg/acquire-worker.cc:112 #, c-format msgid "The method driver %s could not be found." msgstr "" -#: apt-pkg/acquire-worker.cc:159 +#: apt-pkg/acquire-worker.cc:161 #, c-format msgid "Method %s did not start correctly" msgstr "" -#: apt-pkg/acquire-worker.cc:423 +#: apt-pkg/acquire-worker.cc:425 #, c-format msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter." msgstr "" -#: apt-pkg/init.cc:146 +#: apt-pkg/init.cc:151 #, c-format msgid "Packaging system '%s' is not supported" msgstr "" -#: apt-pkg/init.cc:162 +#: apt-pkg/init.cc:167 msgid "Unable to determine a suitable packaging system type" msgstr "" -#: apt-pkg/clean.cc:56 +#: apt-pkg/clean.cc:59 #, c-format msgid "Unable to stat %s." msgstr "" -#: apt-pkg/srcrecords.cc:44 +#: apt-pkg/srcrecords.cc:47 msgid "You must put some 'source' URIs in your sources.list" msgstr "" -#: apt-pkg/cachefile.cc:84 +#: apt-pkg/cachefile.cc:87 msgid "The package lists or status file could not be parsed or opened." msgstr "" -#: apt-pkg/cachefile.cc:88 +#: apt-pkg/cachefile.cc:91 msgid "You may want to run apt-get update to correct these problems" msgstr "" -#: apt-pkg/cachefile.cc:106 +#: apt-pkg/cachefile.cc:109 msgid "The list of sources could not be read." msgstr "" -#: apt-pkg/policy.cc:72 +#: apt-pkg/policy.cc:74 #, 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:390 +#: apt-pkg/policy.cc:396 #, c-format msgid "Invalid record in the preferences file %s, no Package header" msgstr "" -#: apt-pkg/policy.cc:412 +#: apt-pkg/policy.cc:418 #, c-format msgid "Did not understand pin type %s" msgstr "" -#: apt-pkg/policy.cc:420 +#: apt-pkg/policy.cc:426 msgid "No priority (or zero) specified for pin" msgstr "" -#: apt-pkg/pkgcachegen.cc:80 +#: apt-pkg/pkgcachegen.cc:85 msgid "Cache has an incompatible versioning system" msgstr "" -#: apt-pkg/pkgcachegen.cc:190 -#, c-format -msgid "Error occurred while processing %s (NewPackage)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:207 -#, c-format -msgid "Error occurred while processing %s (UsePackage1)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:245 +#. TRANSLATOR: The first placeholder is a package name, +#. the other two should be copied verbatim as they include debug info +#: 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 (NewFileDesc1)" +msgid "Error occurred while processing %s (%s%d)" msgstr "" -#: apt-pkg/pkgcachegen.cc:277 -#, c-format -msgid "Error occurred while processing %s (UsePackage2)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:281 -#, c-format -msgid "Error occurred while processing %s (NewFileVer1)" -msgstr "" - -#: 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 "" - -#: apt-pkg/pkgcachegen.cc:312 -#, c-format -msgid "Error occurred while processing %s (UsePackage3)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:345 -#, c-format -msgid "Error occurred while processing %s (NewFileDesc2)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:351 +#: apt-pkg/pkgcachegen.cc:234 msgid "Wow, you exceeded the number of package names this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:354 +#: apt-pkg/pkgcachegen.cc:237 msgid "Wow, you exceeded the number of versions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:357 +#: apt-pkg/pkgcachegen.cc:240 msgid "Wow, you exceeded the number of descriptions this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:360 +#: apt-pkg/pkgcachegen.cc:243 msgid "Wow, you exceeded the number of dependencies this APT is capable of." msgstr "" -#: apt-pkg/pkgcachegen.cc:389 -#, c-format -msgid "Error occurred while processing %s (FindPkg)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:403 -#, c-format -msgid "Error occurred while processing %s (CollectFileProvides)" -msgstr "" - -#: apt-pkg/pkgcachegen.cc:409 +#: apt-pkg/pkgcachegen.cc:517 #, c-format msgid "Package %s %s was not found while processing file dependencies" msgstr "" -#: apt-pkg/pkgcachegen.cc:975 +#: apt-pkg/pkgcachegen.cc:1082 #, c-format msgid "Couldn't stat source package list %s" msgstr "" -#: apt-pkg/pkgcachegen.cc:1080 +#: apt-pkg/pkgcachegen.cc:1187 msgid "Collecting File Provides" msgstr "" -#: apt-pkg/pkgcachegen.cc:1274 apt-pkg/pkgcachegen.cc:1281 +#: apt-pkg/pkgcachegen.cc:1378 apt-pkg/pkgcachegen.cc:1385 msgid "IO Error saving source cache" msgstr "" -#: apt-pkg/acquire-item.cc:135 +#: apt-pkg/acquire-item.cc:139 #, c-format msgid "rename failed, %s (%s -> %s)." msgstr "" -#: apt-pkg/acquire-item.cc:636 +#: apt-pkg/acquire-item.cc:640 msgid "MD5Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:900 apt-pkg/acquire-item.cc:1847 -#: apt-pkg/acquire-item.cc:1990 +#: apt-pkg/acquire-item.cc:911 apt-pkg/acquire-item.cc:1863 +#: apt-pkg/acquire-item.cc:2006 msgid "Hash Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:1387 +#: apt-pkg/acquire-item.cc:1399 #, c-format msgid "" "Unable to find expected entry '%s' in Release file (Wrong sources.list entry " "or malformed file)" msgstr "" -#: apt-pkg/acquire-item.cc:1403 +#: apt-pkg/acquire-item.cc:1415 #, c-format msgid "Unable to find hash sum for '%s' in Release file" msgstr "" -#: apt-pkg/acquire-item.cc:1438 +#: apt-pkg/acquire-item.cc:1450 msgid "There is no public key available for the following key IDs:\n" msgstr "" -#: apt-pkg/acquire-item.cc:1476 +#: apt-pkg/acquire-item.cc:1488 #, 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:1498 +#: apt-pkg/acquire-item.cc:1510 #, c-format msgid "Conflicting distribution: %s (expected %s but got %s)" msgstr "" -#: apt-pkg/acquire-item.cc:1531 +#: apt-pkg/acquire-item.cc:1543 #, c-format msgid "" "A error occurred during the signature verification. The repository is not " @@ -2829,418 +2815,442 @@ msgid "" msgstr "" #. Invalid signature file, reject (LP: #346386) (Closes: #627642) -#: apt-pkg/acquire-item.cc:1541 apt-pkg/acquire-item.cc:1546 +#: apt-pkg/acquire-item.cc:1553 apt-pkg/acquire-item.cc:1558 #, c-format msgid "GPG error: %s: %s" msgstr "" -#: apt-pkg/acquire-item.cc:1638 +#: apt-pkg/acquire-item.cc:1650 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " "to manually fix this package. (due to missing arch)" msgstr "" -#: apt-pkg/acquire-item.cc:1697 +#: apt-pkg/acquire-item.cc:1709 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " "to manually fix this package." msgstr "" -#: apt-pkg/acquire-item.cc:1752 +#: apt-pkg/acquire-item.cc:1768 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" -#: apt-pkg/acquire-item.cc:1839 +#: apt-pkg/acquire-item.cc:1855 msgid "Size mismatch" msgstr "" -#: apt-pkg/indexrecords.cc:53 +#: apt-pkg/indexrecords.cc:61 #, c-format msgid "Unable to parse Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:63 +#: apt-pkg/indexrecords.cc:71 #, c-format msgid "No sections in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:97 +#: apt-pkg/indexrecords.cc:105 #, c-format msgid "No Hash entry in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:110 +#: apt-pkg/indexrecords.cc:118 #, c-format msgid "Invalid 'Valid-Until' entry in Release file %s" msgstr "" -#: apt-pkg/indexrecords.cc:129 +#: apt-pkg/indexrecords.cc:137 #, c-format msgid "Invalid 'Date' entry in Release file %s" msgstr "" -#: apt-pkg/vendorlist.cc:71 +#: apt-pkg/vendorlist.cc:78 #, c-format msgid "Vendor block %s contains no fingerprint" msgstr "" -#: apt-pkg/cdrom.cc:525 +#: apt-pkg/cdrom.cc:566 #, c-format msgid "" "Using CD-ROM mount point %s\n" "Mounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:534 apt-pkg/cdrom.cc:631 +#: apt-pkg/cdrom.cc:575 apt-pkg/cdrom.cc:672 msgid "Identifying.. " msgstr "" -#: apt-pkg/cdrom.cc:562 +#: apt-pkg/cdrom.cc:603 #, c-format msgid "Stored label: %s\n" msgstr "" -#: apt-pkg/cdrom.cc:571 apt-pkg/cdrom.cc:847 +#: apt-pkg/cdrom.cc:612 apt-pkg/cdrom.cc:894 msgid "Unmounting CD-ROM...\n" msgstr "" -#: apt-pkg/cdrom.cc:591 +#: apt-pkg/cdrom.cc:632 #, c-format msgid "Using CD-ROM mount point %s\n" msgstr "" -#: apt-pkg/cdrom.cc:609 +#: apt-pkg/cdrom.cc:650 msgid "Unmounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:614 +#: apt-pkg/cdrom.cc:655 msgid "Waiting for disc...\n" msgstr "" -#: apt-pkg/cdrom.cc:623 +#: apt-pkg/cdrom.cc:664 msgid "Mounting CD-ROM...\n" msgstr "" -#: apt-pkg/cdrom.cc:642 +#: apt-pkg/cdrom.cc:683 msgid "Scanning disc for index files..\n" msgstr "" -#: apt-pkg/cdrom.cc:684 +#: 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:695 +#: 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:722 +#: apt-pkg/cdrom.cc:769 #, c-format msgid "Found label '%s'\n" msgstr "" -#: apt-pkg/cdrom.cc:751 +#: apt-pkg/cdrom.cc:798 msgid "That is not a valid name, try again.\n" msgstr "" -#: apt-pkg/cdrom.cc:768 +#: apt-pkg/cdrom.cc:815 #, c-format msgid "" "This disc is called: \n" "'%s'\n" msgstr "" -#: apt-pkg/cdrom.cc:770 +#: apt-pkg/cdrom.cc:817 msgid "Copying package lists..." msgstr "" -#: apt-pkg/cdrom.cc:797 +#: apt-pkg/cdrom.cc:844 msgid "Writing new source list\n" msgstr "" -#: apt-pkg/cdrom.cc:805 +#: apt-pkg/cdrom.cc:852 msgid "Source list entries for this disc are:\n" msgstr "" -#: apt-pkg/indexcopy.cc:270 apt-pkg/indexcopy.cc:927 +#: apt-pkg/indexcopy.cc:236 apt-pkg/indexcopy.cc:873 #, c-format msgid "Wrote %i records.\n" msgstr "" -#: apt-pkg/indexcopy.cc:272 apt-pkg/indexcopy.cc:929 +#: 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:275 apt-pkg/indexcopy.cc:932 +#: 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:278 apt-pkg/indexcopy.cc:935 +#: 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:537 +#: apt-pkg/indexcopy.cc:503 #, c-format msgid "Skipping nonexistent file %s" msgstr "" -#: apt-pkg/indexcopy.cc:543 +#: apt-pkg/indexcopy.cc:509 #, c-format msgid "Can't find authentication record for: %s" msgstr "" -#: apt-pkg/indexcopy.cc:549 +#: apt-pkg/indexcopy.cc:515 #, c-format msgid "Hash mismatch for: %s" msgstr "" -#: apt-pkg/indexcopy.cc:677 +#: 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:708 +#: apt-pkg/indexcopy.cc:690 #, c-format msgid "No keyring installed in %s." msgstr "" -#: apt-pkg/cacheset.cc:337 +#: apt-pkg/cacheset.cc:352 #, c-format msgid "Release '%s' for '%s' was not found" msgstr "" -#: apt-pkg/cacheset.cc:340 +#: apt-pkg/cacheset.cc:355 #, c-format msgid "Version '%s' for '%s' was not found" msgstr "" -#: apt-pkg/cacheset.cc:447 +#: apt-pkg/cacheset.cc:466 #, c-format msgid "Couldn't find task '%s'" msgstr "" -#: apt-pkg/cacheset.cc:454 +#: apt-pkg/cacheset.cc:472 #, c-format msgid "Couldn't find any package by regex '%s'" msgstr "" -#: apt-pkg/cacheset.cc:467 +#: 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:475 apt-pkg/cacheset.cc:483 +#: 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:491 +#: 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:499 +#: 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:507 +#: apt-pkg/cacheset.cc:520 #, c-format msgid "Can't select installed version from package %s as it is not installed" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:54 +#: apt-pkg/edsp.cc:41 apt-pkg/edsp.cc:61 +msgid "Send scenario to solver" +msgstr "" + +#: apt-pkg/edsp.cc:213 +msgid "Send request to solver" +msgstr "" + +#: apt-pkg/edsp.cc:281 +msgid "Prepare for receiving solution" +msgstr "" + +#: apt-pkg/edsp.cc:288 +msgid "External solver failed without a proper error message" +msgstr "" + +#: apt-pkg/edsp.cc:559 apt-pkg/edsp.cc:562 apt-pkg/edsp.cc:567 +msgid "Execute external solver" +msgstr "" + +#: apt-pkg/deb/dpkgpm.cc:71 #, c-format msgid "Installing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:55 apt-pkg/deb/dpkgpm.cc:848 +#: apt-pkg/deb/dpkgpm.cc:72 apt-pkg/deb/dpkgpm.cc:866 #, c-format msgid "Configuring %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:56 apt-pkg/deb/dpkgpm.cc:855 +#: apt-pkg/deb/dpkgpm.cc:73 apt-pkg/deb/dpkgpm.cc:873 #, c-format msgid "Removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:57 +#: apt-pkg/deb/dpkgpm.cc:74 #, c-format msgid "Completely removing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:58 +#: apt-pkg/deb/dpkgpm.cc:75 #, c-format msgid "Noting disappearance of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:59 +#: apt-pkg/deb/dpkgpm.cc:76 #, c-format msgid "Running post-installation trigger %s" msgstr "" #. FIXME: use a better string after freeze -#: apt-pkg/deb/dpkgpm.cc:654 +#: apt-pkg/deb/dpkgpm.cc:672 #, c-format msgid "Directory '%s' missing" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:669 apt-pkg/deb/dpkgpm.cc:689 +#: apt-pkg/deb/dpkgpm.cc:687 apt-pkg/deb/dpkgpm.cc:707 #, c-format msgid "Could not open file '%s'" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:841 +#: apt-pkg/deb/dpkgpm.cc:859 #, c-format msgid "Preparing %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:842 +#: apt-pkg/deb/dpkgpm.cc:860 #, c-format msgid "Unpacking %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:847 +#: apt-pkg/deb/dpkgpm.cc:865 #, c-format msgid "Preparing to configure %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:849 +#: apt-pkg/deb/dpkgpm.cc:867 #, c-format msgid "Installed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:854 +#: apt-pkg/deb/dpkgpm.cc:872 #, c-format msgid "Preparing for removal of %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:856 +#: apt-pkg/deb/dpkgpm.cc:874 #, c-format msgid "Removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:861 +#: apt-pkg/deb/dpkgpm.cc:879 #, c-format msgid "Preparing to completely remove %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:862 +#: apt-pkg/deb/dpkgpm.cc:880 #, c-format msgid "Completely removed %s" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1087 +#: apt-pkg/deb/dpkgpm.cc:1111 msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1118 +#: apt-pkg/deb/dpkgpm.cc:1141 msgid "Running dpkg" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1344 +#: apt-pkg/deb/dpkgpm.cc:1320 +msgid "Operation was interrupted before it could finish" +msgstr "" + +#: apt-pkg/deb/dpkgpm.cc:1377 msgid "No apport report written because MaxReports is reached already" msgstr "" #. check if its not a follow up error -#: apt-pkg/deb/dpkgpm.cc:1349 +#: apt-pkg/deb/dpkgpm.cc:1382 msgid "dependency problems - leaving unconfigured" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1351 +#: apt-pkg/deb/dpkgpm.cc:1384 msgid "" "No apport report written because the error message indicates its a followup " "error from a previous failure." msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1357 +#: apt-pkg/deb/dpkgpm.cc:1390 msgid "" "No apport report written because the error message indicates a disk full " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1363 +#: apt-pkg/deb/dpkgpm.cc:1396 msgid "" "No apport report written because the error message indicates a out of memory " "error" msgstr "" -#: apt-pkg/deb/dpkgpm.cc:1370 +#: apt-pkg/deb/dpkgpm.cc:1403 msgid "" "No apport report written because the error message indicates a dpkg I/O error" msgstr "" -#: apt-pkg/deb/debsystem.cc:69 +#: apt-pkg/deb/debsystem.cc:84 #, c-format msgid "" "Unable to lock the administration directory (%s), is another process using " "it?" msgstr "" -#: apt-pkg/deb/debsystem.cc:72 +#: apt-pkg/deb/debsystem.cc:87 #, c-format msgid "Unable to lock the administration directory (%s), are you root?" msgstr "" #. TRANSLATORS: the %s contains the recovery command, usually #. dpkg --configure -a -#: apt-pkg/deb/debsystem.cc:88 +#: apt-pkg/deb/debsystem.cc:103 #, c-format msgid "" "dpkg was interrupted, you must manually run '%s' to correct the problem. " msgstr "" -#: apt-pkg/deb/debsystem.cc:106 +#: apt-pkg/deb/debsystem.cc:121 msgid "Not locked" msgstr "" #. FIXME: fallback to a default mirror here instead #. and provide a config option to define that default -#: methods/mirror.cc:260 +#: methods/mirror.cc:279 #, c-format msgid "No mirror file '%s' found " msgstr "" #. FIXME: fallback to a default mirror here instead #. and provide a config option to define that default -#: methods/mirror.cc:267 +#: methods/mirror.cc:286 #, c-format msgid "Can not read mirror file '%s'" msgstr "" -#: methods/mirror.cc:422 +#: methods/mirror.cc:441 #, c-format msgid "[Mirror: %s]" msgstr "" -#: methods/rred.cc:506 +#: 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:511 +#: methods/rred.cc:475 #, c-format msgid "" "Could not patch %s with mmap (but no mmap specific fail) - the patch seems " "to be corrupt." msgstr "" -#: methods/rsh.cc:330 +#: methods/rsh.cc:336 msgid "Connection closed prematurely" msgstr "" diff --git a/po/makefile b/po/makefile index 9f8b7b22e..46b75ff4f 100644 --- a/po/makefile +++ b/po/makefile @@ -29,7 +29,7 @@ GETDOMAIN = $(word 1,$(subst /, ,$(1))) # Generate the list of files from the bits the other make files dropped # and produce the .pot file. $(POTFILES) : $(PO)/%.pot : - printf "%s " "Generating POT file $@" + echo "Generating POT file $@" echo $@ : $(wildcard $(PO)/domains/$*/*.*list) $(addprefix $(BASE)/,$(shell cat $(wildcard $(PO)/domains/$*/*.srclist))) > $@.d # From sh source cat $(PO)/domains/$*/*.shlist 2> /dev/null | (cd $(BASE) && xargs -n1 bash --dump-po-strings) > $(PO)/domains/$*/sh.pot @@ -40,22 +40,19 @@ $(POTFILES) : $(PO)/%.pot : --keyword=P_:1,2 \ --files-from=$(PO)/POTFILES_$*.in -o $(PO)/domains/$*/c.pot rm -f $(PO)/POTFILES_$*.in - $(MSGCOMM) --more-than=0 $(PO)/domains/$*/c.pot $(PO)/domains/$*/sh.pot --output=$@ + $(MSGCOMM) --omit-header --more-than=0 $(PO)/domains/$*/c.pot $(PO)/domains/$*/sh.pot --output=$@ # copy into the domain dirs to make rosetta happy rm -f $(PO)/domains/$*/*.pot cp $@ $(PO)/domains/$* -$(PACKAGE)-all.pot: $(POTFILES) - $(MSGCOMM) --more-than=0 $(POTFILES) --output=$@ - # Filter the complete translation with the domain specific file to produce # only the subtext needed for this domain # We cannot express the dependencies required for this directly with a pattern # rule, so we use the .d hack. -$(LANG_POFILES) : $(PO_DOMAINS)/%.po : $(PACKAGE)-all.pot +$(LANG_POFILES) : $(PO_DOMAINS)/%.po : $(POTFILES) printf "%s " "Generating $@" echo $@ : $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot > $(PO)/$(call GETDOMAIN,$*)_$(notdir $@).d - $(MSGMERGE) $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot -o $@ + $(MSGMERGE) --no-location $(notdir $@) $(PO)/$(call GETDOMAIN,$*).pot -o $@ $(MOFILES) : $(PO_DOMAINS)/%.mo : $(PO_DOMAINS)/%.po printf "%s: " "Generating $(LOCALE)/$(notdir $*)/LC_MESSAGES/$(call GETDOMAIN,$*).mo" @@ -66,7 +63,16 @@ $(MOFILES) : $(PO_DOMAINS)/%.mo : $(PO_DOMAINS)/%.po stats: for i in *.pot *.po; do echo -n "$$i: "; msgfmt --statistics $$i; done -binary: $(POTFILES) $(PACKAGE)-all.pot $(MOFILES) +binary: $(POTFILES) $(MOFILES) + +$(PACKAGE)-all.pot: $(POTFILES) + # we create our partial pot files without a header to avoid changing dates in *.mo files, + # but we want a header for our master-pot file, so we use a dummy pot with nothing but the header + $(XGETTEXT) --default-domain=$(PO)/$(PACKAGE)-dummy.pot --foreign --language=c \ + -o $(PO)/$(PACKAGE)-dummy.pot --force-po --package-name=$(PACKAGE) \ + --package-version=$(PACKAGE_VERSION) --msgid-bugs-address=deity@lists.debian.org /dev/null + $(MSGCOMM) --more-than=0 $(PO)/$(PACKAGE)-dummy.pot $(POTFILES) --output=$(PACKAGE)-all.pot + rm -f $(PO)/$(PACKAGE)-dummy.pot .PHONY: update-po update-po: $(PACKAGE)-all.pot @@ -78,7 +84,7 @@ update-po: $(PACKAGE)-all.pot done clean: clean/local -clean/local: update-po +clean/local: rm -f $(MOFILES) $(LANG_POFILES) $(PO)/*.d # Include the dependencies that are available diff --git a/test/Makefile b/test/Makefile index da0a49b0c..b42a90b25 100644 --- a/test/Makefile +++ b/test/Makefile @@ -6,8 +6,8 @@ ifndef NOISY .SILENT: endif -.PHONY: headers library clean veryclean all binary program doc test -all clean veryclean binary program dirs test: +.PHONY: startup headers library clean veryclean all binary program doc test update-po +startup all clean veryclean binary program dirs test update-po: $(MAKE) -C libapt $@ $(MAKE) -C interactive-helper $@ diff --git a/test/integration/Packages-bug-64141-install-dependencies-for-on-hold b/test/integration/Packages-bug-64141-install-dependencies-for-on-hold deleted file mode 100644 index 7005fa4f4..000000000 --- a/test/integration/Packages-bug-64141-install-dependencies-for-on-hold +++ /dev/null @@ -1,42 +0,0 @@ -Package: apt -Priority: important -Section: admin -Installed-Size: 6048 -Maintainer: APT Development Team <deity@lists.debian.org> -Architecture: i386 -Version: 0.8.10 -Provides: libapt-pkg4.10 -Depends: libc6 (>= 2.10), libdb4.8 -Breaks: oldcrap -Filename: pool/main/a/apt/apt_0.8.10_i386.deb -Size: 2160758 -MD5sum: 5aa2234f7b91056d430669cddf6e6e50 -Description: Advanced front-end for dpkg - -Package: libc6 -Priority: required -Section: libs -Installed-Size: 9356 -Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> -Architecture: i386 -Source: eglibc -Version: 2.11.2-7 -Provides: glibc-2.11-1 -Filename: pool/main/e/eglibc/libc6_2.11.2-7_i386.deb -Size: 3880868 -MD5sum: c48fd2854fc62125824267d086600793 -Description: Embedded GNU C Library: Shared libraries - -Package: libdb4.8 -Priority: standard -Section: libs -Installed-Size: 1488 -Maintainer: Clint Adams <clint@gnu.org> -Architecture: i386 -Source: db4.8 -Version: 4.8.30-3 -Depends: libc6 (>= 2.3.6-6~) -Filename: pool/main/d/db4.8/libdb4.8_4.8.30-3_i386.deb -Size: 681988 -MD5sum: 0d58c15898a95436d2ec480aa22693ff -Description: Berkeley v4.8 Database Libraries [runtime] diff --git a/test/integration/Packages-pdiff-usage-new b/test/integration/Packages-pdiff-usage-new index 9157596a7..4f374b37f 100644 --- a/test/integration/Packages-pdiff-usage-new +++ b/test/integration/Packages-pdiff-usage-new @@ -1,16 +1,3 @@ -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 @@ -35,3 +22,16 @@ Description: Advanced front-end for dpkg . 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 diff --git a/test/integration/framework b/test/integration/framework index a2e71760e..fa4a98f58 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -25,7 +25,15 @@ msgnwarn() { echo -n "${CWARNING}W: $1${CNORMAL}" >&2; } msgnmsg() { echo -n "${CMSG}$1${CNORMAL}" >&2; } msgninfo() { echo -n "${CINFO}I: $1${CNORMAL}" >&2; } msgndebug() { echo -n "${CDEBUG}D: $1${CNORMAL}" >&2; } -msgtest() { echo -n "${CINFO}$1 ${CCMD}$(echo "$2" | sed -e 's/^aptc/apt-c/' -e 's/^aptg/apt-g/' -e 's/^aptf/apt-f/')${CINFO} …${CNORMAL} " >&2; } +msgtest() { + while [ -n "$1" ]; do + echo -n "${CINFO}$1${CCMD} " >&2; + echo -n "$(echo "$2" | sed -e 's/^aptc/apt-c/' -e 's/^aptg/apt-g/' -e 's/^aptf/apt-f/')${CINFO} " >&2; + shift + if [ -n "$1" ]; then shift; else break; fi + done + echo -n "…${CNORMAL} " >&2; +} msgpass() { echo "${CPASS}PASS${CNORMAL}" >&2; } msgskip() { echo "${CWARNING}SKIP${CNORMAL}" >&2; } msgfail() { echo "${CFAIL}FAIL${CNORMAL}" >&2; } @@ -102,14 +110,14 @@ aptitude() { 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() { TMPWORKINGDIRECTORY=$(mktemp -d) - local TESTDIR=$(readlink -f $(dirname $0)) + TESTDIRECTORY=$(readlink -f $(dirname $0)) msgninfo "Preparing environment for ${CCMD}$(basename $0)${CINFO} in ${TMPWORKINGDIRECTORY}… " - BUILDDIRECTORY="${TESTDIR}/../../build/bin" + BUILDDIRECTORY="${TESTDIRECTORY}/../../build/bin" test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first" local OLDWORKINGDIRECTORY=$(pwd) addtrap "cd /; rm -rf $TMPWORKINGDIRECTORY; cd $OLDWORKINGDIRECTORY;" @@ -119,25 +127,19 @@ setupenvironment() { mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d mkdir -p var/cache var/lib var/log mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers - local STATUSFILE=$(echo "$(basename $0)" | sed -e 's/^test-/status-/' -e 's/^skip-/status-/') - if [ -f "${TESTDIR}/${STATUSFILE}" ]; then - cp "${TESTDIR}/${STATUSFILE}" var/lib/dpkg/status - else - touch var/lib/dpkg/status - fi touch var/lib/dpkg/available mkdir -p usr/lib/apt ln -s ${BUILDDIRECTORY}/methods usr/lib/apt/methods cd .. local PACKAGESFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Packages-/' -e 's/^skip-/Packages-/') - if [ -f "${TESTDIR}/${PACKAGESFILE}" ]; then - cp "${TESTDIR}/${PACKAGESFILE}" aptarchive/Packages + if [ -f "${TESTDIRECTORY}/${PACKAGESFILE}" ]; then + cp "${TESTDIRECTORY}/${PACKAGESFILE}" aptarchive/Packages fi local SOURCESSFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Sources-/' -e 's/^skip-/Sources-/') - if [ -f "${TESTDIR}/${SOURCESSFILE}" ]; then - cp "${TESTDIR}/${SOURCESSFILE}" aptarchive/Sources + if [ -f "${TESTDIRECTORY}/${SOURCESSFILE}" ]; then + cp "${TESTDIRECTORY}/${SOURCESSFILE}" aptarchive/Sources fi - cp $(find $TESTDIR -name '*.pub' -o -name '*.sec') keys/ + cp $(find $TESTDIRECTORY -name '*.pub' -o -name '*.sec') keys/ ln -s ${TMPWORKINGDIRECTORY}/keys/joesixpack.pub rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" > aptconfig.conf echo "Dir::state::status \"${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status\";" >> aptconfig.conf @@ -149,6 +151,9 @@ setupenvironment() { echo "DPKG::options:: \"--root=${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf echo "DPKG::options:: \"--force-not-root\";" >> aptconfig.conf echo "DPKG::options:: \"--force-bad-path\";" >> aptconfig.conf + if ! $(which dpkg) --assert-multi-arch; then + echo "DPKG::options:: \"--force-architecture\";" >> aptconfig.conf # Added to test multiarch before dpkg is ready for it… + fi echo "DPKG::options:: \"--log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log\";" >> aptconfig.conf echo 'quiet::NoUpdate "true";' >> aptconfig.conf export LC_ALL=C @@ -156,15 +161,58 @@ setupenvironment() { msgdone "info" } +getarchitecture() { + if [ "$1" = "native" -o -z "$1" ]; then + eval `aptconfig shell ARCH APT::Architecture` + if [ -n "$ARCH" ]; then + echo $ARCH + else + dpkg --print-architecture + fi + else + echo $1 + fi +} + +getarchitectures() { + echo "$(aptconfig dump | grep APT::Architecture | cut -d'"' -f 2 | sed '/^$/ d' | sort | uniq | tr '\n' ' ')" +} + configarchitecture() { local CONFFILE=rootdir/etc/apt/apt.conf.d/01multiarch.conf rm -f $CONFFILE - echo "APT::Architecture \"$1\";" > $CONFFILE + echo "APT::Architecture \"$(getarchitecture $1)\";" > $CONFFILE shift while [ -n "$1" ]; do - echo "APT::Architectures:: \"$1\";" >> $CONFFILE + echo "APT::Architectures:: \"$(getarchitecture $1)\";" >> $CONFFILE shift done + configdpkg +} + +configdpkg() { + if [ ! -e rootdir/var/lib/dpkg/status ]; then + local STATUSFILE=$(echo "$(basename $0)" | sed -e 's/^test-/status-/' -e 's/^skip-/status-/') + if [ -f "${TESTDIRECTORY}/${STATUSFILE}" ]; then + cp "${TESTDIRECTORY}/${STATUSFILE}" rootdir/var/lib/dpkg/status + else + echo -n > rootdir/var/lib/dpkg/status + fi + fi + if $(which dpkg) --assert-multi-arch; then + local ARCHS="$(getarchitectures)" + if echo "$ARCHS" | grep -E -q '[^ ]+ [^ ]+'; then + DPKGARCH="$(dpkg --print-architecture)" + for ARCH in ${ARCHS}; do + if [ "${ARCH}" != "${DPKGARCH}" ]; then dpkg --add-architecture ${ARCH}; fi + done + if [ "0" = "$(dpkg -l dpkg 2> /dev/null | grep '^i' | wc -l)" ]; then + # dpkg doesn't really check the version as long as it is fully installed, + # but just to be sure we choose one above the required version + insertinstalledpackage 'dpkg' "all" '1.16.2+fake' + fi + fi + fi } setupsimplenativepackage() { @@ -275,7 +323,7 @@ Package: $NAME" > ${BUILDDIR}/debian/control echo "pool/${SRC}" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist done - for arch in $(echo "$ARCH" | sed -e 's#,#\n#g'); do + for arch in $(echo "$ARCH" | sed -e 's#,#\n#g' | sed -e "s#^native\$#$(getarchitecture 'native')#"); do rm -rf ${BUILDDIR}/debian/tmp mkdir -p ${BUILDDIR}/debian/tmp/DEBIAN ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME} ${BUILDDIR}/debian/tmp/usr/bin cp ${BUILDDIR}/debian/copyright ${BUILDDIR}/debian/changelog ${BUILDDIR}/FEATURES ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME} @@ -298,6 +346,7 @@ buildpackage() { local BUILDDIR=$1 local RELEASE=$2 local SECTION=$3 + local ARCH=$(getarchitecture $4) msgninfo "Build package $(echo "$BUILDDIR" | grep -o '[^/]*$') for ${RELEASE} in ${SECTION}… " cd $BUILDDIR if [ "$ARCH" = "all" ]; then @@ -328,7 +377,7 @@ createaptftparchiveconfig() { local ARCHS="$(find pool/ -name '*.deb' | grep -oE '_[a-z0-9-]+\.deb$' | sort | uniq | sed -e '/^_all.deb$/ d' -e 's#^_\([a-z0-9-]*\)\.deb$#\1#' | tr '\n' ' ')" if [ -z "$ARCHS" ]; then # the pool is empty, so we will operate on faked packages - let us use the configured archs - ARCHS="$(aptconfig dump | grep APT::Architecture | cut -d'"' -f 2 | sed '/^$/ d' | sort | uniq | tr '\n' ' ')" + ARCHS="$(getarchitectures)" fi echo -n 'Dir { ArchiveDir "' >> ftparchive.conf @@ -408,9 +457,9 @@ insertpackage() { local DEPENDENCIES="$5" local PRIORITY="${6:-optional}" local ARCHS="" - for arch in $(echo "$ARCH" | sed -e 's#,#\n#g'); do + for arch in $(echo "$ARCH" | sed -e 's#,#\n#g' | sed -e "s#^native\$#$(getarchitecture 'native')#"); do if [ "$arch" = "all" ]; then - ARCHS="$(aptconfig dump | grep APT::Architecture | cut -d'"' -f 2 | sed '/^$/ d' | sort | uniq | tr '\n' ' ')" + ARCHS="$(getarchitectures)" else ARCHS="$arch" fi @@ -464,8 +513,9 @@ insertinstalledpackage() { local VERSION="$3" local DEPENDENCIES="$4" local PRIORITY="${5:-optional}" - local FILE="rootdir/var/lib/dpkg/status" - for arch in $(echo "$ARCH" | sed -e 's#,#\n#g'); do + local FILE='rootdir/var/lib/dpkg/status' + local INFO='rootdir/var/lib/dpkg/info' + for arch in $(echo "$ARCH" | sed -e 's#,#\n#g' | sed -e "s#^native\$#$(getarchitecture 'native')#"); do echo "Package: $NAME Status: install ok installed Priority: $PRIORITY @@ -480,6 +530,11 @@ Version: $VERSION" >> $FILE YOU did something horribly wrong! They are autogenerated und used only by testcases for APT and surf no other propose… " >> $FILE + if [ "$(dpkg-query -W --showformat='${Multi-Arch}')" = 'same' ]; then + echo -n > ${INFO}/${NAME}:${arch}.list + else + echo -n > ${INFO}/${NAME}.list + fi done } @@ -520,9 +575,6 @@ generatereleasefiles() { # both should be given in notation date/touch can understand msgninfo "\tGenerate Release files… " if [ -e aptarchive/dists ]; then - for dir in $(find ./aptarchive/dists -mindepth 3 -maxdepth 3 -type d -name 'i18n'); do - aptftparchive -qq release $dir -o APT::FTPArchive::Release::Patterns::='Translation-*' > $dir/Index - done for dir in $(find ./aptarchive/dists -mindepth 1 -maxdepth 1 -type d); do local SUITE="$(echo "$dir" | cut -d'/' -f 4)" local CODENAME="$(getcodenamefromsuite $SUITE)" @@ -715,8 +767,7 @@ N: Can't select versions from package '$1' as it is purely virtual" N: No packages found" local COMPAREFILE=$(mktemp) addtrap "rm $COMPAREFILE;" - local ARCH=$(dpkg-architecture -qDEB_HOST_ARCH_CPU) - eval `apt-config shell ARCH APT::Architecture` + local ARCH="$(getarchitecture 'native')" echo "$VIRTUAL" | sed -e "s/:$ARCH//" -e 's/:all//' > $COMPAREFILE aptcache show -q=0 $PACKAGE 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail } diff --git a/test/integration/skip-avoid-avoiding-breaks-predepends b/test/integration/skip-avoid-avoiding-breaks-predepends new file mode 100755 index 000000000..a47e8bc2b --- /dev/null +++ b/test/integration/skip-avoid-avoiding-breaks-predepends @@ -0,0 +1,21 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'native' + +insertinstalledpackage 'looping' 'native' '1' +insertinstalledpackage 'loop1' 'native' '1' 'Depends: loop2 (= 1)' +insertinstalledpackage 'loop2' 'native' '1' 'Depends: loop1 (= 1)' + +buildsimplenativepackage 'looping' 'native' '1.15.7.2' 'stable' 'Breaks: loop2 (<= 1)' +buildsimplenativepackage 'loop1' 'native' '2' 'stable' 'Depends: loop2 (= 2)' +buildsimplenativepackage 'loop2' 'native' '2' 'stable' 'Depends: loop1 (= 2) +Pre-Depends: looping (>= 1.15)' + +setupaptarchive + +aptget dist-upgrade -y -o Debug::pkgOrderList=1 #-qq 2>&1 > /dev/null +testdpkginstalled looping loop1 loop2 diff --git a/test/integration/status-bug-64141-install-dependencies-for-on-hold b/test/integration/status-bug-64141-install-dependencies-for-on-hold deleted file mode 100644 index c82ebd19c..000000000 --- a/test/integration/status-bug-64141-install-dependencies-for-on-hold +++ /dev/null @@ -1,33 +0,0 @@ -Package: apt -Status: install ok installed -Priority: important -Section: admin -Installed-Size: 6048 -Maintainer: APT Development Team <deity@lists.debian.org> -Architecture: i386 -Version: 0.8.9 -Provides: libapt-pkg4.10 -Depends: libc6 (>= 2.3.4) -Description: Advanced front-end for dpkg - -Package: libc6 -Status: install ok installed -Priority: required -Section: libs -Installed-Size: 9356 -Maintainer: GNU Libc Maintainers <debian-glibc@lists.debian.org> -Architecture: i386 -Source: eglibc -Version: 2.3.5-7 -Provides: glibc-2.11-1 -Description: Embedded GNU C Library: Shared libraries - -Package: oldcrap -Status: install ok installed -Priority: extra -Section: oldlibs -Installed-Size: 1 -Maintainer: Joe Sixpack <joe@example.org> -Architecture: all -Version: 1-1 -Description: Old crappy nothing package diff --git a/test/integration/test-apt-get-download b/test/integration/test-apt-get-download index 7db93c32f..4edb7c173 100755 --- a/test/integration/test-apt-get-download +++ b/test/integration/test-apt-get-download @@ -13,13 +13,12 @@ buildsimplenativepackage 'apt' 'all' '2.0' 'unstable' setupaptarchive testdownload() { - msgtest 'Test download of package file' $1 - if [ -z "$3" ]; then - aptget download ${2} - else - aptget download ${2}/${3} + local APT="$2" + if [ -n "$3" ]; then + APT="${APT}/${3}" fi - test -f $1 && msgpass || msgfail + msgtest "Test download of package file $1 with" "$APT" + aptget -qq download ${APT} && test -f $1 && msgpass || msgfail } testdownload apt_1.0_all.deb apt stable diff --git a/test/integration/test-bug-549968-install-depends-of-not-installed b/test/integration/test-bug-549968-install-depends-of-not-installed index 78c0801f2..8c434b3ce 100755 --- a/test/integration/test-bug-549968-install-depends-of-not-installed +++ b/test/integration/test-bug-549968-install-depends-of-not-installed @@ -14,13 +14,13 @@ setupaptarchive # We check the Markers here as the autoremove nuker will also # prevent it, but to late - its better to fail earlier -testequal 'Reading package lists... +testequal "Reading package lists... Building dependency tree... MarkInstall coolstuff [ i386 ] < none -> 1.0 > ( other ) FU=1 Ignore MarkInstall of extracoolstuff [ i386 ] < none -> 1.0 > ( other ) as its mode (Keep) is protected -Package extracoolstuff is not installed, so not removed +Package 'extracoolstuff' is not installed, so not removed The following NEW packages will be installed: coolstuff 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Inst coolstuff (1.0 unstable [all]) -Conf coolstuff (1.0 unstable [all])' aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s +Conf coolstuff (1.0 unstable [all])" aptget install coolstuff extracoolstuff- -o Debug::pkgDepCache::Marker=1 -s diff --git a/test/integration/test-bug-590041-prefer-non-virtual-packages b/test/integration/test-bug-590041-prefer-non-virtual-packages index 3e2693f85..e0dd7737f 100755 --- a/test/integration/test-bug-590041-prefer-non-virtual-packages +++ b/test/integration/test-bug-590041-prefer-non-virtual-packages @@ -3,7 +3,7 @@ set -e . $(readlink -f $(dirname $0))/framework setupenvironment -configarchitecture "i386" "armel" +configarchitecture 'i386' 'armel' pkglibc6="Package: libc6 Architecture: armel diff --git a/test/integration/test-bug-595691-empty-and-broken-archive-files b/test/integration/test-bug-595691-empty-and-broken-archive-files index 5c103da6f..bb1ac0e54 100755 --- a/test/integration/test-bug-595691-empty-and-broken-archive-files +++ b/test/integration/test-bug-595691-empty-and-broken-archive-files @@ -13,7 +13,7 @@ setupflataptarchive testaptgetupdate() { rm -rf rootdir/var/lib/apt aptget update 2>> testaptgetupdate.diff >> testaptgetupdate.diff || true - sed -i -e '/^Fetched / d' -e 's#\[[0-9]* [kMGTPY]*B\]#\[\]#' testaptgetupdate.diff + sed -i -e '/^Fetched / d' -e '/Ign / d' -e 's#\[[0-9]* [kMGTPY]*B\]#\[\]#' testaptgetupdate.diff GIVEN="$1" shift msgtest "Test for correctness of" "apt-get update with $*" @@ -78,7 +78,6 @@ testoverfile() { createemptyfile 'en' testaptgetupdate "Get:1 file: InRelease [] -Ign file: Translation-en Reading package lists..." "empty file en.$COMPRESS over file" createemptyarchive 'en' @@ -89,12 +88,10 @@ Reading package lists..." "empty archive en.$COMPRESS over file" # FIXME: Why omits the file transport the Packages Get line? #Get:3 file: Packages [] testaptgetupdate "Get:1 file: InRelease [] -Ign file: Translation-en Reading package lists..." "empty archive Packages.$COMPRESS over file" createemptyfile 'Packages' testaptgetupdate "Get:1 file: InRelease [] -Ign file: Translation-en Err file: Packages Empty files can't be valid archives W: Failed to fetch ${COMPRESSOR}:$(readlink -f aptarchive/Packages.$COMPRESS) Empty files can't be valid archives @@ -109,7 +106,6 @@ testoverhttp() { testaptgetupdate "Get:1 http://localhost InRelease [] Get:2 http://localhost Packages [] Get:3 http://localhost Translation-en -Ign http://localhost Translation-en Reading package lists..." "empty file en.$COMPRESS over http" createemptyarchive 'en' @@ -121,14 +117,12 @@ Reading package lists..." "empty archive en.$COMPRESS over http" createemptyarchive 'Packages' testaptgetupdate "Get:1 http://localhost InRelease [] Get:2 http://localhost Packages [] -Ign http://localhost Translation-en Reading package lists..." "empty archive Packages.$COMPRESS over http" createemptyfile 'Packages' #FIXME: we should response with a good error message instead testaptgetupdate "Get:1 http://localhost InRelease [] Get:2 http://localhost Packages -Ign http://localhost Translation-en Err http://localhost Packages Empty files can't be valid archives W: Failed to fetch ${COMPRESSOR}:$(readlink -f rootdir/var/lib/apt/lists/partial/localhost:8080_Packages) Empty files can't be valid archives diff --git a/test/integration/test-bug-596498-trusted-unsigned-repo b/test/integration/test-bug-596498-trusted-unsigned-repo new file mode 100755 index 000000000..6ebc4a3bb --- /dev/null +++ b/test/integration/test-bug-596498-trusted-unsigned-repo @@ -0,0 +1,47 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'i386' + +buildsimplenativepackage 'cool' 'i386' '1.0' 'unstable' + +setupaptarchive + +aptgetupdate() { + rm -rf rootdir/var/lib/apt/ rootdir/var/cache/apt/*.bin + aptget update -qq +} + +PKGTEXT="$(aptget install cool --assume-no -d | head -n 7)" +DEBFILE='rootdir/etc/apt/sources.list.d/apt-test-unstable-deb.list' + +testequal "$PKGTEXT +Download complete and in download only mode" aptget install cool --assume-no -d + +sed -i -e 's#deb#deb [trusted=no]#' $DEBFILE +aptgetupdate + +testequal "$PKGTEXT +WARNING: The following packages cannot be authenticated! + cool +Install these packages without verification [y/N]? N +E: Some packages could not be authenticated" aptget install cool --assume-no -d + +find aptarchive/ \( -name 'Release.gpg' -o -name 'InRelease' \) -delete +sed -i -e 's#deb \[trusted=no\]#deb#' $DEBFILE +aptgetupdate + +testequal "$PKGTEXT +WARNING: The following packages cannot be authenticated! + cool +Install these packages without verification [y/N]? N +E: Some packages could not be authenticated" aptget install cool --assume-no -d + +sed -i -e 's#deb#deb [trusted=yes]#' $DEBFILE +aptgetupdate + +testequal "$PKGTEXT +Download complete and in download only mode" aptget install cool --assume-no -d diff --git a/test/integration/test-bug-601016-description-translation b/test/integration/test-bug-601016-description-translation index 44ab91900..03fddbfda 100755 --- a/test/integration/test-bug-601016-description-translation +++ b/test/integration/test-bug-601016-description-translation @@ -4,7 +4,7 @@ set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture "i386" +configarchitecture 'i386' 'amd64' # we need a valid locale here, otherwise the language configuration # will be overridden by LC_ALL=C @@ -22,8 +22,22 @@ Size: 2140230 MD5sum: 74769bfbcef9ebc4fa74f7a5271b9c08 Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c" +PACKAGESTANZA2='Package: apt +Priority: important +Section: admin +Installed-Size: 5984 +Maintainer: APT Development Team <deity@lists.debian.org> +Architecture: amd64 +Version: 0.8.7 +Filename: pool/main/a/apt/apt_0.8.7_amd64.deb +Size: 2210342 +MD5sum: 4a869bfbdef9ebc9fa74f7a5271e8d1a +Description-md5: d41ee493aa9fcc6cbc9ce4eb7069959c' echo "$PACKAGESTANZA +Description: Advanced front-end for dpkg + +$PACKAGESTANZA2 Description: Advanced front-end for dpkg" > aptarchive/Packages echo "Package: apt @@ -53,6 +67,13 @@ Description-${LOCALE}: Mächtige Oberfläche für dpkg APT-Dselect-Methode. Beides sind einfache und sicherere Wege, um Pakete zu installieren und Upgrades durchzuführen. " +LOCALESTANZA2="$PACKAGESTANZA2 +Description-${LOCALE}: Mächtige Oberfläche für dpkg + Das Paket bietet dem Nutzer technisch führende Methoden für den Zugriff + auf den dpkg-Paketmanager. Es beinhaltet das apt-get-Werkzeug und die + APT-Dselect-Methode. Beides sind einfache und sicherere Wege, + um Pakete zu installieren und Upgrades durchzuführen. +" testrun() { echo "Acquire::Languages { \"${LOCALE}\"; \"en\"; };" > rootdir/etc/apt/apt.conf.d/00languages @@ -60,6 +81,8 @@ testrun() { rm -rf rootdir/var/lib/apt/lists setupaptarchive testequal "$LOCALESTANZA" aptcache show apt -o Test=File-${LOCALE} + testequal "$LOCALESTANZA" aptcache show apt:i386 -o Test=File-${LOCALE} + testequal "$LOCALESTANZA2" aptcache show apt:amd64 -o Test=File-${LOCALE} testequal "$NOLONGSTANZA" aptcache show apt -o Acquire::Languages="ww" -o Test=File-${LOCALE} testequal "$LOCALESTANZA" aptcache show apt -o Acquire::Languages::="ww" -o Test=File-${LOCALE} LC_ALL=C testequal "$ENGLISHSTANZA" aptcache show apt -o Test=File-${LOCALE} @@ -73,6 +96,9 @@ testrun() { testrun echo "$PACKAGESTANZA +Description: Advanced front-end for dpkg + +$PACKAGESTANZA2 Description: Advanced front-end for dpkg" > aptarchive/Packages echo "Package: apt @@ -88,5 +114,11 @@ Description-en: Advanced front-end for dpkg It provides the apt-get utility and APT dselect method that provides a simpler, safer way to install and upgrade packages. " +ENGLISHSTANZA2="$PACKAGESTANZA2 +Description-en: Advanced front-end for dpkg + This is Debian's next generation front-end for the dpkg package manager. + It provides the apt-get utility and APT dselect method that provides a + simpler, safer way to install and upgrade packages. +" testrun diff --git a/test/integration/test-bug-612099-multiarch-conflicts b/test/integration/test-bug-612099-multiarch-conflicts index b8cfe59e2..530012e5d 100755 --- a/test/integration/test-bug-612099-multiarch-conflicts +++ b/test/integration/test-bug-612099-multiarch-conflicts @@ -4,9 +4,7 @@ set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture "i386" "amd64" - -buildsimplenativepackage 'peace-dpkg' 'all' '1.0' 'stable' +configarchitecture 'i386' 'amd64' buildsimplenativepackage 'libc6' 'i386' '1.0' 'stable' buildsimplenativepackage 'libc6' 'amd64' '1.0' 'stable' @@ -17,11 +15,8 @@ buildsimplenativepackage 'foobar' 'amd64' '1.0' 'stable' 'Depends: libc6' setupaptarchive -aptget install peace-dpkg:i386 -y -qq 2>&1 > /dev/null -testdpkginstalled peace-dpkg - aptget install libc6:i386 -t stable -y -qq 2>&1 > /dev/null -testdpkginstalled libc6 +testdpkginstalled libc6:i386 testequal 'Reading package lists... Building dependency tree... Reading state information... @@ -80,8 +75,13 @@ The following packages will be upgraded: 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Inst libc6 [1.0] (2.0 testing [all]) Conf libc6 (2.0 testing [all])' aptget upgrade -t testing -s -aptget upgrade -y -qq 2>&1 > /dev/null -testdpkginstalled libc6 +# FIXME: on amd64 systems this test wouldn't run with a real upgrade +# as APT (here i386) disagree about the native architecture, so +# we fake it here: +#aptget upgrade -y -qq 2>&1 > /dev/null +aptget purge libc6 -y -qq 2>&1 >/dev/null +aptget install libc6:i386 -y -qq 2>&1 >/dev/null +testdpkginstalled libc6:all testequal 'Reading package lists... Building dependency tree... @@ -130,7 +130,7 @@ buildsimplenativepackage 'foobar-same' 'amd64' '1.0' 'stable' 'Depends: libc6-sa setupaptarchive aptget install libc6-same:i386 -t stable -y -qq 2>&1 > /dev/null -testdpkginstalled libc6-same +testdpkginstalled libc6-same:i386 testequal 'Reading package lists... Building dependency tree... @@ -173,8 +173,14 @@ The following packages will be upgraded: 1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. Inst libc6-same [1.0] (2.0 testing [all]) Conf libc6-same (2.0 testing [all])' aptget upgrade -t testing -s -aptget upgrade -y -qq 2>&1 > /dev/null -testdpkginstalled libc6-same +# FIXME: on amd64 systems this test wouldn't run with a real upgrade +# as APT (here i386) disagree about the native architecture, so +# we fake it here: +#aptget upgrade -y -qq 2>&1 > /dev/null +aptget purge libc6-same -y -qq 2>&1 >/dev/null +aptget install libc6-same:i386 -y -qq 2>&1 >/dev/null +testdpkginstalled libc6-same:all + testequal "Reading package lists... Building dependency tree... diff --git a/test/integration/test-bug-612958-use-dpkg-multiarch-config b/test/integration/test-bug-612958-use-dpkg-multiarch-config index 4f31c3953..18b964636 100755 --- a/test/integration/test-bug-612958-use-dpkg-multiarch-config +++ b/test/integration/test-bug-612958-use-dpkg-multiarch-config @@ -56,4 +56,22 @@ testfail 'dpkg config' 'armel' echo '#! /bin/sh echo "amd64 armel"' > ./dpkg-printer +testpass 'dpkg config' 'i386' +testpass 'dpkg config' 'amd64' +testpass 'dpkg config' 'armel' + +echo '#! /bin/sh +echo "amd64 +armel"' > ./dpkg-printer + +testpass 'dpkg config' 'i386' +testpass 'dpkg config' 'amd64' testpass 'dpkg config' 'armel' + +echo '#! /bin/sh +echo "amd64 +i386"' > ./dpkg-printer + +testpass 'dpkg config' 'i386' +testpass 'dpkg config' 'amd64' +testfail 'dpkg config' 'armel' diff --git a/test/integration/test-bug-618288-multiarch-same-lockstep b/test/integration/test-bug-618288-multiarch-same-lockstep index a05f03df4..fde075172 100755 --- a/test/integration/test-bug-618288-multiarch-same-lockstep +++ b/test/integration/test-bug-618288-multiarch-same-lockstep @@ -16,17 +16,22 @@ buildsimplenativepackage 'apt' 'i386' '2' 'unstable' 'Depends: libsame (= 2)' '' buildsimplenativepackage 'apt2' 'amd64' '2' 'unstable' 'Depends: libsame (= 2)' '' 'required' setupaptarchive +aptget dist-upgrade -s 2>&1 > output.apt -testequal 'Reading package lists... -Building dependency tree... -The following packages will be upgraded: - apt:i386 apt2 libsame libsame:i386 -4 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. -Inst libsame:i386 [1] (2 unstable [i386]) [libsame:amd64 on libsame:i386] [libsame:i386 on libsame:amd64] [libsame:amd64 apt:i386 ] -Inst libsame [1] (2 unstable [amd64]) [apt2:amd64 apt:i386 ] -Conf libsame:i386 (2 unstable [i386]) [apt2:amd64 apt:i386 ] -Conf libsame (2 unstable [amd64]) [apt2:amd64 apt:i386 ] -Inst apt2 [1] (2 unstable [amd64]) [apt:i386 ] -Conf apt2 (2 unstable [amd64]) [apt:i386 ] -Inst apt:i386 [1] (2 unstable [i386]) -Conf apt:i386 (2 unstable [i386])' aptget dist-upgrade -s +# order in switch libsame:{amd64,i386} are unpacked is irrelevant, as both are installed - but we need to do it together +LS_U_AMD="$(grep -o -n '^Inst libsame ' output.apt | cut -d: -f1)" +LS_U_INT="$(grep -o -n '^Inst libsame:i386 ' output.apt | cut -d: -f1)" +LS_C_AMD="$(grep -o -n '^Conf libsame ' output.apt | cut -d: -f1)" +LS_C_INT="$(grep -o -n '^Conf libsame:i386 ' output.apt | cut -d: -f1)" + +msgtest 'Test if libsame:amd64 unpack before configure' +test "$LS_U_AMD" -lt "$LS_C_AMD" && msgpass || msgfail + +msgtest 'Test if libsame:i386 unpack before configure' +test "$LS_U_INT" -lt "$LS_C_INT" && msgpass || msgfail + +msgtest 'Test if libsame:amd64 unpack is before libsame:i386 configure' +test "$LS_U_AMD" -lt "$LS_C_INT" && msgpass || msgfail + +msgtest 'Test if libsame:i386 unpack is before libsame:amd64 configure' +test "$LS_U_INT" -lt "$LS_C_AMD" && msgpass || msgfail diff --git a/test/integration/test-bug-624218-Translation-file-handling b/test/integration/test-bug-624218-Translation-file-handling index a1e708d2e..d146b943c 100755 --- a/test/integration/test-bug-624218-Translation-file-handling +++ b/test/integration/test-bug-624218-Translation-file-handling @@ -42,16 +42,9 @@ msgtest 'Download of nothing if none is forced' 'with Index' aptget update -o Acquire::Languages=none | grep -q -e 'Translation' && msgfail || msgpass rm -rf rootdir/var/lib/apt/lists -sed -i '/i18n\/Index$/ d' $(find aptarchive -name 'Release') +sed -i '/i18n\/Translation-.*$/ d' $(find aptarchive -name 'Release') signreleasefiles -# we have to try as not every archive includes the i18n Index in the Release file - if it has one at all -msgtest 'Download no Translation- if forced language is non-existent' 'with not-announced Index' -aptget update -o Acquire::Languages=ast_DE | grep -q -e 'Translation-' && msgfail || msgpass -rm -rf rootdir/var/lib/apt/lists - -find aptarchive -name 'Index' -delete - msgtest 'Download of en as forced language' 'without Index' aptget update -o Acquire::Languages=en | grep -q -e 'Translation-en ' && msgpass || msgfail rm -rf rootdir/var/lib/apt/lists diff --git a/test/integration/test-bug-632221-cross-dependency-satisfaction b/test/integration/test-bug-632221-cross-dependency-satisfaction index 4299f052f..30df48604 100755 --- a/test/integration/test-bug-632221-cross-dependency-satisfaction +++ b/test/integration/test-bug-632221-cross-dependency-satisfaction @@ -6,43 +6,51 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture 'amd64' 'armel' -insertinstalledpackage 'build-essential' 'all' '11.5' +insertinstalledpackage 'build-essential' 'all' '11.5' 'Multi-Arch: foreign' -insertpackage 'unstable' 'doxygen' 'amd64,armel' '1.0' +insertpackage 'unstable' 'doxygen' 'amd64,armel' '1.0' 'Multi-Arch: foreign' insertpackage 'unstable' 'libc6' 'amd64,armel' '1.0' 'Multi-Arch: same' insertpackage 'unstable' 'libc6-dev' 'amd64,armel' '1.0' 'Depends: libc6 Multi-Arch: same' +insertpackage 'unstable' 'libfwibble1' 'amd64,armel' '1.0' 'Depends: libc6 +Multi-Arch: same' +insertpackage 'unstable' 'libfwibble-dev' 'amd64,armel' '1.0' 'Depends: libfwibble1' insertpackage 'unstable' 'cool' 'amd64,armel' '1.0' 'Multi-Arch: allowed' insertpackage 'unstable' 'amdboot' 'amd64' '1.0' insertpackage 'unstable' 'foreigner' 'amd64,armel' '1.0' 'Multi-Arch: foreign' -insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner' +insertsource 'unstable' 'apt' 'any' '0.8.15' 'Build-Depends: doxygen, libc6-dev, libc6-dev:native, cool:any, amdboot:amd64, foreigner, libfwibble-dev' setupaptarchive testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: - amdboot cool doxygen foreigner libc6 libc6-dev -0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. + amdboot cool doxygen foreigner libc6 libc6-dev libfwibble-dev libfwibble1 +0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Inst amdboot (1.0 unstable [amd64]) Inst cool (1.0 unstable [amd64]) Inst doxygen (1.0 unstable [amd64]) Inst foreigner (1.0 unstable [amd64]) Inst libc6 (1.0 unstable [amd64]) Inst libc6-dev (1.0 unstable [amd64]) +Inst libfwibble1 (1.0 unstable [amd64]) +Inst libfwibble-dev (1.0 unstable [amd64]) Conf amdboot (1.0 unstable [amd64]) Conf cool (1.0 unstable [amd64]) Conf doxygen (1.0 unstable [amd64]) Conf foreigner (1.0 unstable [amd64]) Conf libc6 (1.0 unstable [amd64]) -Conf libc6-dev (1.0 unstable [amd64])' aptget build-dep apt -s +Conf libc6-dev (1.0 unstable [amd64]) +Conf libfwibble1 (1.0 unstable [amd64]) +Conf libfwibble-dev (1.0 unstable [amd64])' aptget build-dep apt -s testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: amdboot cool doxygen foreigner libc6 libc6:armel libc6-dev libc6-dev:armel -0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. + libfwibble-dev:armel libfwibble1:armel +0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. Inst amdboot (1.0 unstable [amd64]) Inst cool (1.0 unstable [amd64]) Inst doxygen (1.0 unstable [amd64]) @@ -51,6 +59,8 @@ Inst libc6 (1.0 unstable [amd64]) Inst libc6:armel (1.0 unstable [armel]) Inst libc6-dev (1.0 unstable [amd64]) Inst libc6-dev:armel (1.0 unstable [armel]) +Inst libfwibble1:armel (1.0 unstable [armel]) +Inst libfwibble-dev:armel (1.0 unstable [armel]) Conf amdboot (1.0 unstable [amd64]) Conf cool (1.0 unstable [amd64]) Conf doxygen (1.0 unstable [amd64]) @@ -58,34 +68,41 @@ Conf foreigner (1.0 unstable [amd64]) Conf libc6 (1.0 unstable [amd64]) Conf libc6:armel (1.0 unstable [armel]) Conf libc6-dev (1.0 unstable [amd64]) -Conf libc6-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel +Conf libc6-dev:armel (1.0 unstable [armel]) +Conf libfwibble1:armel (1.0 unstable [armel]) +Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel configarchitecture 'armel' 'amd64' testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: - amdboot:amd64 cool doxygen foreigner libc6 libc6-dev -0 upgraded, 6 newly installed, 0 to remove and 0 not upgraded. + amdboot:amd64 cool doxygen foreigner libc6 libc6-dev libfwibble-dev + libfwibble1 +0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. Inst amdboot:amd64 (1.0 unstable [amd64]) Inst cool (1.0 unstable [armel]) Inst doxygen (1.0 unstable [armel]) Inst foreigner (1.0 unstable [armel]) Inst libc6 (1.0 unstable [armel]) Inst libc6-dev (1.0 unstable [armel]) +Inst libfwibble1 (1.0 unstable [armel]) +Inst libfwibble-dev (1.0 unstable [armel]) Conf amdboot:amd64 (1.0 unstable [amd64]) Conf cool (1.0 unstable [armel]) Conf doxygen (1.0 unstable [armel]) Conf foreigner (1.0 unstable [armel]) Conf libc6 (1.0 unstable [armel]) -Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s +Conf libc6-dev (1.0 unstable [armel]) +Conf libfwibble1 (1.0 unstable [armel]) +Conf libfwibble-dev (1.0 unstable [armel])' aptget build-dep apt -s testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: amdboot:amd64 cool doxygen foreigner libc6:amd64 libc6 libc6-dev:amd64 - libc6-dev -0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded. + libc6-dev libfwibble-dev:amd64 libfwibble1:amd64 +0 upgraded, 10 newly installed, 0 to remove and 0 not upgraded. Inst amdboot:amd64 (1.0 unstable [amd64]) Inst cool (1.0 unstable [armel]) Inst doxygen (1.0 unstable [armel]) @@ -94,6 +111,8 @@ Inst libc6:amd64 (1.0 unstable [amd64]) Inst libc6 (1.0 unstable [armel]) Inst libc6-dev:amd64 (1.0 unstable [amd64]) Inst libc6-dev (1.0 unstable [armel]) +Inst libfwibble1:amd64 (1.0 unstable [amd64]) +Inst libfwibble-dev:amd64 (1.0 unstable [amd64]) Conf amdboot:amd64 (1.0 unstable [amd64]) Conf cool (1.0 unstable [armel]) Conf doxygen (1.0 unstable [armel]) @@ -101,7 +120,9 @@ Conf foreigner (1.0 unstable [armel]) Conf libc6:amd64 (1.0 unstable [amd64]) Conf libc6 (1.0 unstable [armel]) Conf libc6-dev:amd64 (1.0 unstable [amd64]) -Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s -a amd64 +Conf libc6-dev (1.0 unstable [armel]) +Conf libfwibble1:amd64 (1.0 unstable [amd64]) +Conf libfwibble-dev:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64 configarchitecture 'amd64' 'armel' @@ -111,34 +132,43 @@ insertinstalledpackage 'foreigner' 'armel' '0.5' testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: - amdboot doxygen libc6 libc6-dev -0 upgraded, 4 newly installed, 0 to remove and 2 not upgraded. + amdboot doxygen libc6 libc6-dev libfwibble-dev libfwibble1 +0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded. Inst amdboot (1.0 unstable [amd64]) Inst doxygen (1.0 unstable [amd64]) Inst libc6 (1.0 unstable [amd64]) Inst libc6-dev (1.0 unstable [amd64]) +Inst libfwibble1 (1.0 unstable [amd64]) +Inst libfwibble-dev (1.0 unstable [amd64]) Conf amdboot (1.0 unstable [amd64]) Conf doxygen (1.0 unstable [amd64]) Conf libc6 (1.0 unstable [amd64]) -Conf libc6-dev (1.0 unstable [amd64])' aptget build-dep apt -s +Conf libc6-dev (1.0 unstable [amd64]) +Conf libfwibble1 (1.0 unstable [amd64]) +Conf libfwibble-dev (1.0 unstable [amd64])' aptget build-dep apt -s testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: amdboot doxygen libc6 libc6:armel libc6-dev libc6-dev:armel -0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded. + libfwibble-dev:armel libfwibble1:armel +0 upgraded, 8 newly installed, 0 to remove and 2 not upgraded. Inst amdboot (1.0 unstable [amd64]) Inst doxygen (1.0 unstable [amd64]) Inst libc6 (1.0 unstable [amd64]) Inst libc6:armel (1.0 unstable [armel]) Inst libc6-dev (1.0 unstable [amd64]) Inst libc6-dev:armel (1.0 unstable [armel]) +Inst libfwibble1:armel (1.0 unstable [armel]) +Inst libfwibble-dev:armel (1.0 unstable [armel]) Conf amdboot (1.0 unstable [amd64]) Conf doxygen (1.0 unstable [amd64]) Conf libc6 (1.0 unstable [amd64]) Conf libc6:armel (1.0 unstable [armel]) Conf libc6-dev (1.0 unstable [amd64]) -Conf libc6-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel +Conf libc6-dev:armel (1.0 unstable [armel]) +Conf libfwibble1:armel (1.0 unstable [armel]) +Conf libfwibble-dev:armel (1.0 unstable [armel])' aptget build-dep apt -s -a armel configarchitecture 'armel' 'amd64' @@ -148,36 +178,45 @@ Building dependency tree... The following packages will be REMOVED: cool:amd64 The following NEW packages will be installed: - amdboot:amd64 cool doxygen libc6 libc6-dev -0 upgraded, 5 newly installed, 1 to remove and 1 not upgraded. + amdboot:amd64 cool doxygen libc6 libc6-dev libfwibble-dev libfwibble1 +0 upgraded, 7 newly installed, 1 to remove and 1 not upgraded. Remv cool:amd64 [0.5] Inst amdboot:amd64 (1.0 unstable [amd64]) Inst cool (1.0 unstable [armel]) Inst doxygen (1.0 unstable [armel]) Inst libc6 (1.0 unstable [armel]) Inst libc6-dev (1.0 unstable [armel]) +Inst libfwibble1 (1.0 unstable [armel]) +Inst libfwibble-dev (1.0 unstable [armel]) Conf amdboot:amd64 (1.0 unstable [amd64]) Conf cool (1.0 unstable [armel]) Conf doxygen (1.0 unstable [armel]) Conf libc6 (1.0 unstable [armel]) -Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s +Conf libc6-dev (1.0 unstable [armel]) +Conf libfwibble1 (1.0 unstable [armel]) +Conf libfwibble-dev (1.0 unstable [armel])' aptget build-dep apt -s testequal 'Reading package lists... Building dependency tree... The following NEW packages will be installed: amdboot:amd64 doxygen libc6:amd64 libc6 libc6-dev:amd64 libc6-dev -0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded. + libfwibble-dev:amd64 libfwibble1:amd64 +0 upgraded, 8 newly installed, 0 to remove and 2 not upgraded. Inst amdboot:amd64 (1.0 unstable [amd64]) Inst doxygen (1.0 unstable [armel]) Inst libc6:amd64 (1.0 unstable [amd64]) Inst libc6 (1.0 unstable [armel]) Inst libc6-dev:amd64 (1.0 unstable [amd64]) Inst libc6-dev (1.0 unstable [armel]) +Inst libfwibble1:amd64 (1.0 unstable [amd64]) +Inst libfwibble-dev:amd64 (1.0 unstable [amd64]) Conf amdboot:amd64 (1.0 unstable [amd64]) Conf doxygen (1.0 unstable [armel]) Conf libc6:amd64 (1.0 unstable [amd64]) Conf libc6 (1.0 unstable [armel]) Conf libc6-dev:amd64 (1.0 unstable [amd64]) -Conf libc6-dev (1.0 unstable [armel])' aptget build-dep apt -s -a amd64 +Conf libc6-dev (1.0 unstable [armel]) +Conf libfwibble1:amd64 (1.0 unstable [amd64]) +Conf libfwibble-dev:amd64 (1.0 unstable [amd64])' aptget build-dep apt -s -a amd64 diff --git a/test/integration/test-bug-64141-install-dependencies-for-on-hold b/test/integration/test-bug-64141-install-dependencies-for-on-hold index 4633ffcc3..e2d206fdd 100755 --- a/test/integration/test-bug-64141-install-dependencies-for-on-hold +++ b/test/integration/test-bug-64141-install-dependencies-for-on-hold @@ -4,7 +4,19 @@ set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture "i386" +configarchitecture 'native' 'strange-arch' + +insertpackage 'unstable' 'unrelated' 'strange-arch' '1' + +insertinstalledpackage 'apt' 'native' '0.8.9' 'Depends: libc6 (>= 2.3.4)' +insertinstalledpackage 'libc6' 'native' '2.4.1-1' +insertinstalledpackage 'oldcrap' 'all' '1-1' + +insertpackage 'unstable' 'apt' 'native' '0.8.10' 'Depends: libc6 (>= 2.10), libdb4.8 +Breaks: oldcrap' +insertpackage 'unstable' 'libc6' 'native' '2.11.2-7' +insertpackage 'unstable' 'libdb4.8' 'native' '4.8.30-3' + setupaptarchive testequal 'Reading package lists... @@ -16,11 +28,10 @@ The following NEW packages will be installed: The following packages will be upgraded: apt libc6 2 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. -Need to get 0 B/6724 kB of archives. -After this operation, 1523 kB of additional disk space will be used. +After this operation, 0 B of additional disk space will be used. E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only -echo 'apt hold' | dpkg --set-selections +aptmark hold apt -qq testequal 'Reading package lists... Building dependency tree... @@ -29,6 +40,5 @@ The following packages have been kept back: The following packages will be upgraded: libc6 1 upgraded, 0 newly installed, 0 to remove and 1 not upgraded. -Need to get 0 B/3881 kB of archives. After this operation, 0 B of additional disk space will be used. E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only -o Test='hold-back-apt' diff --git a/test/integration/test-bug-657695-resolver-breaks-on-virtuals b/test/integration/test-bug-657695-resolver-breaks-on-virtuals new file mode 100755 index 000000000..e9b27cfcd --- /dev/null +++ b/test/integration/test-bug-657695-resolver-breaks-on-virtuals @@ -0,0 +1,51 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' + +insertinstalledpackage 'xserver-xorg-core' 'amd64' '2:1.7.6-2ubuntu7.10' +for i in $(seq 1 50); do + insertinstalledpackage "xserver-xorg-video-driver$i" 'amd64' '1.0' 'Provides: xserver-xorg-video-6' +done + +insertpackage 'unstable' 'xserver-xorg-core' 'amd64' '2:1.11.3-0ubuntu9' 'Breaks: xserver-xorg-video-6' + + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + xserver-xorg-video-driver1 xserver-xorg-video-driver10 + xserver-xorg-video-driver11 xserver-xorg-video-driver12 + xserver-xorg-video-driver13 xserver-xorg-video-driver14 + xserver-xorg-video-driver15 xserver-xorg-video-driver16 + xserver-xorg-video-driver17 xserver-xorg-video-driver18 + xserver-xorg-video-driver19 xserver-xorg-video-driver2 + xserver-xorg-video-driver20 xserver-xorg-video-driver21 + xserver-xorg-video-driver22 xserver-xorg-video-driver23 + xserver-xorg-video-driver24 xserver-xorg-video-driver25 + xserver-xorg-video-driver26 xserver-xorg-video-driver27 + xserver-xorg-video-driver28 xserver-xorg-video-driver29 + xserver-xorg-video-driver3 xserver-xorg-video-driver30 + xserver-xorg-video-driver31 xserver-xorg-video-driver32 + xserver-xorg-video-driver33 xserver-xorg-video-driver34 + xserver-xorg-video-driver35 xserver-xorg-video-driver36 + xserver-xorg-video-driver37 xserver-xorg-video-driver38 + xserver-xorg-video-driver39 xserver-xorg-video-driver4 + xserver-xorg-video-driver40 xserver-xorg-video-driver41 + xserver-xorg-video-driver42 xserver-xorg-video-driver43 + xserver-xorg-video-driver44 xserver-xorg-video-driver45 + xserver-xorg-video-driver46 xserver-xorg-video-driver47 + xserver-xorg-video-driver48 xserver-xorg-video-driver49 + xserver-xorg-video-driver5 xserver-xorg-video-driver50 + xserver-xorg-video-driver6 xserver-xorg-video-driver7 + xserver-xorg-video-driver8 xserver-xorg-video-driver9 +The following packages will be upgraded: + xserver-xorg-core +1 upgraded, 0 newly installed, 50 to remove and 0 not upgraded. +After this operation, 2150 kB disk space will be freed. +E: Trivial Only specified but this is not a trivial operation.' aptget dist-upgrade --trivial-only diff --git a/test/integration/test-conflicts-loop b/test/integration/test-conflicts-loop new file mode 100755 index 000000000..4407fbd9d --- /dev/null +++ b/test/integration/test-conflicts-loop @@ -0,0 +1,36 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertinstalledpackage 'openjdk-6-jre' 'i386' '6b16-1.8-0ubuntu1' +insertpackage 'unstable' 'openjdk-6-jre' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre-headless (<< 6b17~pre3-1), openjdk-6-jre-lib (<< 6b17~pre3-1)' +insertinstalledpackage 'openjdk-6-jre-lib' 'i386' '6b16-1.8-0ubuntu1' +insertpackage 'unstable' 'openjdk-6-jre-lib' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre (<< 6b17~pre3-1), openjdk-6-jre-headless (<< 6b17~pre3-1)' +insertinstalledpackage 'openjdk-6-jre-headless' 'i386' '6b16-1.8-0ubuntu1' +insertpackage 'unstable' 'openjdk-6-jre-headless' 'i386' '6b20-1.9.8-0ubuntu1~10.04.1' 'Conflicts: openjdk-6-jre (<< 6b17~pre3-1), openjdk-6-jre-lib (<< 6b17~pre3-1)' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following packages will be upgraded: + openjdk-6-jre openjdk-6-jre-headless openjdk-6-jre-lib + openjdk-6-jre-lib:i386 conflicts with openjdk-6-jre:i386 + openjdk-6-jre:i386 conflicts with openjdk-6-jre-headless:i386 + openjdk-6-jre-headless:i386 conflicts with openjdk-6-jre:i386 +3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. +Remv openjdk-6-jre [6b16-1.8-0ubuntu1] + openjdk-6-jre-headless:i386 conflicts with openjdk-6-jre-lib:i386 +Remv openjdk-6-jre-lib [6b16-1.8-0ubuntu1] +Inst openjdk-6-jre-headless [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386]) + openjdk-6-jre:i386 conflicts with openjdk-6-jre-lib:i386 + openjdk-6-jre:i386 conflicts with openjdk-6-jre-lib:i386 +Inst openjdk-6-jre [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386]) +Inst openjdk-6-jre-lib [6b16-1.8-0ubuntu1] (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386]) +Conf openjdk-6-jre-lib (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386]) +Conf openjdk-6-jre (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386]) +Conf openjdk-6-jre-headless (6b20-1.9.8-0ubuntu1~10.04.1 unstable [i386])' aptget dist-upgrade -s -o APT::Immediate-Configure-All=true diff --git a/test/integration/test-disappearing-packages b/test/integration/test-disappearing-packages index 82ba9e592..0e0e9618d 100755 --- a/test/integration/test-disappearing-packages +++ b/test/integration/test-disappearing-packages @@ -4,12 +4,12 @@ set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture "i386" +configarchitecture 'native' -buildsimplenativepackage "old-pkg" "i386" "1.0" "stable" +buildsimplenativepackage "old-pkg" "native" "1.0" "stable" buildsimplenativepackage "unrelated" "all" "0.5" "unstable" -setupsimplenativepackage "new-pkg" "i386" "2.0" "unstable" "Provides: old-pkg +setupsimplenativepackage "new-pkg" "native" "2.0" "unstable" "Provides: old-pkg Replaces: old-pkg Conflicts: old-pkg (<< 2.0)" BUILDDIR="incoming/new-pkg-2.0" @@ -43,12 +43,12 @@ Note: This is done automatic and on purpose by dpkg." > $COMPAREFILE $CMD 2>&1 | tail -n 4 | diff $COMPAREFILE - && msgpass || msgfail rm $COMPAREFILE -sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' +sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' -e "s#:$(getarchitecture 'native') #:native #" testfileequal "rootdir/var/log/apt/history.log" " -Install: old-pkg:i386 (1.0) +Install: old-pkg:native (1.0) -Install: new-pkg:i386 (2.0, automatic) -Upgrade: old-pkg:i386 (1.0, 2.0) +Install: new-pkg:native (2.0, automatic) +Upgrade: old-pkg:native (1.0, 2.0) Disappeared: old-pkg (1.0)" testmarkedauto # new-pkg should have get the manual flag from old-pkg diff --git a/test/integration/test-dpkg-assert-multi-arch b/test/integration/test-dpkg-assert-multi-arch new file mode 100755 index 000000000..177d7489b --- /dev/null +++ b/test/integration/test-dpkg-assert-multi-arch @@ -0,0 +1,97 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' 'i386' + +buildsimplenativepackage 'native-pkg' 'amd64' '1.0' 'stable' +buildsimplenativepackage 'foreign-pkg' 'i386' '0.5' 'stable' 'Multi-Arch: foreign' +buildsimplenativepackage 'same-lib' 'amd64,i386' '0.5' 'stable' 'Multi-Arch: same' +buildsimplenativepackage 'all-pkg' 'all' '2.0' 'stable' +buildsimplenativepackage 'all-foreign-pkg' 'all' '2.0' 'stable' 'Multi-Arch: foreign' + +setupaptarchive + +testqualifier() { + msgtest 'Test with' $1 'for correct qualifier mode' $2 + GIVEN="$(aptget install $1 -qq -o Debug::pkgDPkgPM=1 2>&1 | grep -v -- '--unpack' | sed -e 's/^.*--[^u][^ ]* \([^ ]*\).*$/\1/')" + if [ "$GIVEN" = "$2" ]; then + msgpass + else + echo + echo "$GIVEN" + msgfail + fi +} + +# non-multiarch or "ubuntus" old multiarchified dpkg +echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper +echo '#! /bin/sh +if echo "$*" | grep -q -- "--assert-multi-arch"; then + echo >&2 'dpkg: Fehler: unbekannte Option --assert-multi-arch' + echo >&1 'dpkg: Info: unbekannte Option --assert-multi-arch' + return 2; +fi +return $*' > ./dpkg-wrapper +chmod +x ./dpkg-wrapper + +testqualifier 'native-pkg' 'native-pkg' +testqualifier 'native-pkg:amd64' 'native-pkg' +testqualifier 'foreign-pkg' 'foreign-pkg:i386' +testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386' +testqualifier 'same-lib' 'same-lib' +testqualifier 'same-lib:amd64' 'same-lib' +testqualifier 'same-lib:i386' 'same-lib:i386' +testqualifier 'all-pkg' 'all-pkg' +testqualifier 'all-pkg:amd64' 'all-pkg' +testqualifier 'all-foreign-pkg' 'all-foreign-pkg' +testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg' +insertinstalledpackage 'all-pkg' 'amd64' '1.0' +insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0' 'Multi-Arch: foreign' +testqualifier 'all-pkg' 'all-pkg' +testqualifier 'all-pkg:amd64' 'all-pkg' +testqualifier 'all-foreign-pkg' 'all-foreign-pkg' +testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg' +insertinstalledpackage 'always-all-pkg' 'all' '1.0' +insertinstalledpackage 'always-all-foreign-pkg' 'all' '1.0' 'Multi-Arch: foreign' +testqualifier 'all-pkg-' 'all-pkg' +testqualifier 'all-foreign-pkg-' 'all-foreign-pkg' +testqualifier 'always-all-pkg-' 'always-all-pkg' +testqualifier 'always-all-foreign-pkg-' 'always-all-foreign-pkg' + +# multiarch dpkg (new interface version) + +rm rootdir/var/lib/dpkg/status +touch rootdir/var/lib/dpkg/status +echo 'Dir::Bin::dpkg "./dpkg-wrapper";' > rootdir/etc/apt/apt.conf.d/99dpkgwrapper +echo '#! /bin/sh +if echo "$*" | grep -q -- "--assert-multi-arch"; then + return 0; +fi +return $*' > ./dpkg-wrapper + +testqualifier 'native-pkg' 'native-pkg:amd64' +testqualifier 'native-pkg:amd64' 'native-pkg:amd64' +testqualifier 'foreign-pkg' 'foreign-pkg:i386' +testqualifier 'foreign-pkg:i386' 'foreign-pkg:i386' +testqualifier 'same-lib' 'same-lib:amd64' +testqualifier 'same-lib:amd64' 'same-lib:amd64' +testqualifier 'same-lib:i386' 'same-lib:i386' +testqualifier 'all-pkg' 'all-pkg:all' +testqualifier 'all-pkg:amd64' 'all-pkg:all' +testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all' +testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all' +insertinstalledpackage 'all-pkg' 'amd64' '1.0' +insertinstalledpackage 'all-foreign-pkg' 'amd64' '1.0' 'Multi-Arch: foreign' +testqualifier 'all-pkg' 'all-pkg:all' +testqualifier 'all-pkg:amd64' 'all-pkg:all' +testqualifier 'all-foreign-pkg' 'all-foreign-pkg:all' +testqualifier 'all-foreign-pkg:amd64' 'all-foreign-pkg:all' +insertinstalledpackage 'always-all-pkg' 'all' '1.0' +insertinstalledpackage 'always-all-foreign-pkg' 'all' '1.0' 'Multi-Arch: foreign' +testqualifier 'all-pkg-' 'all-pkg:amd64' +testqualifier 'all-foreign-pkg-' 'all-foreign-pkg:amd64' +testqualifier 'always-all-pkg-' 'always-all-pkg:all' +testqualifier 'always-all-foreign-pkg-' 'always-all-foreign-pkg:all' diff --git a/test/integration/test-handling-broken-orgroups b/test/integration/test-handling-broken-orgroups index d88ad0000..20b314074 100755 --- a/test/integration/test-handling-broken-orgroups +++ b/test/integration/test-handling-broken-orgroups @@ -58,7 +58,7 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: coolstuff-broken : Depends: cool2 but it is not installable or stuff2 but it is not installable -E: Broken packages' aptget install coolstuff-broken -s +E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-broken -s testequal 'Reading package lists... Building dependency tree... @@ -105,4 +105,4 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: coolstuff-provided-broken : Depends: cool2 but it is not installable or stuff-abi-2 -E: Broken packages' aptget install coolstuff-provided-broken -s +E: Unable to correct problems, you have held broken packages.' aptget install coolstuff-provided-broken -s diff --git a/test/integration/test-implicit-conflicts-real-not-virtual b/test/integration/test-implicit-conflicts-real-not-virtual new file mode 100755 index 000000000..c9fca4edf --- /dev/null +++ b/test/integration/test-implicit-conflicts-real-not-virtual @@ -0,0 +1,56 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' 'i386' + +insertpackage 'unstable-mp' 'crda' 'i386,amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda +Multi-Arch: foreign' +insertpackage 'unstable-m' 'crda' 'i386,amd64' '1.1.1-1ubuntu4m' 'Multi-Arch: foreign' +insertpackage 'unstable-p' 'crda' 'i386,amd64' '1.1.1-1ubuntu4p' 'Provides: wireless-crda' +insertpackage 'unstable' 'wireless-crda' 'i386,amd64' '1.16' + + +insertinstalledpackage 'wireless-crda' 'amd64' '1.14' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst crda (1.1.1-1ubuntu4m unstable-m [amd64]) +Conf crda (1.1.1-1ubuntu4m unstable-m [amd64])' aptget install crda -s -t unstable-m + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst crda (1.1.1-1ubuntu4p unstable-p [amd64]) +Conf crda (1.1.1-1ubuntu4p unstable-p [amd64])' aptget install crda -s -t unstable-p + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst crda (1.1.1-1ubuntu4mp unstable-mp [amd64]) +Conf crda (1.1.1-1ubuntu4mp unstable-mp [amd64])' aptget install crda -s -t unstable-mp + +rm rootdir/var/lib/dpkg/status +insertinstalledpackage 'crda' 'amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda +Conflicts: wireless-crda (<< 1.15) +Replaces: wireless-crda ( << 1.15) +Multi-arch: foreign' + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + wireless-crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst wireless-crda (1.16 unstable [amd64]) +Conf wireless-crda (1.16 unstable [amd64])' aptget install wireless-crda -s -t unstable diff --git a/test/integration/test-multiarch-foreign b/test/integration/test-multiarch-foreign new file mode 100755 index 000000000..332466d96 --- /dev/null +++ b/test/integration/test-multiarch-foreign @@ -0,0 +1,150 @@ +#!/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 diff --git a/test/integration/test-ordering-ignore-not-matching-breaks b/test/integration/test-ordering-ignore-not-matching-breaks new file mode 100755 index 000000000..c9fca4edf --- /dev/null +++ b/test/integration/test-ordering-ignore-not-matching-breaks @@ -0,0 +1,56 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' 'i386' + +insertpackage 'unstable-mp' 'crda' 'i386,amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda +Multi-Arch: foreign' +insertpackage 'unstable-m' 'crda' 'i386,amd64' '1.1.1-1ubuntu4m' 'Multi-Arch: foreign' +insertpackage 'unstable-p' 'crda' 'i386,amd64' '1.1.1-1ubuntu4p' 'Provides: wireless-crda' +insertpackage 'unstable' 'wireless-crda' 'i386,amd64' '1.16' + + +insertinstalledpackage 'wireless-crda' 'amd64' '1.14' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst crda (1.1.1-1ubuntu4m unstable-m [amd64]) +Conf crda (1.1.1-1ubuntu4m unstable-m [amd64])' aptget install crda -s -t unstable-m + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst crda (1.1.1-1ubuntu4p unstable-p [amd64]) +Conf crda (1.1.1-1ubuntu4p unstable-p [amd64])' aptget install crda -s -t unstable-p + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst crda (1.1.1-1ubuntu4mp unstable-mp [amd64]) +Conf crda (1.1.1-1ubuntu4mp unstable-mp [amd64])' aptget install crda -s -t unstable-mp + +rm rootdir/var/lib/dpkg/status +insertinstalledpackage 'crda' 'amd64' '1.1.1-1ubuntu4mp' 'Provides: wireless-crda +Conflicts: wireless-crda (<< 1.15) +Replaces: wireless-crda ( << 1.15) +Multi-arch: foreign' + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + wireless-crda +0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded. +Inst wireless-crda (1.16 unstable [amd64]) +Conf wireless-crda (1.16 unstable [amd64])' aptget install wireless-crda -s -t unstable diff --git a/test/integration/test-package-reinstallation b/test/integration/test-package-reinstallation new file mode 100755 index 000000000..b4f2061ec --- /dev/null +++ b/test/integration/test-package-reinstallation @@ -0,0 +1,23 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertinstalledpackage 'libc-bin' 'i386' '2.13-8' 'Replaces: libc6' +insertpackage 'unstable' 'libc-bin' 'i386' '2.13-8' 'Replaces: libc6' +insertinstalledpackage 'libc6' 'i386' '2.13-8' 'Depends: libc-bin (= 2.13-8)' +insertpackage 'unstable' 'libc6' 'i386' '2.13-8' 'Depends: libc-bin (= 2.13-8)' +insertinstalledpackage 'apt' 'i386' '0.8.15' 'Depends: libc6' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded. +Inst libc-bin [2.13-8] (2.13-8 unstable [i386]) +Conf libc-bin (2.13-8 unstable [i386]) +Inst libc6 [2.13-8] (2.13-8 unstable [i386]) +Conf libc6 (2.13-8 unstable [i386])' aptget install --reinstall libc6 libc-bin -s diff --git a/test/integration/test-pin-non-existent-package b/test/integration/test-pin-non-existent-package index c91e77844..35de22115 100755 --- a/test/integration/test-pin-non-existent-package +++ b/test/integration/test-pin-non-existent-package @@ -6,7 +6,7 @@ TESTDIR=$(readlink -f $(dirname $0)) setupenvironment configarchitecture "i386" -insertpackage 'unstable' 'apt' 'i386' '0.8.15' +insertpackage 'unstable' 'rapt' 'i386' '0.8.15' insertpackage 'unstable' 'arch' 'i386' '1.0' setupaptarchive @@ -22,40 +22,40 @@ testcandidate() { fi } -testcandidate apt '0.8.15' +testcandidate rapt '0.8.15' testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist -q=0 testequal 'Reading package lists... Building dependency tree... -0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only -echo 'Package: apt +echo 'Package: rapt Pin: release a=unstable Pin-Priority: -1' > rootdir/etc/apt/preferences -testcandidate apt '(none)' +testcandidate rapt '(none)' testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist -q=0 testequal 'Reading package lists... Building dependency tree... -0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only echo ' Package: doesntexist Pin: release a=unstable Pin-Priority: 1000' >> rootdir/etc/apt/preferences -testcandidate apt '(none)' +testcandidate rapt '(none)' echo ' -Package: apt +Package: rapt Pin: release a=unstable Pin-Priority: 1000' >> rootdir/etc/apt/preferences -testcandidate apt '(none)' +testcandidate rapt '(none)' testequal 'N: Unable to locate package doesntexist' aptcache policy doesntexist -q=0 testequal 'Reading package lists... Building dependency tree... -0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget dist-upgrade --trivial-only echo 'Package: arch:amd64 Pin: release a=unstable diff --git a/test/integration/test-provides-gone-with-upgrade b/test/integration/test-provides-gone-with-upgrade new file mode 100755 index 000000000..70384ce29 --- /dev/null +++ b/test/integration/test-provides-gone-with-upgrade @@ -0,0 +1,26 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture "i386" + +insertinstalledpackage 'apt' 'i386' '0.8.14' 'Provides: libapt-pkg4.10' +insertpackage 'unstable' 'apt' 'i386' '0.8.15' 'Depends: libapt-pkg4.10' +insertpackage 'unstable' 'libapt-pkg4.10' 'i386' '0.8.15' 'Breaks: apt (<< 0.8.15) +Replaces: apt (<< 0.8.15)' + +setupaptarchive + +testequal 'Reading package lists... +Building dependency tree... +The following NEW packages will be installed: + libapt-pkg4.10 +The following packages will be upgraded: + apt +1 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Inst apt [0.8.14] (0.8.15 unstable [i386]) [] +Inst libapt-pkg4.10 (0.8.15 unstable [i386]) +Conf libapt-pkg4.10 (0.8.15 unstable [i386]) +Conf apt (0.8.15 unstable [i386])' aptget dist-upgrade -s diff --git a/test/integration/test-release-candidate-switching b/test/integration/test-release-candidate-switching index b6dbe99db..0970cb935 100755 --- a/test/integration/test-release-candidate-switching +++ b/test/integration/test-release-candidate-switching @@ -416,4 +416,4 @@ The following information may help to resolve the situation: The following packages have unmet dependencies: uninstallablepkg : Depends: libmtp8 (>= 10:0.20.1) but it is not going to be installed Depends: amarok-utils (= 2.3.2-2+exp) but 2.3.1-1+sid is to be installed -E: Broken packages" aptget install uninstallablepkg/experimental --trivial-only -V -q=0 +E: Unable to correct problems, you have held broken packages." aptget install uninstallablepkg/experimental --trivial-only -V -q=0 diff --git a/test/integration/test-suggest-installed-multiarch-silbing b/test/integration/test-suggest-installed-multiarch-silbing new file mode 100755 index 000000000..d55d250aa --- /dev/null +++ b/test/integration/test-suggest-installed-multiarch-silbing @@ -0,0 +1,80 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' 'i386' 'armel' + +insertinstalledpackage 'foo' 'i386' '1' +insertpackage 'unstable' 'foo' 'amd64,i386' '1' + +insertinstalledpackage 'foo2' 'i386' '1' +insertpackage 'unstable' 'foo2' 'i386' '1' + +insertinstalledpackage 'foo3' 'amd64' '1' +insertpackage 'unstable' 'foo3' 'amd64,i386' '1' + +insertinstalledpackage 'samefoo' 'i386,amd64' '1' 'Multi-Arch: same' +insertpackage 'unstable' 'samefoo' 'amd64,i386,armel' '1' 'Multi-Arch: same' + +insertinstalledpackage 'samefoo2' 'i386' '1' 'Multi-Arch: same' +insertpackage 'unstable' 'samefoo2' 'amd64,i386,armel' '1' 'Multi-Arch: same' + +insertinstalledpackage 'mozplugger' 'i386' '1' 'Depends: iceweasel | fireweasel' +insertinstalledpackage 'fireweasel' 'i386' '1' +insertpackage 'unstable' 'mozplugger' 'i386,amd64' '1' 'Depends: iceweasel | fireweasel' + +setupaptarchive + +testequal "Reading package lists... +Building dependency tree... +Package 'foo' is not installed, so not removed. Did you mean 'foo:i386'? +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove foo -s + +testequal "Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + foo2:i386 +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +Remv foo2:i386 [1]" aptget remove foo2 -s + +testequal "Reading package lists... +Building dependency tree... +The following packages will be REMOVED: + foo3 +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +Remv foo3 [1]" aptget remove foo3 -s + +testequal "Reading package lists... +Building dependency tree... +Package 'foo3:i386' is not installed, so not removed. Did you mean 'foo3'? +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove foo3:i386 -s + +testequalor2 "Reading package lists... +Building dependency tree... +Package 'samefoo:armel' is not installed, so not removed. Did you mean 'samefoo'? +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." "Reading package lists... +Building dependency tree... +Package 'samefoo:armel' is not installed, so not removed. Did you mean 'samefoo:i386'? +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo:armel -s + +testequal "Reading package lists... +Building dependency tree... +Package 'samefoo2' is not installed, so not removed. Did you mean 'samefoo2:i386'? +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo2 -s + +testequal "Reading package lists... +Building dependency tree... +Package 'samefoo2:armel' is not installed, so not removed. Did you mean 'samefoo2:i386'? +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove samefoo2:armel -s + +testequal "Reading package lists... +Building dependency tree... +Package 'iceweasel' is not installed, so not removed +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove iceweasel -s + +testequal "Reading package lists... +Building dependency tree... +Package 'fireweasel' is not installed, so not removed. Did you mean 'fireweasel:i386'? +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded." aptget remove fireweasel:amd64 -s diff --git a/test/integration/test-ubuntu-bug-761175-remove-purge b/test/integration/test-ubuntu-bug-761175-remove-purge index 93b67fc02..f55c6e909 100755 --- a/test/integration/test-ubuntu-bug-761175-remove-purge +++ b/test/integration/test-ubuntu-bug-761175-remove-purge @@ -4,14 +4,14 @@ set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture 'i386' +configarchitecture 'native' -setupsimplenativepackage 'compiz-core' 'i386' '1.0' 'unstable' +setupsimplenativepackage 'compiz-core' 'native' '1.0' 'unstable' BUILDDIR='incoming/compiz-core-1.0' mkdir -p ${BUILDDIR}/debian/compiz-core/etc echo 'foo=bar;' > ${BUILDDIR}/compiz.conf echo 'compiz.conf /etc/compiz.conf' >> ${BUILDDIR}/debian/install -buildpackage "$BUILDDIR" 'unstable' 'main' +buildpackage "$BUILDDIR" 'unstable' 'main' 'native' rm -rf "$BUILDDIR" setupaptarchive @@ -27,7 +27,7 @@ aptget remove compiz-core -y -qq 2>&1 >/dev/null && msgpass || msgfail testdpkgnotinstalled compiz-core msgtest 'Check that conffiles are still around for' 'compiz-core' -dpkg -l compiz-core | grep '^rc' 2>&1 >/dev/null && msgpass || msgfail +dpkg -l compiz-core | grep -q '^rc' && msgpass || msgfail testequal 'Reading package lists... Building dependency tree... diff --git a/test/integration/test-ubuntu-bug-859188-multiarch-reinstall b/test/integration/test-ubuntu-bug-859188-multiarch-reinstall new file mode 100755 index 000000000..0fdf97485 --- /dev/null +++ b/test/integration/test-ubuntu-bug-859188-multiarch-reinstall @@ -0,0 +1,28 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework +setupenvironment +configarchitecture 'amd64' 'i386' 'armel' + +buildsimplenativepackage 'libsame' 'amd64,i386,armel' '1.0' 'unstable' 'Multi-Arch: same' + +# FIXME: hack around dpkg's current inability to handle multiarch, a clean install would be better… +insertinstalledpackage 'libsame' 'amd64,i386' '1.0' 'Multi-Arch: same' +sed -e 's#/installed#/unstable#' -e 's#Installed-Size: 42#Installed-Size: 1#' -i rootdir/var/lib/dpkg/status + +setupaptarchive + +REINSTALL='Reading package lists... +Building dependency tree... +0 upgraded, 0 newly installed, 2 reinstalled, 0 to remove and 0 not upgraded. +Inst libsame [1.0] (1.0 unstable [amd64]) +Inst libsame:i386 [1.0] (1.0 unstable [i386]) +Conf libsame (1.0 unstable [amd64]) +Conf libsame:i386 (1.0 unstable [i386])' + +testequal "$REINSTALL" aptget install --reinstall libsame -s +testequal "$REINSTALL" aptget install --reinstall libsame:amd64 -s +testequal "$REINSTALL" aptget install --reinstall libsame:i386 -s +testequal "$REINSTALL" aptget install --reinstall libsame:amd64 libsame:i386 -s diff --git a/test/interactive-helper/extract-control.cc b/test/interactive-helper/extract-control.cc index 29dcbf371..3f7feabcb 100644 --- a/test/interactive-helper/extract-control.cc +++ b/test/interactive-helper/extract-control.cc @@ -1,5 +1,6 @@ #include <apt-pkg/debfile.h> #include <apt-pkg/error.h> +#include <apt-pkg/fileutl.h> #include <iostream> #include <unistd.h> @@ -20,8 +21,7 @@ bool ExtractMember(const char *File,const char *Member) if (Extract.Control == 0) return true; - write(STDOUT_FILENO,Extract.Control,Extract.Length); - return true; + return write(STDOUT_FILENO,Extract.Control,Extract.Length) != -1; } int main(int argc, const char *argv[]) diff --git a/test/interactive-helper/makefile b/test/interactive-helper/makefile index b96139fda..10d1e44ec 100644 --- a/test/interactive-helper/makefile +++ b/test/interactive-helper/makefile @@ -11,28 +11,24 @@ SLIBS = SOURCE = mthdcat.cc include $(PROGRAM_H) -# Version compare tester -PROGRAM=testextract -SLIBS = -lapt-pkg -lapt-inst -LIB_MAKES = apt-pkg/makefile apt-inst/makefile -SOURCE = testextract.cc -include $(PROGRAM_H) - # Program for testing the tar/deb extractor PROGRAM=testdeb SLIBS = -lapt-pkg -lapt-inst +LIB_MAKES = apt-pkg/makefile apt-inst/makefile SOURCE = testdeb.cc include $(PROGRAM_H) # Program for testing tar extraction PROGRAM=extract-control SLIBS = -lapt-pkg -lapt-inst +LIB_MAKES = apt-pkg/makefile apt-inst/makefile SOURCE = extract-control.cc include $(PROGRAM_H) # Program for testing udevcdrom PROGRAM=test_udevcdrom -SLIBS = -lapt-pkg +SLIBS = -lapt-pkg +LIB_MAKES = apt-pkg/makefile SOURCE = test_udevcdrom.cc include $(PROGRAM_H) diff --git a/test/interactive-helper/test_udevcdrom.cc b/test/interactive-helper/test_udevcdrom.cc index dc25ab357..88f5f0153 100644 --- a/test/interactive-helper/test_udevcdrom.cc +++ b/test/interactive-helper/test_udevcdrom.cc @@ -2,12 +2,15 @@ #include <stdio.h> #include <assert.h> +#include <vector> +#include <iostream> + int main() { pkgUdevCdromDevices c; assert(c.Dlopen()); - vector<CdromDevice> l; + std::vector<CdromDevice> l; l = c.Scan(); assert(l.empty() == false); for (size_t i = 0; i < l.size(); ++i) diff --git a/test/interactive-helper/testextract.cc b/test/interactive-helper/testextract.cc deleted file mode 100644 index b790df618..000000000 --- a/test/interactive-helper/testextract.cc +++ /dev/null @@ -1,101 +0,0 @@ -#include <apt-pkg/dpkgdb.h> -#include <apt-pkg/debfile.h> -#include <apt-pkg/error.h> -#include <apt-pkg/configuration.h> -#include <apt-pkg/progress.h> -#include <apt-pkg/extract.h> -#include <apt-pkg/init.h> -#include <apt-pkg/strutl.h> - -#include <stdio.h> -#include <stdlib.h> - -using namespace std; - -bool Go(int argc,char *argv[]) -{ - // Init the database - debDpkgDB Db; - { - OpTextProgress Prog; - - if (Db.ReadyPkgCache(Prog) == false) - return false; - Prog.Done(); - - if (Db.ReadyFileList(Prog) == false) - return false; - } - - for (int I = 1; I < argc; I++) - { - const char *Fake = 0; - for (unsigned J = 0; argv[I][J] != 0; J++) - { - if (argv[I][J] != ',') - continue; - Fake = argv[I] + J + 1; - argv[I][J] = 0; - } - - FileFd F(argv[I],FileFd::ReadOnly); - debDebFile Deb(F); - - if (_error->PendingError() == true) - return false; - - if (Deb.ExtractControl(Db) == false) - return false; - cout << argv[I] << endl; - - pkgCache::VerIterator Ver = Deb.MergeControl(Db); - if (Ver.end() == true) - return false; - - cout << Ver.ParentPkg().Name() << ' ' << Ver.VerStr() << endl; - - pkgExtract Extract(Db.GetFLCache(),Ver); - - if (Fake != 0) - { - pkgExtract::Item Itm; - memset(&Itm,0,sizeof(Itm)); - FILE *F = fopen(Fake,"r"); - while (feof(F) == 0) - { - char Line[300]; - fgets(Line,sizeof(Line),F); - Itm.Name = _strstrip(Line); - Itm.Type = pkgDirStream::Item::File; - if (Line[strlen(Line)-1] == '/') - Itm.Type = pkgDirStream::Item::Directory; - - int Fd; - if (Extract.DoItem(Itm,Fd) == false) { - fclose(F); - return false; - } - } - fclose(F); - } - else - if (Deb.ExtractArchive(Extract) == false) - return false; - } - return true; -} - -int main(int argc,char *argv[]) -{ - pkgInitConfig(*_config); - pkgInitSystem(*_config,_system); - _config->Set("Dir::State::status","/tmp/testing/status"); - - Go(argc,argv); - - if (_error->PendingError() == true) - { - _error->DumpErrors(); - return 0; - } -} diff --git a/test/libapt/assert.h b/test/libapt/assert.h index ce5accc1c..a07be4b57 100644 --- a/test/libapt/assert.h +++ b/test/libapt/assert.h @@ -26,6 +26,18 @@ void assertEquals(int const &expect, unsigned int const &get, unsigned long cons assertEquals<unsigned int const&, unsigned int const&>(expect, get, line); } +void assertEquals(unsigned long const &expect, int const &get, unsigned long const &line) { + if (get < 0) + OutputAssertEqual(expect, "==", get, line); + assertEquals<unsigned long const&, unsigned long const&>(expect, get, line); +} + +void assertEquals(int const &expect, unsigned long const &get, unsigned long const &line) { + if (expect < 0) + OutputAssertEqual(expect, "==", get, line); + assertEquals<unsigned long const&, unsigned long const&>(expect, get, line); +} + #define equalsOr2(x,y,z) assertEqualsOr2(y, z, x, __LINE__) diff --git a/test/libapt/cdromfindpackages_test.cc b/test/libapt/cdromfindpackages_test.cc new file mode 100644 index 000000000..e9f5a51b0 --- /dev/null +++ b/test/libapt/cdromfindpackages_test.cc @@ -0,0 +1,86 @@ +#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; +} diff --git a/test/libapt/configuration_test.cc b/test/libapt/configuration_test.cc index 5b23d17fb..9a3e2c118 100644 --- a/test/libapt/configuration_test.cc +++ b/test/libapt/configuration_test.cc @@ -71,6 +71,15 @@ int main(int argc,const char *argv[]) { equals(Cnf.Find("APT2::Version", "33"), "33"); equals(Cnf.FindI("APT2::Version", 33), 33); + equals(Cnf.FindFile("Dir::State"), ""); + equals(Cnf.FindFile("Dir::Aptitude::State"), ""); + Cnf.Set("Dir", "/srv/sid"); + equals(Cnf.FindFile("Dir::State"), ""); + Cnf.Set("Dir::State", "var/lib/apt"); + Cnf.Set("Dir::Aptitude::State", "var/lib/aptitude"); + equals(Cnf.FindFile("Dir::State"), "/srv/sid/var/lib/apt"); + equals(Cnf.FindFile("Dir::Aptitude::State"), "/srv/sid/var/lib/aptitude"); + //FIXME: Test for configuration file parsing; // currently only integration/ tests test them implicitly diff --git a/test/libapt/getlistoffilesindir_test.cc b/test/libapt/getlistoffilesindir_test.cc index 5ee014cca..b2c95e840 100644 --- a/test/libapt/getlistoffilesindir_test.cc +++ b/test/libapt/getlistoffilesindir_test.cc @@ -7,7 +7,7 @@ #include <stdio.h> #include <iostream> -#define P(x) string(argv[1]).append("/").append(x) +#define P(x) std::string(argv[1]).append("/").append(x) int main(int argc,char *argv[]) { diff --git a/test/libapt/globalerror_test.cc b/test/libapt/globalerror_test.cc index 5d27414f9..72044d493 100644 --- a/test/libapt/globalerror_test.cc +++ b/test/libapt/globalerror_test.cc @@ -3,9 +3,12 @@ #include "assert.h" #include <string> #include <errno.h> +#include <string.h> int main(int argc,char *argv[]) { + std::string const textOfErrnoZero(strerror(0)); + equals(_error->empty(), true); equals(_error->PendingError(), false); equals(_error->Notice("%s Notice", "A"), false); @@ -80,7 +83,7 @@ int main(int argc,char *argv[]) equals(_error->PendingError(), true); equals(_error->PopMessage(text), true); equals(_error->PendingError(), false); - equals(text, "Something horrible happend 2 times - errno (0: Success)"); + equals(text, std::string("Something horrible happend 2 times - errno (0: ").append(textOfErrnoZero).append(")")); equals(_error->empty(), true); std::string longText; @@ -92,7 +95,7 @@ int main(int argc,char *argv[]) equals(_error->Errno("errno", "%s horrible %s %d times", longText.c_str(), "happend", 2), false); equals(_error->PopMessage(text), true); - equals(text, std::string(longText).append(" horrible happend 2 times - errno (0: Success)")); + equals(text, std::string(longText).append(" horrible happend 2 times - errno (0: ").append(textOfErrnoZero).append(")")); equals(_error->Warning("Репозиторий не обновлён и будут %d %s", 4, "test"), false); equals(_error->PopMessage(text), false); diff --git a/test/libapt/hashsums_test.cc b/test/libapt/hashsums_test.cc new file mode 100644 index 000000000..396e4cf6b --- /dev/null +++ b/test/libapt/hashsums_test.cc @@ -0,0 +1,156 @@ +#include <apt-pkg/md5.h> +#include <apt-pkg/sha1.h> +#include <apt-pkg/sha2.h> +#include <apt-pkg/strutl.h> +#include <apt-pkg/hashes.h> +#include <iostream> + +#include <stdio.h> + +#include "assert.h" + +template <class T> void Test(const char *In,const char *Out) +{ + T Sum; + Sum.Add(In); + equals(Sum.Result().Value(), Out); +} + +template <class T> void TestMill(const char *Out) +{ + T Sum; + + const unsigned char As[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; + unsigned Count = 1000000; + for (; Count != 0;) + { + if (Count >= 64) + { + Sum.Add(As,64); + Count -= 64; + } + else + { + Sum.Add(As,Count); + Count = 0; + } + } + + if (stringcasecmp(Sum.Result().Value(), Out) != 0) + abort(); +} + +int main(int argc, char** argv) +{ + // From FIPS PUB 180-1 + Test<SHA1Summation>("","da39a3ee5e6b4b0d3255bfef95601890afd80709"); + Test<SHA1Summation>("abc","a9993e364706816aba3e25717850c26c9cd0d89d"); + Test<SHA1Summation>("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "84983e441c3bd26ebaae4aa1f95129e5e54670f1"); + TestMill<SHA1Summation>("34aa973cd4c4daa4f61eeb2bdbad27316534016f"); + + // MD5 tests from RFC 1321 + Test<MD5Summation>("","d41d8cd98f00b204e9800998ecf8427e"); + Test<MD5Summation>("a","0cc175b9c0f1b6a831c399e269772661"); + Test<MD5Summation>("abc","900150983cd24fb0d6963f7d28e17f72"); + Test<MD5Summation>("message digest","f96b697d7cb7938d525a2f31aaf161d0"); + Test<MD5Summation>("abcdefghijklmnopqrstuvwxyz","c3fcd3d76192e4007dfb496cca67e13b"); + Test<MD5Summation>("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + "d174ab98d277d9f5a5611c2c9f419d9f"); + Test<MD5Summation>("12345678901234567890123456789012345678901234567890123456789012345678901234567890", + "57edf4a22be3c955ac49da2e2107b67a"); + + // SHA-256, From FIPS 180-2 + Test<SHA256Summation>("", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"); + Test<SHA256Summation>("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1"); + + // SHA-512 + Test<SHA512Summation>("", + "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce" + "47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"); + Test<SHA512Summation>( + "abc", + "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" + "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"); + + + Test<MD5Summation>("The quick brown fox jumps over the lazy dog", "9e107d9d372bb6826bd81d3542a419d6"); + Test<MD5Summation>("The quick brown fox jumps over the lazy dog.", "e4d909c290d0fb1ca068ffaddf22cbd0"); + Test<SHA1Summation>("The quick brown fox jumps over the lazy dog", "2fd4e1c67a2d28fced849ee1bb76e7391b93eb12"); + Test<SHA1Summation>("The quick brown fox jumps over the lazy cog", "de9f2c7fd25e1b3afad3e85a0bd17d9b100db4b3"); + Test<SHA256Summation>("The quick brown fox jumps over the lazy dog", "d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592"); + Test<SHA256Summation>("The quick brown fox jumps over the lazy dog.", "ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c"); + Test<SHA512Summation>("The quick brown fox jumps over the lazy dog", "07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb64" + "2e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6"); + Test<SHA512Summation>("The quick brown fox jumps over the lazy dog.", "91ea1245f20d46ae9a037a989f54f1f790f0a47607eeb8a14d12890cea77a1bb" + "c6c7ed9cf205e67b7f2b8fd4c7dfd3a7a8617e45f3c463d481c7e586c39ac1ed"); + + FILE* fd = fopen(argv[1], "r"); + if (fd == NULL) { + std::cerr << "Can't open file for 1. testing: " << argv[1] << std::endl; + return 1; + } + { + Hashes hashes; + hashes.AddFD(fileno(fd)); + equals(argv[2], hashes.MD5.Result().Value()); + equals(argv[3], hashes.SHA1.Result().Value()); + equals(argv[4], hashes.SHA256.Result().Value()); + equals(argv[5], hashes.SHA512.Result().Value()); + } + fseek(fd, 0L, SEEK_END); + unsigned long sz = ftell(fd); + fseek(fd, 0L, SEEK_SET); + { + Hashes hashes; + hashes.AddFD(fileno(fd), sz); + equals(argv[2], hashes.MD5.Result().Value()); + equals(argv[3], hashes.SHA1.Result().Value()); + equals(argv[4], hashes.SHA256.Result().Value()); + equals(argv[5], hashes.SHA512.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + MD5Summation md5; + md5.AddFD(fileno(fd)); + equals(argv[2], md5.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + SHA1Summation sha1; + sha1.AddFD(fileno(fd)); + equals(argv[3], sha1.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + SHA256Summation sha2; + sha2.AddFD(fileno(fd)); + equals(argv[4], sha2.Result().Value()); + } + fseek(fd, 0L, SEEK_SET); + { + SHA512Summation sha2; + sha2.AddFD(fileno(fd)); + equals(argv[5], sha2.Result().Value()); + } + fclose(fd); + + // test HashString code + { + HashString sha2("SHA256", argv[4]); + equals(sha2.VerifyFile(argv[1]), true); + } + { + HashString sha2("SHA512", argv[5]); + equals(sha2.VerifyFile(argv[1]), true); + } + { + HashString sha2("SHA256:" + std::string(argv[4])); + equals(sha2.VerifyFile(argv[1]), true); + } + + return 0; +} + + diff --git a/test/libapt/makefile b/test/libapt/makefile index b3f2f4274..1952051e2 100644 --- a/test/libapt/makefile +++ b/test/libapt/makefile @@ -51,6 +51,12 @@ SLIBS = -lapt-pkg SOURCE = globalerror_test.cc include $(PROGRAM_H) +# test the different Hashsum classes +PROGRAM = HashSums${BASENAME} +SLIBS = -lapt-pkg +SOURCE = hashsums_test.cc +include $(PROGRAM_H) + # test the strutils stuff PROGRAM = StrUtil${BASENAME} SLIBS = -lapt-pkg @@ -68,3 +74,9 @@ PROGRAM = Configuration${BASENAME} 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) diff --git a/test/libapt/parsedepends_test.cc b/test/libapt/parsedepends_test.cc index 7b496878d..b5d92d9d2 100644 --- a/test/libapt/parsedepends_test.cc +++ b/test/libapt/parsedepends_test.cc @@ -4,8 +4,8 @@ #include "assert.h" int main(int argc,char *argv[]) { - string Package; - string Version; + std::string Package; + std::string Version; unsigned int Op = 5; unsigned int Null = 0; bool StripMultiArch = true; diff --git a/test/libapt/run-tests b/test/libapt/run-tests index 9dad36f5b..4ea9a916d 100755 --- a/test/libapt/run-tests +++ b/test/libapt/run-tests @@ -66,8 +66,42 @@ do "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-se~" \ "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-st.bak" \ "${tmppath}/ftp.de.debian.org_debian_dists_sid_main_i18n_Translation-ast_DE" + elif [ $name = "HashSums${EXT}" ]; then + TMP="$(readlink -f "./${0}")" + echo -n "Testing with ${NAME} " + LD_LIBRARY_PATH=${LDPATH} ${testapp} $TMP $(md5sum $TMP | cut -d' ' -f 1) $(sha1sum $TMP | cut -d' ' -f 1) $(sha256sum $TMP | cut -d' ' -f 1) $(sha512sum $TMP | cut -d' ' -f 1) && echo "$TESTOKAY" || echo "$TESTFAIL" + 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} " @@ -76,5 +110,4 @@ do if [ -n "$tmppath" -a -d "$tmppath" ]; then rm -rf "$tmppath" fi - done diff --git a/test/libapt/strutil_test.cc b/test/libapt/strutil_test.cc index af6eb2cc6..bfe0d7222 100644 --- a/test/libapt/strutil_test.cc +++ b/test/libapt/strutil_test.cc @@ -4,7 +4,7 @@ int main(int argc,char *argv[]) { - string input, output, expected; + std::string input, output, expected; // no input input = "foobar"; |