--- /dev/null
+
+DDTP problems:
+--------------
+- apt-get update clean the /var/lib/apt/lists dir
+ from all Translation-$index that are not in the current
+ enviroment or Translations apt variable
+- there needs to be a list of locales (pt, sv, en) that need
+ both language and country code to get the right file
# The startup target builds the necessary configure scripts. It should
# be used after a CVS checkout.
-CONVERTED=environment.mak include/config.h include/apti18n.h makefile
+CONVERTED=environment.mak include/config.h include/apti18n.h build/doc/Doxyfile makefile
include buildlib/configure.mak
$(BUILDDIR)/include/config.h: buildlib/config.h.in
$(BUILDDIR)/include/apti18n.h: buildlib/apti18n.h.in
--- /dev/null
+TODO:
+- URL-Remap for the translation files (to hack around the problem that
+ they are not on any ftp server yet but only on http://ddtp.debian.org/)
+
+Here is the original announcement of the ddtp support:
+
+* To: debian-devel-announce@lists.debian.org
+* Subject: Translate files
+* From: Michael Bramer <grisu@debian.org>
+* Date: Sun, 6 Oct 2002 21:56:06 +0200
+* Mail-followup-to: debian-devel@lists.debian.org
+* Message-id: <20021006195605.GA30516@home.debsupport.de>
+* Old-return-path: <michael@home.debsupport.de>
+* User-agent: Mutt/1.3.28i
+
+Hello all
+
+After some discussion between Anthony Towns (a ftpmaster), Jason
+Gunthorpe (APT Developer) and some DDTP Coordinators we find a way to
+transfer the translated package descriptions from the archive to the
+user.
+
+The translated descriptions need to be downloadable befor any
+installation process, like the other package meta information. We
+choose a new file per languages with all translated package
+descriptions. The package system can download one or more of this
+files at 'apt-get update' time and know the translations.
+
+The new files are names 'Translate-$lang' and the file have this
+rfc822-format:
+ Package: <package-name>
+ Description-md5: <the md5 checksum of the english description>
+ Description-$lang.$encoding: <translated headline>
+ <translated section>
+
+The encoding of the Description is 'UTF-8' in all languages normal.
+The files will be located at 'debian/dists/sid/main/i18n/' on the ftp
+server (for all architecture). In addition of the plain
+'Translate-$lang' file, there will be a 'gz' and a 'bz2' version and
+in future also the new incremental format version.
+
+The <the md5 checksum of the english description> is the md5 checksum
+of the full english description, without the 'Description: '-tag and
+with all spaces and newlines. Look at this example:
+ Description: XXX
+ YYY
+ .
+ ZZZ
+is md5("XXX\n YYY\n .\n ZZZ\n") (perl-syntax).
+
+
+A future APT version will download one or some 'Translate-$lang'
+file(s) at 'update'-time. After this download it show a translated
+description instead of the english form, if it found a translated
+description of the package with the right md5 chechsum. The enviroment
+of the user will controlled this process (LANG, LANGUAGE, LC_MESSAGES,
+etc). With this the package system will never show a outdated
+translation.
+
+The translations come all from the DDTP. A daily process on
+ddtp.debian.org make new 'Translated-$lang' files and a script on
+ftp-master request this files and move this to the debian archive.
+Now the first files are accessable at
+ <a href="http://ddtp.debian.org/pdesc/translatefiles/">http://ddtp.debian.org/pdesc/translatefiles/</a>
+
+If you found wrong translations, please read the guides on
+ddtp.debian.org, make a better translation and send this per mail to
+the DDTP server. Don't bug the package maintainer!
+
+Thanks
+Grisu
+--
+Michael Bramer - a Debian Linux Developer <a href="http://www.debsupport.de">http://www.debsupport.de</a>
+PGP: finger grisu@db.debian.org -- Linux Sysadmin -- Use Debian Linux
#include <apt-pkg/strutl.h>
#include <apt-pkg/fileutl.h>
#include <apt-pkg/md5.h>
+#include <apt-pkg/sha1.h>
+#include <apt-pkg/tagfile.h>
#include <apti18n.h>
#include <unistd.h>
#include <errno.h>
#include <string>
+#include <sstream>
#include <stdio.h>
/*}}}*/
}
/*}}}*/
+
+// AcqDiffIndex::AcqDiffIndex - Constructor
+// ---------------------------------------------------------------------
+/* Get the DiffIndex file first and see if there are patches availabe
+ * If so, create a pkgAcqIndexDiffs fetcher that will get and apply the
+ * patches. If anything goes wrong in that process, it will fall back to
+ * the original packages file
+ */
+pkgAcqDiffIndex::pkgAcqDiffIndex(pkgAcquire *Owner,
+ string URI,string URIDesc,string ShortDesc,
+ string ExpectedMD5)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5), Description(URIDesc)
+{
+
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Desc.Description = URIDesc + "/DiffIndex";
+ Desc.Owner = this;
+ Desc.ShortDesc = ShortDesc;
+ Desc.URI = URI + ".diff/Index";
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(URI) + string(".DiffIndex");
+
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex: " << Desc.URI << std::endl;
+
+ // look for the current package file
+ CurrentPackagesFile = _config->FindDir("Dir::State::lists");
+ CurrentPackagesFile += URItoFileName(RealURI);
+
+ // FIXME: this file:/ check is a hack to prevent fetching
+ // from local sources. this is really silly, and
+ // should be fixed cleanly as soon as possible
+ if(!FileExists(CurrentPackagesFile) ||
+ Desc.URI.substr(0,strlen("file:/")) == "file:/" ||
+ !_config->FindB("Acquire::Diffs",true)) {
+ // we don't have a pkg file or we don't want to queue
+ if(Debug)
+ std::clog << "No index file, local or canceld by user" << std::endl;
+ Failed("", NULL);
+ return;
+ }
+
+ if(Debug) {
+ std::clog << "pkgAcqIndexDiffs::pkgAcqIndexDiffs(): "
+ << CurrentPackagesFile << std::endl;
+ }
+
+ QueueURI(Desc);
+
+}
+
+// AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/
+// ---------------------------------------------------------------------
+/* The only header we use is the last-modified header. */
+string pkgAcqDiffIndex::Custom600Headers()
+{
+ string Final = _config->FindDir("Dir::State::lists");
+ Final += URItoFileName(RealURI) + string(".IndexDiff");
+
+ if(Debug)
+ std::clog << "Custom600Header-IMS: " << Final << std::endl;
+
+ struct stat Buf;
+ if (stat(Final.c_str(),&Buf) != 0)
+ return "\nIndex-File: true";
+
+ return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
+}
+
+
+bool pkgAcqDiffIndex::ParseDiffIndex(string IndexDiffFile)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::ParseIndexDiff() " << IndexDiffFile
+ << std::endl;
+
+ pkgTagSection Tags;
+ string ServerSha1;
+ vector<DiffInfo> available_patches;
+
+ FileFd Fd(IndexDiffFile,FileFd::ReadOnly);
+ pkgTagFile TF(&Fd);
+ if (_error->PendingError() == true)
+ return false;
+
+ if(TF.Step(Tags) == true)
+ {
+ string local_sha1;
+ bool found = false;
+ DiffInfo d;
+ string size;
+
+ string tmp = Tags.FindS("SHA1-Current");
+ std::stringstream ss(tmp);
+ ss >> ServerSha1;
+
+ FileFd fd(CurrentPackagesFile, FileFd::ReadOnly);
+ SHA1Summation SHA1;
+ SHA1.AddFD(fd.Fd(), fd.Size());
+ local_sha1 = string(SHA1.Result());
+
+ if(local_sha1 == ServerSha1) {
+ if(Debug)
+ std::clog << "Package file is up-to-date" << std::endl;
+ // set found to true, this will queue a pkgAcqIndexDiffs with
+ // a empty availabe_patches
+ found = true;
+ } else {
+ if(Debug)
+ std::clog << "SHA1-Current: " << ServerSha1 << std::endl;
+
+ // check the historie and see what patches we need
+ string history = Tags.FindS("SHA1-History");
+ std::stringstream hist(history);
+ while(hist >> d.sha1 >> size >> d.file) {
+ d.size = atoi(size.c_str());
+ // read until the first match is found
+ if(d.sha1 == local_sha1)
+ found=true;
+ // from that point on, we probably need all diffs
+ if(found) {
+ if(Debug)
+ std::clog << "Need to get diff: " << d.file << std::endl;
+ available_patches.push_back(d);
+ }
+ }
+ }
+
+ // no information how to get the patches, bail out
+ if(!found) {
+ if(Debug)
+ std::clog << "Can't find a patch in the index file" << std::endl;
+ // Failed will queue a big package file
+ Failed("", NULL);
+ } else {
+ // queue the diffs
+ new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5, available_patches);
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void pkgAcqDiffIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex failed: " << Desc.URI << std::endl
+ << "Falling back to normal index file aquire" << std::endl;
+
+ new pkgAcqIndex(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5);
+
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+}
+
+void pkgAcqDiffIndex::Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqDiffIndex::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message,Size,Md5Hash,Cnf);
+
+ string FinalFile;
+ FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+
+ // sucess in downloading the index
+ // rename the index
+ FinalFile += string(".IndexDiff");
+ if(Debug)
+ std::clog << "Renaming: " << DestFile << " -> " << FinalFile
+ << std::endl;
+ Rename(DestFile,FinalFile);
+ chmod(FinalFile.c_str(),0644);
+ DestFile = FinalFile;
+
+ if(!ParseDiffIndex(DestFile))
+ return Failed("", NULL);
+
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+ return;
+}
+
+
+
+// AcqIndexDiffs::AcqIndexDiffs - Constructor
+// ---------------------------------------------------------------------
+/* The package diff is added to the queue. one object is constructed
+ * for each diff and the index
+ */
+pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
+ string URI,string URIDesc,string ShortDesc,
+ string ExpectedMD5, vector<DiffInfo> diffs)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5),
+ available_patches(diffs)
+{
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(URI);
+
+ Debug = _config->FindB("Debug::pkgAcquire::Diffs",false);
+
+ Desc.Description = URIDesc;
+ Desc.Owner = this;
+ Desc.ShortDesc = ShortDesc;
+
+ if(available_patches.size() == 0) {
+ // we are done (yeah!)
+ Finish(true);
+ } else {
+ // get the next diff
+ State = StateFetchDiff;
+ QueueNextDiff();
+ }
+}
+
+
+void pkgAcqIndexDiffs::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs failed: " << Desc.URI << std::endl
+ << "Falling back to normal index file acquire" << std::endl;
+ new pkgAcqIndex(Owner, RealURI, Description,Desc.ShortDesc,
+ ExpectedMD5);
+ Finish();
+}
+
+
+// helper that cleans the item out of the fetcher queue
+void pkgAcqIndexDiffs::Finish(bool allDone)
+{
+ // we restore the original name, this is required, otherwise
+ // the file will be cleaned
+ if(allDone) {
+ DestFile = _config->FindDir("Dir::State::lists");
+ DestFile += URItoFileName(RealURI);
+
+ // do the final md5sum checking
+ MD5Summation sum;
+ FileFd Fd(DestFile, FileFd::ReadOnly);
+ sum.AddFD(Fd.Fd(), Fd.Size());
+ Fd.Close();
+ string MD5 = (string)sum.Result();
+
+ if (!ExpectedMD5.empty() && MD5 != ExpectedMD5)
+ {
+ Status = StatAuthError;
+ ErrorText = _("MD5Sum mismatch");
+ Rename(DestFile,DestFile + ".FAILED");
+ Dequeue();
+ return;
+ }
+
+ // this is for the "real" finish
+ Complete = true;
+ Status = StatDone;
+ Dequeue();
+ if(Debug)
+ std::clog << "\n\nallDone: " << DestFile << "\n" << std::endl;
+ return;
+ }
+
+ if(Debug)
+ std::clog << "Finishing: " << Desc.URI << std::endl;
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return;
+}
+
+
+
+bool pkgAcqIndexDiffs::QueueNextDiff()
+{
+
+ // calc sha1 of the just patched file
+ string FinalFile = _config->FindDir("Dir::State::lists");
+ FinalFile += URItoFileName(RealURI);
+
+ FileFd fd(FinalFile, FileFd::ReadOnly);
+ SHA1Summation SHA1;
+ SHA1.AddFD(fd.Fd(), fd.Size());
+ string local_sha1 = string(SHA1.Result());
+ if(Debug)
+ std::clog << "QueueNextDiff: "
+ << FinalFile << " (" << local_sha1 << ")"<<std::endl;
+
+ // remove all patches until the next matching patch is found
+ // this requires the Index file to be ordered
+ for(vector<DiffInfo>::iterator I=available_patches.begin();
+ available_patches.size() > 0 && I != available_patches.end()
+ && (*I).sha1 != local_sha1;
+ I++) {
+ available_patches.erase(I);
+ }
+
+ // error checking and falling back if no patch was found
+ if(available_patches.size() == 0) {
+ Failed("", NULL);
+ return false;
+ }
+
+ // queue the right diff
+ Desc.URI = string(RealURI) + ".diff/" + available_patches[0].file + ".gz";
+ Desc.Description = available_patches[0].file + string(".pdiff");
+
+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
+ DestFile += URItoFileName(RealURI + ".diff/" + available_patches[0].file);
+
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::QueueNextDiff(): " << Desc.URI << std::endl;
+
+ QueueURI(Desc);
+
+ return true;
+}
+
+
+
+void pkgAcqIndexDiffs::Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf)
+{
+ if(Debug)
+ std::clog << "pkgAcqIndexDiffs::Done(): " << Desc.URI << std::endl;
+
+ Item::Done(Message,Size,Md5Hash,Cnf);
+
+ string FinalFile;
+ FinalFile = _config->FindDir("Dir::State::lists")+URItoFileName(RealURI);
+
+ // sucess in downloading a diff, enter ApplyDiff state
+ if(State == StateFetchDiff)
+ {
+
+ if(Debug)
+ std::clog << "Sending to gzip method: " << FinalFile << std::endl;
+
+ string FileName = LookupTag(Message,"Filename");
+ State = StateUnzipDiff;
+ Desc.URI = "gzip:" + FileName;
+ DestFile += ".decomp";
+ QueueURI(Desc);
+ Mode = "gzip";
+ return;
+ }
+
+ // sucess in downloading a diff, enter ApplyDiff state
+ if(State == StateUnzipDiff)
+ {
+
+ // rred excepts the patch as $FinalFile.ed
+ Rename(DestFile,FinalFile+".ed");
+
+ if(Debug)
+ std::clog << "Sending to rred method: " << FinalFile << std::endl;
+
+ State = StateApplyDiff;
+ Desc.URI = "rred:" + FinalFile;
+ QueueURI(Desc);
+ Mode = "rred";
+ return;
+ }
+
+
+ // success in download/apply a diff, queue next (if needed)
+ if(State == StateApplyDiff)
+ {
+ // remove the just applied patch
+ available_patches.erase(available_patches.begin());
+
+ // move into place
+ if(Debug)
+ {
+ std::clog << "Moving patched file in place: " << std::endl
+ << DestFile << " -> " << FinalFile << std::endl;
+ }
+ Rename(DestFile,FinalFile);
+
+ // see if there is more to download
+ if(available_patches.size() > 0) {
+ new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5, available_patches);
+ return Finish();
+ } else
+ return Finish(true);
+ }
+}
+
+
// AcqIndex::AcqIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* The package file is added to the queue and a second class is
instantiated to fetch the revision file */
pkgAcqIndex::pkgAcqIndex(pkgAcquire *Owner,
string URI,string URIDesc,string ShortDesc,
- string ExpectedMD5, string comprExt) :
- Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5)
+ string ExpectedMD5, string comprExt)
+ : Item(Owner), RealURI(URI), ExpectedMD5(ExpectedMD5)
{
Decompression = false;
Erase = false;
Mode = decompProg;
}
+// AcqIndexTrans::pkgAcqIndexTrans - Constructor /*{{{*/
+// ---------------------------------------------------------------------
+/* The Translation file is added to the queue */
+pkgAcqIndexTrans::pkgAcqIndexTrans(pkgAcquire *Owner,
+ string URI,string URIDesc,string ShortDesc) :
+ pkgAcqIndex(Owner, URI, URIDesc, ShortDesc, "", "")
+{
+}
+
+ /*}}}*/
+// AcqIndexTrans::Failed - Silence failure messages for missing files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+void pkgAcqIndexTrans::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
+{
+ if (Cnf->LocalOnly == true ||
+ StringToBool(LookupTag(Message,"Transient-Failure"),false) == false)
+ {
+ // Ignore this
+ Status = StatDone;
+ Complete = false;
+ Dequeue();
+ return;
+ }
+
+ Item::Failed(Message,Cnf);
+}
+ /*}}}*/
+
pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner,
string URI,string URIDesc,string ShortDesc,
string MetaIndexURI, string MetaIndexURIDesc,
}
// Queue Packages file
- new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
- (*Target)->ShortDesc, ExpectedIndexMD5);
+ new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
+ (*Target)->ShortDesc, ExpectedIndexMD5);
}
}
the Owner Acquire class. Derived classes will then call QueueURI to
register all the URI's they wish to fetch at the initial moment.
- Two item classes are provided to provide functionality for downloading
- of Index files and downloading of Packages.
+ Three item classes are provided to provide functionality for
+ downloading of Index, Translation and Packages files.
A Archive class is provided for downloading .deb files. It does Md5
checking and source location as well as a retry algorithm.
#pragma interface "apt-pkg/acquire-item.h"
#endif
-// Item to acquire
+/** \addtogroup acquire
+ * @{
+ *
+ * \file acquire-item.h
+ */
+
+/** \brief Represents the process by which a pkgAcquire object should
+ * retrieve a file or a collection of files.
+ *
+ * By convention, Item subclasses should insert themselves into the
+ * acquire queue when they are created by calling QueueURI(), and
+ * remove themselves by calling Dequeue() when either Done() or
+ * Failed() is invoked. Item objects are also responsible for
+ * notifying the download progress indicator (accessible via
+ * #Owner->Log) of their status.
+ *
+ * \see pkgAcquire
+ */
class pkgAcquire::Item
{
protected:
- // Some private helper methods for registering URIs
+ /** \brief The acquire object with which this item is associated. */
pkgAcquire *Owner;
+
+ /** \brief Insert this item into its owner's queue.
+ *
+ * \param ItemDesc Metadata about this item (its URI and
+ * description).
+ */
inline void QueueURI(ItemDesc &Item)
{Owner->Enqueue(Item);};
+
+ /** \brief Remove this item from its owner's queue. */
inline void Dequeue() {Owner->Dequeue(this);};
- // Safe rename function with timestamp preservation
+ /** \brief Rename a file without modifying its timestamp.
+ *
+ * Many item methods call this as their final action.
+ *
+ * \param From The file to be renamed.
+ *
+ * \param To The new name of #From. If #To exists it will be
+ * overwritten.
+ */
void Rename(string From,string To);
public:
- // State of the item
- enum {StatIdle, StatFetching, StatDone, StatError, StatAuthError} Status;
+ /** \brief The current status of this item. */
+ enum ItemState
+ {
+ /** \brief The item is waiting to be downloaded. */
+ StatIdle,
+
+ /** \brief The item is currently being downloaded. */
+ StatFetching,
+
+ /** \brief The item has been successfully downloaded. */
+ StatDone,
+
+ /** \brief An error was encountered while downloading this
+ * item.
+ */
+ StatError,
+
+ /** \brief The item was downloaded but its authenticity could
+ * not be verified.
+ */
+ StatAuthError
+ } Status;
+
+ /** \brief Contains a textual description of the error encountered
+ * if #Status is #StatError or #StatAuthError.
+ */
string ErrorText;
+
+ /** \brief The size of the object to fetch. */
unsigned long FileSize;
- unsigned long PartialSize;
+
+ /** \brief How much of the object was already fetched. */
+ unsigned long PartialSize;
+
+ /** \brief If not \b NULL, contains the name of a subprocess that
+ * is operating on this object (for instance, "gzip" or "gpgv").
+ */
const char *Mode;
+
+ /** \brief A client-supplied unique identifier.
+ *
+ * This field is initalized to 0; it is meant to be filled in by
+ * clients that wish to use it to uniquely identify items.
+ *
+ * \todo it's unused in apt itself
+ */
unsigned long ID;
+
+ /** \brief If \b true, the entire object has been successfully fetched.
+ *
+ * Subclasses should set this to \b true when appropriate.
+ */
bool Complete;
+
+ /** \brief If \b true, the URI of this object is "local".
+ *
+ * The only effect of this field is to exclude the object from the
+ * download progress indicator's overall statistics.
+ */
bool Local;
- // Number of queues we are inserted into
+ /** \brief The number of fetch queues into which this item has been
+ * inserted.
+ *
+ * There is one queue for each source from which an item could be
+ * downloaded.
+ *
+ * \sa pkgAcquire
+ */
unsigned int QueueCounter;
- // File to write the fetch into
+ /** \brief The name of the file into which the retrieved object
+ * will be written.
+ */
string DestFile;
- // Action members invoked by the worker
+ /** \brief Invoked by the acquire worker when the object couldn't
+ * be fetched.
+ *
+ * This is a branch of the continuation of the fetch process.
+ *
+ * \param Message An RFC822-formatted message from the acquire
+ * method describing what went wrong. Use LookupTag() to parse
+ * it.
+ *
+ * \param Cnf The method via which the worker tried to fetch this object.
+ *
+ * \sa pkgAcqMethod
+ */
virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+
+ /** \brief Invoked by the acquire worker when the object was
+ * fetched successfully.
+ *
+ * Note that the object might \e not have been written to
+ * DestFile; check for the presence of an Alt-Filename entry in
+ * Message to find the file to which it was really written.
+ *
+ * Done is often used to switch from one stage of the processing
+ * to the next (e.g. fetching, unpacking, copying). It is one
+ * branch of the continuation of the fetch process.
+ *
+ * \param Message Data from the acquire method. Use LookupTag()
+ * to parse it.
+ * \param Size The size of the object that was fetched.
+ * \param Md5Hash The MD5Sum of the object that was fetched.
+ * \param Cnf The method via which the object was fetched.
+ *
+ * \sa pkgAcqMethod
+ */
virtual void Done(string Message,unsigned long Size,string Md5Hash,
pkgAcquire::MethodConfig *Cnf);
+
+ /** \brief Invoked when the worker starts to fetch this object.
+ *
+ * \param Message RFC822-formatted data from the worker process.
+ * Use LookupTag() to parse it.
+ *
+ * \param Size The size of the object being fetched.
+ *
+ * \sa pkgAcqMethod
+ */
virtual void Start(string Message,unsigned long Size);
+
+ /** \brief Custom headers to be sent to the fetch process.
+ *
+ * \return a string containing RFC822-style headers that are to be
+ * inserted into the 600 URI Acquire message sent to the fetch
+ * subprocess. The headers are inserted after a newline-less
+ * line, so they should (if nonempty) have a leading newline and
+ * no trailing newline.
+ */
virtual string Custom600Headers() {return string();};
+
+ /** \brief A "descriptive" URI-like string.
+ *
+ * \return a URI that should be used to describe what is being fetched.
+ */
virtual string DescURI() = 0;
+ /** \brief Short item description.
+ *
+ * \return a brief description of the object being fetched.
+ */
virtual string ShortDesc() {return DescURI();}
+
+ /** \brief Invoked by the worker when the download is completely done. */
virtual void Finished() {};
- // Inquire functions
+ /** \brief MD5Sum.
+ *
+ * \return the MD5Sum of this object, if applicable; otherwise, an
+ * empty string.
+ */
virtual string MD5Sum() {return string();};
+
+ /** \return the acquire process with which this item is associated. */
pkgAcquire *GetOwner() {return Owner;};
+
+ /** \return \b true if this object is being fetched from a trusted source. */
virtual bool IsTrusted() {return false;};
-
+
+ /** \brief Initialize an item.
+ *
+ * Adds the item to the list of items known to the acquire
+ * process, but does not place it into any fetch queues (you must
+ * manually invoke QueueURI() to do so).
+ *
+ * Initializes all fields of the item other than Owner to 0,
+ * false, or the empty string.
+ *
+ * \param Owner The new owner of this item.
+ */
Item(pkgAcquire *Owner);
+
+ /** \brief Remove this item from its owner's queue by invoking
+ * pkgAcquire::Remove.
+ */
virtual ~Item();
};
-// Item class for index files
-class pkgAcqIndex : public pkgAcquire::Item
+/** \brief Information about an index patch (aka diff). */
+struct DiffInfo {
+ /** The filename of the diff. */
+ string file;
+
+ /** The sha1 hash of the diff. */
+ string sha1;
+
+ /** The size of the diff. */
+ unsigned long size;
+};
+
+/** \brief An item that is responsible for fetching an index file of
+ * package list diffs and starting the package list's download.
+ *
+ * This item downloads the Index file and parses it, then enqueues
+ * additional downloads of either the individual patches (using
+ * pkgAcqIndexDiffs) or the entire Packages file (using pkgAcqIndex).
+ *
+ * \sa pkgAcqIndexDiffs, pkgAcqIndex
+ */
+class pkgAcqDiffIndex : public pkgAcquire::Item
{
+ protected:
+ /** \brief If \b true, debugging information will be written to std::clog. */
+ bool Debug;
+
+ /** \brief The item that is currently being downloaded. */
+ pkgAcquire::ItemDesc Desc;
+
+ /** \brief The URI of the index file to recreate at our end (either
+ * by downloading it or by applying partial patches).
+ */
+ string RealURI;
+
+ /** \brief The MD5Sum that the real index file should have after
+ * all patches have been applied.
+ */
+ string ExpectedMD5;
+
+ /** \brief The index file which will be patched to generate the new
+ * file.
+ */
+ string CurrentPackagesFile;
+
+ /** \brief A description of the Packages file (stored in
+ * pkgAcquire::ItemDesc::Description).
+ */
+ string Description;
+
+ public:
+ // Specialized action members
+ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+ virtual void Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf);
+ virtual string DescURI() {return RealURI + "Index";};
+ virtual string Custom600Headers();
+
+ /** \brief Parse the Index file for a set of Packages diffs.
+ *
+ * Parses the Index file and creates additional download items as
+ * necessary.
+ *
+ * \param IndexDiffFile The name of the Index file.
+ *
+ * \return \b true if the Index file was successfully parsed, \b
+ * false otherwise.
+ */
+ bool ParseDiffIndex(string IndexDiffFile);
+
+
+ /** \brief Create a new pkgAcqDiffIndex.
+ *
+ * \param Owner The Acquire object that owns this item.
+ *
+ * \param URI The URI of the list file to download.
+ *
+ * \param URIDesc A long description of the list file to download.
+ *
+ * \param ShortDesc A short description of the list file to download.
+ *
+ * \param ExpectedMD5 The list file's MD5 signature.
+ */
+ pkgAcqDiffIndex(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesc, string ExpectedMD5);
+};
+
+/** \brief An item that is responsible for fetching all the patches
+ * that need to be applied to a given package index file.
+ *
+ * After downloading and applying a single patch, this item will
+ * enqueue a new pkgAcqIndexDiffs to download and apply the remaining
+ * patches. If no patch can be found that applies to an intermediate
+ * file or if one of the patches cannot be downloaded, falls back to
+ * downloading the entire package index file using pkgAcqIndex.
+ *
+ * \sa pkgAcqDiffIndex, pkgAcqIndex
+ */
+class pkgAcqIndexDiffs : public pkgAcquire::Item
+{
+ private:
+
+ /** \brief Queue up the next diff download.
+ *
+ * Search for the next available diff that applies to the file
+ * that currently exists on disk, and enqueue it by calling
+ * QueueURI().
+ *
+ * \return \b true if an applicable diff was found, \b false
+ * otherwise.
+ */
+ bool QueueNextDiff();
+
+ /** \brief Handle tasks that must be performed after the item
+ * finishes downloading.
+ *
+ * Dequeues the item and checks the resulting file's md5sum
+ * against ExpectedMD5 after the last patch was applied.
+ * There is no need to check the md5/sha1 after a "normal"
+ * patch because QueueNextDiff() will check the sha1 later.
+ *
+ * \param allDone If \b true, the file was entirely reconstructed,
+ * and its md5sum is verified.
+ */
+ void Finish(bool allDone=false);
+
protected:
+
+ /** \brief If \b true, debugging output will be written to
+ * std::clog.
+ */
+ bool Debug;
+
+ /** \brief A description of the item that is currently being
+ * downloaded.
+ */
+ pkgAcquire::ItemDesc Desc;
+
+ /** \brief The URI of the package index file that is being
+ * reconstructed.
+ */
+ string RealURI;
+
+ /** \brief The MD5Sum of the package index file that is being
+ * reconstructed.
+ */
+ string ExpectedMD5;
+
+ /** A description of the file being downloaded. */
+ string Description;
+
+ /** The patches that remain to be downloaded, including the patch
+ * being downloaded right now. This list should be ordered so
+ * that each diff appears before any diff that depends on it.
+ *
+ * \todo These are indexed by sha1sum; why not use some sort of
+ * dictionary instead of relying on ordering and stripping them
+ * off the front?
+ */
+ vector<DiffInfo> available_patches;
+ /** The current status of this patch. */
+ enum DiffState
+ {
+ /** \brief The diff is in an unknown state. */
+ StateFetchUnkown,
+
+ /** \brief The diff is currently being fetched. */
+ StateFetchDiff,
+
+ /** \brief The diff is currently being uncompressed. */
+ StateUnzipDiff,
+
+ /** \brief The diff is currently being applied. */
+ StateApplyDiff
+ } State;
+
+ public:
+ /** \brief Called when the patch file failed to be downloaded.
+ *
+ * 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 Done(string Message,unsigned long Size,string Md5Hash,
+ pkgAcquire::MethodConfig *Cnf);
+ virtual string DescURI() {return RealURI + "Index";};
+
+ /** \brief Create an index diff item.
+ *
+ * After filling in its basic fields, this invokes Finish(true) if
+ * #diffs is empty, or QueueNextDiff() otherwise.
+ *
+ * \param Owner The pkgAcquire object that owns this item.
+ *
+ * \param URI The URI of the package index file being
+ * reconstructed.
+ *
+ * \param URIDesc A long description of this item.
+ *
+ * \param ShortDesc A brief description of this item.
+ *
+ * \param ExpectedMD5 The expected md5sum of the completely
+ * reconstructed package index file; the index file will be tested
+ * against this value when it is entirely reconstructed.
+ *
+ * \param diffs The remaining diffs from the index of diffs. They
+ * should be ordered so that each diff appears before any diff
+ * that depends on it.
+ */
+ pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesc, string ExpectedMD5,
+ vector<DiffInfo> diffs=vector<DiffInfo>());
+};
+
+/** \brief An acquire item that is responsible for fetching an index
+ * file (e.g., Packages or Sources).
+ *
+ * \sa pkgAcqDiffIndex, pkgAcqIndexDiffs, pkgAcqIndexTrans
+ *
+ * \todo Why does pkgAcqIndex have protected members?
+ */
+class pkgAcqIndex : public pkgAcquire::Item
+{
+ protected:
+
+ /** \brief If \b true, the index file has been decompressed. */
bool Decompression;
+
+ /** \brief If \b true, the partially downloaded file will be
+ * removed when the download completes.
+ */
bool Erase;
+
+ /** \brief The download request that is currently being
+ * processed.
+ */
pkgAcquire::ItemDesc Desc;
+
+ /** \brief The object that is actually being fetched (minus any
+ * compression-related extensions).
+ */
string RealURI;
+
+ /** \brief The expected md5sum of the decompressed index file. */
string ExpectedMD5;
+
+ /** \brief The compression-related file extension that is being
+ * added to the downloaded file (e.g., ".gz" or ".bz2").
+ */
string CompressionExtension;
public:
virtual string Custom600Headers();
virtual string DescURI() {return RealURI + CompressionExtension;};
+ /** \brief Create a pkgAcqIndex.
+ *
+ * \param Owner The pkgAcquire object with which this item is
+ * associated.
+ *
+ * \param URI The URI of the index file that is to be downloaded.
+ *
+ * \param URIDesc A "URI-style" description of this index file.
+ *
+ * \param ShortDesc A brief description of this index file.
+ *
+ * \param ExpectedMD5 The expected md5sum of this index file.
+ *
+ * \param compressExt The compression-related extension with which
+ * this index file should be downloaded, or "" to autodetect
+ * (".bz2" is used if bzip2 is installed, ".gz" otherwise).
+ */
pkgAcqIndex(pkgAcquire *Owner,string URI,string URIDesc,
- string ShortDesct, string ExpectedMD5, string compressExt="");
+ string ShortDesc, string ExpectedMD5, string compressExt="");
};
+/** \brief An acquire item that is responsible for fetching a
+ * translated index file.
+ *
+ * The only difference from pkgAcqIndex is that transient failures
+ * are suppressed: no error occurs if the translated index file is
+ * missing.
+ */
+class pkgAcqIndexTrans : public pkgAcqIndex
+{
+ public:
+
+ virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
+
+ /** \brief Create a pkgAcqIndexTrans.
+ *
+ * \param Owner The pkgAcquire object with which this item is
+ * associated.
+ *
+ * \param URI The URI of the index file that is to be downloaded.
+ *
+ * \param URIDesc A "URI-style" description of this index file.
+ *
+ * \param ShortDesc A brief description of this index file.
+ *
+ * \param ExpectedMD5 The expected md5sum of this index file.
+ *
+ * \param compressExt The compression-related extension with which
+ * this index file should be downloaded, or "" to autodetect
+ * (".bz2" is used if bzip2 is installed, ".gz" otherwise).
+ */
+ pkgAcqIndexTrans(pkgAcquire *Owner,string URI,string URIDesc,
+ string ShortDesc);
+};
+
+/** \brief Information about an index file. */
struct IndexTarget
{
+ /** \brief A URI from which the index file can be downloaded. */
string URI;
+
+ /** \brief A description of the index file. */
string Description;
+
+ /** \brief A shorter description of the index file. */
string ShortDesc;
+
+ /** \brief The key by which this index file should be
+ * looked up within the meta signature file.
+ */
string MetaKey;
};
-// Item class for index signatures
+/** \brief An acquire item that downloads the detached signature
+ * of a meta-index (Release) file, then queues up the release
+ * file itself.
+ *
+ * \todo Why protected members?
+ *
+ * \sa pkgAcqMetaIndex
+ */
class pkgAcqMetaSig : public pkgAcquire::Item
{
protected:
-
+ /** \brief The fetch request that is currently being processed. */
pkgAcquire::ItemDesc Desc;
- string RealURI,MetaIndexURI,MetaIndexURIDesc,MetaIndexShortDesc;
+
+ /** \brief The URI of the signature file. Unlike Desc.URI, this is
+ * never modified; it is used to determine the file that is being
+ * downloaded.
+ */
+ string RealURI;
+
+ /** \brief The URI of the meta-index file to be fetched after the signature. */
+ string MetaIndexURI;
+
+ /** \brief A "URI-style" description of the meta-index file to be
+ * fetched after the signature.
+ */
+ string MetaIndexURIDesc;
+
+ /** \brief A brief description of the meta-index file to be fetched
+ * after the signature.
+ */
+ string MetaIndexShortDesc;
+
+ /** \brief A package-system-specific parser for the meta-index file. */
indexRecords* MetaIndexParser;
+
+ /** \brief The index files which should be looked up in the meta-index
+ * and then downloaded.
+ *
+ * \todo Why a list of pointers instead of a list of structs?
+ */
const vector<struct IndexTarget*>* IndexTargets;
public:
virtual string Custom600Headers();
virtual 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,
indexRecords* MetaIndexParser);
};
-// Item class for index signatures
+/** \brief An item that is responsible for downloading the meta-index
+ * file (i.e., Release) itself and verifying its signature.
+ *
+ * Once the download and verification are complete, the downloads of
+ * the individual index files are queued up using pkgAcqDiffIndex.
+ * If the meta-index file had a valid signature, the expected md5sums
+ * of the index files will be the md5sums listed in the meta-index;
+ * otherwise, the expected md5sums will be "" (causing the
+ * authentication of the index files to be bypassed).
+ */
class pkgAcqMetaIndex : public pkgAcquire::Item
{
protected:
-
+ /** \brief The fetch command that is currently being processed. */
pkgAcquire::ItemDesc Desc;
- string RealURI; // FIXME: is this redundant w/ Desc.URI?
+
+ /** \brief The URI that is actually being downloaded; never
+ * modified by pkgAcqMetaIndex.
+ */
+ 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;
+
+ /** \brief The index files to download. */
const vector<struct IndexTarget*>* IndexTargets;
+
+ /** \brief The parser for the meta-index file. */
indexRecords* MetaIndexParser;
+
+ /** \brief If \b true, the index's signature is currently being verified.
+ */
bool AuthPass;
// required to deal gracefully with problems caused by incorrect ims hits
bool IMSHit;
+ /** \brief Check that the release file is a release file for the
+ * correct distribution.
+ *
+ * \return \b true if no fatal errors were encountered.
+ */
bool VerifyVendor(string Message);
+
+ /** \brief Called when a file is finished being retrieved.
+ *
+ * If the file was not downloaded to DestFile, a copy process is
+ * set up to copy it to DestFile; otherwise, Complete is set to \b
+ * true and the file is moved to its final location.
+ *
+ * \param Message The message block received from the fetch
+ * subprocess.
+ */
void RetrievalDone(string Message);
+
+ /** \brief Called when authentication succeeded.
+ *
+ * Sanity-checks the authenticated file, queues up the individual
+ * index files for download, and saves the signature in the lists
+ * directory next to the authenticated list file.
+ *
+ * \param Message The message block received from the fetch
+ * subprocess.
+ */
void AuthDone(string Message);
+
+ /** \brief Starts downloading the individual index files.
+ *
+ * \param verify If \b true, only indices whose expected md5sum
+ * can be determined from the meta-index will be downloaded, and
+ * the md5sums of indices will be checked (reporting
+ * #StatAuthError if there is a mismatch). If verify is \b false,
+ * no md5sum checking will be performed.
+ */
void QueueIndexes(bool verify);
public:
virtual string Custom600Headers();
virtual string DescURI() {return RealURI; };
+ /** \brief Create a new pkgAcqMetaIndex. */
pkgAcqMetaIndex(pkgAcquire *Owner,
string URI,string URIDesc, string ShortDesc,
string SigFile,
indexRecords* MetaIndexParser);
};
-// Item class for archive files
+/** \brief An item that is responsible for fetching a package file.
+ *
+ * If the package file already exists in the cache, nothing will be
+ * done.
+ */
class pkgAcqArchive : public pkgAcquire::Item
{
protected:
-
- // State information for the retry mechanism
+ /** \brief The package version being fetched. */
pkgCache::VerIterator Version;
+
+ /** \brief The fetch command that is currently being processed. */
pkgAcquire::ItemDesc Desc;
+
+ /** \brief The list of sources from which to pick archives to
+ * download this package from.
+ */
pkgSourceList *Sources;
+
+ /** \brief A package records object, used to look up the file
+ * corresponding to each version of the package.
+ */
pkgRecords *Recs;
+
+ /** \brief The md5sum of this package. */
string MD5;
+
+ /** \brief A location in which the actual filename of the package
+ * should be stored.
+ */
string &StoreFilename;
+
+ /** \brief The next file for this version to try to download. */
pkgCache::VerFileIterator Vf;
+
+ /** \brief How many (more) times to try to find a new source from
+ * which to download this package version if it fails.
+ *
+ * Set from Acquire::Retries.
+ */
unsigned int Retries;
+
+ /** \brief \b true if this version file is being downloaded from a
+ * trusted source.
+ */
bool Trusted;
- // Queue the next available file for download.
+ /** \brief Queue up the next available file for this version. */
bool QueueNext();
public:
- // Specialized action members
virtual void Failed(string Message,pkgAcquire::MethodConfig *Cnf);
virtual void Done(string Message,unsigned long Size,string Md5Hash,
pkgAcquire::MethodConfig *Cnf);
virtual string DescURI() {return Desc.URI;};
virtual string ShortDesc() {return Desc.ShortDesc;};
virtual void Finished();
+
virtual bool IsTrusted();
+ /** \brief Create a new pkgAcqArchive.
+ *
+ * \param Owner The pkgAcquire object with which this item is
+ * associated.
+ *
+ * \param Sources The sources from which to download version
+ * files.
+ *
+ * \param Recs A package records object, used to look up the file
+ * corresponding to each version of the package.
+ *
+ * \param Version The package version to download.
+ *
+ * \param StoreFilename A location in which the actual filename of
+ * the package should be stored. It will be set to a guessed
+ * basename in the constructor, and filled in with a fully
+ * qualified filename once the download finishes.
+ */
pkgAcqArchive(pkgAcquire *Owner,pkgSourceList *Sources,
pkgRecords *Recs,pkgCache::VerIterator const &Version,
string &StoreFilename);
};
-// Fetch a generic file to the current directory
+/** \brief Retrieve an arbitrary file to the current directory.
+ *
+ * The file is retrieved even if it is accessed via a URL type that
+ * normally is a NOP, such as "file". If the download fails, the
+ * partial file is renamed to get a ".FAILED" extension.
+ */
class pkgAcqFile : public pkgAcquire::Item
{
+ /** \brief The currently active download process. */
pkgAcquire::ItemDesc Desc;
+
+ /** \brief The md5sum of the file to download, if it is known. */
string Md5Hash;
+
+ /** \brief How many times to retry the download, set from
+ * Acquire::Retries.
+ */
unsigned int Retries;
public:
virtual string MD5Sum() {return Md5Hash;};
virtual string DescURI() {return Desc.URI;};
- // If DestFilename is empty, download to DestDir/<basename> if
- // DestDir is non-empty, $CWD/<basename> otherwise. If
- // DestFilename is NOT empty, DestDir is ignored and DestFilename
- // is the absolute name to which the file should be downloaded.
+ /** \brief Create a new pkgAcqFile object.
+ *
+ * \param Owner The pkgAcquire object with which this object is
+ * associated.
+ *
+ * \param URI The URI to download.
+ *
+ * \param MD5 The md5sum of the file to download, if it is known;
+ * otherwise "".
+ *
+ * \param Size The size of the file to download, if it is known;
+ * otherwise 0.
+ *
+ * \param Desc A description of the file being downloaded.
+ *
+ * \param ShortDesc A brief description of the file being
+ * downloaded.
+ *
+ * \param DestDir The directory the file should be downloaded into.
+ *
+ * \param DestFilename The filename+path the file is downloaded to.
+ *
+ *
+ * If DestFilename is empty, download to DestDir/<basename> if
+ * DestDir is non-empty, $CWD/<basename> otherwise. If
+ * DestFilename is NOT empty, DestDir is ignored and DestFilename
+ * is the absolute name to which the file should be downloaded.
+ */
+
pkgAcqFile(pkgAcquire *Owner, string URI, string MD5, unsigned long Size,
string Desc, string ShortDesc,
const string &DestDir="", const string &DestFilename="");
};
+/** @} */
+
#endif
##################################################################### */
/*}}}*/
+
+/** \addtogroup acquire
+ * @{
+ *
+ * \file acquire-method.h
+ */
+
#ifndef PKGLIB_ACQUIRE_METHOD_H
#define PKGLIB_ACQUIRE_METHOD_H
virtual ~pkgAcqMethod() {};
};
+/** @} */
+
#endif
##################################################################### */
/*}}}*/
+
+/** \addtogroup acquire
+ * @{
+ *
+ * \file acquire-worker.h
+ */
+
#ifndef PKGLIB_ACQUIRE_WORKER_H
#define PKGLIB_ACQUIRE_WORKER_H
#pragma interface "apt-pkg/acquire-worker.h"
#endif
-// Interfacing to the method process
+/** \brief A fetch subprocess.
+ *
+ * A worker process is responsible for one stage of the fetch. This
+ * class encapsulates the communications protocol between the master
+ * process and the worker, from the master end.
+ *
+ * Each worker is intrinsically placed on two linked lists. The
+ * Queue list (maintained in the #NextQueue variable) is maintained
+ * by the pkgAcquire::Queue class; it represents the set of workers
+ * assigned to a particular queue. The Acquire list (maintained in
+ * the #NextAcquire variable) is maintained by the pkgAcquire class;
+ * it represents the set of active workers for a particular
+ * pkgAcquire object.
+ *
+ * \todo Like everything else in the Acquire system, this has way too
+ * many protected items.
+ *
+ * \sa pkgAcqMethod, pkgAcquire::Item, pkgAcquire
+ */
class pkgAcquire::Worker
{
friend class pkgAcquire;
protected:
friend class Queue;
- /* Linked list starting at a Queue and a linked list starting
- at Acquire */
+ /** \brief The next link on the Queue list.
+ *
+ * \todo This is always NULL; is it just for future use?
+ */
Worker *NextQueue;
+
+ /** \brief The next link on the Acquire list. */
Worker *NextAcquire;
- // The access association
+ /** \brief The Queue with which this worker is associated. */
Queue *OwnerQ;
+
+ /** \brief The download progress indicator to which progress
+ * messages should be sent.
+ */
pkgAcquireStatus *Log;
+
+ /** \brief The configuration of this method. On startup, the
+ * target of this pointer is filled in with basic data about the
+ * method, as reported by the worker.
+ */
MethodConfig *Config;
+
+ /** \brief The access method to be used by this worker.
+ *
+ * \todo Doesn't this duplicate Config->Access?
+ */
string Access;
- // This is the subprocess IPC setup
+ /** \brief The PID of the subprocess. */
pid_t Process;
+
+ /** \brief A file descriptor connected to the standard output of
+ * the subprocess.
+ *
+ * Used to read messages and data from the subprocess.
+ */
int InFd;
+
+ /** \brief A file descriptor connected to the standard input of the
+ * subprocess.
+ *
+ * Used to send commands and configuration data to the subprocess.
+ */
int OutFd;
+
+ /** \brief Set to \b true if the worker is in a state in which it
+ * might generate data or command responses.
+ *
+ * \todo Is this right? It's a guess.
+ */
bool InReady;
+
+ /** \brief Set to \b true if the worker is in a state in which it
+ * is legal to send commands to it.
+ *
+ * \todo Is this right?
+ */
bool OutReady;
- // Various internal things
+ /** If \b true, debugging output will be sent to std::clog. */
bool Debug;
+
+ /** \brief The raw text values of messages received from the
+ * worker, in sequence.
+ */
vector<string> MessageQueue;
+
+ /** \brief Buffers pending writes to the subprocess.
+ *
+ * \todo Wouldn't a std::dequeue be more appropriate?
+ */
string OutQueue;
- // Private constructor helper
+ /** \brief Common code for the constructor.
+ *
+ * Initializes NextQueue and NextAcquire to NULL; Process, InFd,
+ * and OutFd to -1, OutReady and InReady to \b false, and Debug
+ * from _config.
+ */
void Construct();
- // Message handling things
+ /** \brief Retrieve any available messages from the subprocess.
+ *
+ * The messages are retrieved as in ::ReadMessages(), and
+ * MessageFailure() is invoked if an error occurs; in particular,
+ * if the pipe to the subprocess dies unexpectedly while a message
+ * is being read.
+ *
+ * \return \b true if the messages were successfully read, \b
+ * false otherwise.
+ */
bool ReadMessages();
+
+ /** \brief Parse and dispatch pending messages.
+ *
+ * This dispatches the message in a manner appropriate for its
+ * type.
+ *
+ * \todo Several message types lack separate handlers.
+ *
+ * \sa Capabilities(), SendConfiguration(), MediaChange()
+ */
bool RunMessages();
+
+ /** \brief Read and dispatch any pending messages from the
+ * subprocess.
+ *
+ * \return \b false if the subprocess died unexpectedly while a
+ * message was being transmitted.
+ */
bool InFdReady();
+
+ /** \brief Send any pending commands to the subprocess.
+ *
+ * This method will fail if there is no pending output.
+ *
+ * \return \b true if all commands were succeeded, \b false if an
+ * error occurred (in which case MethodFailure() will be invoked).
+ */
bool OutFdReady();
- // The message handlers
+ /** \brief Handle a 100 Capabilities response from the subprocess.
+ *
+ * \param Message the raw text of the message from the subprocess.
+ *
+ * The message will be parsed and its contents used to fill
+ * #Config. If #Config is NULL, this routine is a NOP.
+ *
+ * \return \b true.
+ */
bool Capabilities(string Message);
+
+ /** \brief Send a 601 Configuration message (containing the APT
+ * configuration) to the subprocess.
+ *
+ * The APT configuration will be send to the subprocess in a
+ * message of the following form:
+ *
+ * <pre>
+ * 601 Configuration
+ * Config-Item: Fully-Qualified-Item=Val
+ * Config-Item: Fully-Qualified-Item=Val
+ * ...
+ * </pre>
+ *
+ * \return \b true if the command was successfully sent, \b false
+ * otherwise.
+ */
bool SendConfiguration();
+
+ /** \brief Handle a 403 Media Change message.
+ *
+ * \param Message the raw text of the message; the Media field
+ * indicates what type of media should be changed, and the Drive
+ * field indicates where the media is located.
+ *
+ * Invokes pkgAcquireStatus::MediaChange(Media, Drive) to ask the
+ * user to swap disks; informs the subprocess of the result (via
+ * 603 Media Changed, with the Failed field set to \b true if the
+ * user cancelled the media change).
+ */
bool MediaChange(string Message);
+ /** \brief Invoked when the worked process dies unexpectedly.
+ *
+ * Waits for the subprocess to terminate and generates an error if
+ * it terminated abnormally, then closes and blanks out all file
+ * descriptors. Discards all pending messages from the
+ * subprocess.
+ *
+ * \return \b false.
+ */
bool MethodFailure();
+
+ /** \brief Invoked when a fetch job is completed, either
+ * successfully or unsuccessfully.
+ *
+ * Resets the status information for the worker process.
+ */
void ItemDone();
public:
- // The curent method state
+ /** \brief The queue entry that is currently being downloaded. */
pkgAcquire::Queue::QItem *CurrentItem;
+
+ /** \brief The most recent status string received from the
+ * subprocess.
+ */
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;
+
+ /** \brief The total number of bytes to be downloaded. Zero if the
+ * total size of the final is unknown.
+ */
unsigned long TotalSize;
+
+ /** \brief How much of the file was already downloaded prior to
+ * starting this worker.
+ */
unsigned long ResumePoint;
- // Load the method and do the startup
+ /** \brief Tell the subprocess to download the given item.
+ *
+ * \param Item the item to queue up.
+ * \return \b true if the item was successfully enqueued.
+ *
+ * Queues up a 600 URI Acquire message for the given item to be
+ * sent at the next possible moment. Does \e not flush the output
+ * queue.
+ */
bool QueueItem(pkgAcquire::Queue::QItem *Item);
+
+ /** \brief Start up the worker and fill in #Config.
+ *
+ * Reads the first message from the worker, which is assumed to be
+ * a 100 Capabilities message.
+ *
+ * \return \b true if all operations completed successfully.
+ */
bool Start();
+
+ /** \brief Update the worker statistics (CurrentSize, TotalSize,
+ * etc).
+ */
void Pulse();
+
+ /** \return The fetch method configuration. */
inline const MethodConfig *GetConf() const {return Config;};
-
+
+ /** \brief Create a new Worker to download files.
+ *
+ * \param OwnerQ The queue into which this worker should be
+ * placed.
+ *
+ * \param Config A location in which to store information about
+ * the fetch method.
+ *
+ * \param Log The download progress indicator that should be used
+ * to report the progress of this worker.
+ */
Worker(Queue *OwnerQ,MethodConfig *Config,pkgAcquireStatus *Log);
+
+ /** \brief Create a new Worker that should just retrieve
+ * information about the fetch method.
+ *
+ * Nothing in particular forces you to refrain from actually
+ * downloading stuff, but the various status callbacks won't be
+ * invoked.
+ *
+ * \param Config A location in which to store information about
+ * the fetch method.
+ */
Worker(MethodConfig *Config);
+
+ /** \brief Clean up this worker.
+ *
+ * Closes the file descriptors; if MethodConfig::NeedsCleanup is
+ * \b false, also rudely interrupts the worker with a SIGINT.
+ */
~Worker();
};
+/** @} */
+
#endif
##################################################################### */
/*}}}*/
+
+/** \defgroup acquire Acquire system
+ *
+ * \brief The Acquire system is responsible for retrieving files from
+ * local or remote URIs and postprocessing them (for instance,
+ * verifying their authenticity). The core class in this system is
+ * pkgAcquire, which is responsible for managing the download queues
+ * during the download. There is at least one download queue for
+ * each supported protocol; protocols such as http may provide one
+ * queue per host.
+ *
+ * Each file to download is represented by a subclass of
+ * pkgAcquire::Item. The files add themselves to the download
+ * queue(s) by providing their URI information to
+ * pkgAcquire::Item::QueueURI, which calls pkgAcquire::Enqueue.
+ *
+ * Once the system is set up, the Run method will spawn subprocesses
+ * to handle the enqueued URIs; the scheduler will then take items
+ * from the queues and feed them into the handlers until the queues
+ * are empty.
+ *
+ * \todo Acquire supports inserting an object into several queues at
+ * once, but it is not clear what its behavior in this case is, and
+ * no subclass of pkgAcquire::Item seems to actually use this
+ * capability.
+ */
+
+/** \addtogroup acquire
+ *
+ * @{
+ *
+ * \file acquire.h
+ */
+
#ifndef PKGLIB_ACQUIRE_H
#define PKGLIB_ACQUIRE_H
#include <unistd.h>
class pkgAcquireStatus;
+
+/** \brief The core download scheduler.
+ *
+ * This class represents an ongoing download. It manages the lists
+ * of active and pending downloads and handles setting up and tearing
+ * down download-related structures.
+ *
+ * \todo Why all the protected data items and methods?
+ */
class pkgAcquire
{
public:
typedef vector<Item *>::iterator ItemIterator;
typedef vector<Item *>::const_iterator ItemCIterator;
-
+
protected:
- // List of items to fetch
+ /** \brief A list of items to download.
+ *
+ * This is built monotonically as items are created and only
+ * emptied when the download shuts down.
+ */
vector<Item *> Items;
- // List of active queues and fetched method configuration parameters
+ /** \brief The head of the list of active queues.
+ *
+ * \todo why a hand-managed list of queues instead of std::list or
+ * std::set?
+ */
Queue *Queues;
+
+ /** \brief The head of the list of active workers.
+ *
+ * \todo why a hand-managed list of workers instead of std::list
+ * or std::set?
+ */
Worker *Workers;
+
+ /** \brief The head of the list of acquire method configurations.
+ *
+ * Each protocol (http, ftp, gzip, etc) via which files can be
+ * fetched can have a representation in this list. The
+ * configuration data is filled in by parsing the 100 Capabilities
+ * string output by a method on startup (see
+ * pkgAcqMethod::pkgAcqMethod and pkgAcquire::GetConfig).
+ *
+ * \todo why a hand-managed config dictionary instead of std::map?
+ */
MethodConfig *Configs;
+
+ /** \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.
+ */
unsigned long ToFetch;
- // Configurable parameters for the schedular
- enum {QueueHost,QueueAccess} QueueMode;
+ // Configurable parameters for the scheduler
+
+ /** \brief Represents the queuing strategy for remote URIs. */
+ enum QueueStrategy {
+ /** \brief Generate one queue for each protocol/host combination; downloads from
+ * multiple hosts can proceed in parallel.
+ */
+ QueueHost,
+ /** \brief Generate a single queue for each protocol; serialize
+ * downloads from multiple hosts.
+ */
+ QueueAccess} QueueMode;
+
+ /** \brief If \b true, debugging information will be dumped to std::clog. */
bool Debug;
+ /** \brief If \b true, a download is currently in progress. */
bool Running;
-
+
+ /** \brief Add the given item to the list of items. */
void Add(Item *Item);
+
+ /** \brief Remove the given item from the list of items. */
void Remove(Item *Item);
+
+ /** \brief Add the given worker to the list of workers. */
void Add(Worker *Work);
+
+ /** \brief Remove the given worker from the list of workers. */
void Remove(Worker *Work);
+ /** \brief Insert the given fetch request into the appropriate queue.
+ *
+ * \param Item The URI to download and the item to download it
+ * for. Copied by value into the queue; no reference to Item is
+ * retained.
+ */
void Enqueue(ItemDesc &Item);
+
+ /** \brief Remove all fetch requests for this item from all queues. */
void Dequeue(Item *Item);
+
+ /** \brief Determine the fetch method and queue of a URI.
+ *
+ * \param URI The URI to fetch.
+ *
+ * \param[out] Config A location in which to place the method via
+ * which the URI is to be fetched.
+ *
+ * \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);
- // FDSET managers for derived classes
+ /** \brief Build up the set of file descriptors upon which select() should
+ * block.
+ *
+ * The default implementation inserts the file descriptors
+ * corresponding to active downloads.
+ *
+ * \param[out] Fd The largest file descriptor in the generated sets.
+ *
+ * \param[out] RSet The set of file descriptors that should be
+ * watched for input.
+ *
+ * \param[out] WSet The set of file descriptors that should be
+ * watched for output.
+ */
virtual void SetFds(int &Fd,fd_set *RSet,fd_set *WSet);
+
+ /** Handle input from and output to file descriptors which select()
+ * has determined are ready. The default implementation
+ * dispatches to all active downloads.
+ *
+ * \param RSet The set of file descriptors that are ready for
+ * input.
+ *
+ * \param WSet The set of file descriptors that are ready for
+ * output.
+ */
virtual void RunFds(fd_set *RSet,fd_set *WSet);
- // A queue calls this when it dequeues an item
+ /** \brief Check for idle queues with ready-to-fetch items.
+ *
+ * Called by pkgAcquire::Queue::Done each time an item is dequeued
+ * but remains on some queues; i.e., another queue should start
+ * fetching it.
+ */
void Bump();
public:
+ /** \brief Retrieve information about a fetch method by name.
+ *
+ * \param Access The name of the method to look up.
+ *
+ * \return the method whose name is Access, or \b NULL if no such method exists.
+ */
MethodConfig *GetConfig(string Access);
- enum RunResult {Continue,Failed,Cancelled};
+ /** \brief Provides information on how a download terminated. */
+ enum RunResult {
+ /** \brief All files were fetched successfully. */
+ Continue,
+
+ /** \brief Some files failed to download. */
+ Failed,
+
+ /** \brief The download was cancelled by the user (i.e., #Log's
+ * pkgAcquireStatus::Pulse() method returned \b false).
+ */
+ Cancelled};
- RunResult Run(int PulseIntervall=500000);
+ /** \brief Download all the items that have been Add()ed to this
+ * download process.
+ *
+ * This method will block until the download completes, invoking
+ * methods on #Log to report on the progress of the download.
+ *
+ * \param PulseInterval The method pkgAcquireStatus::Pulse will be
+ * invoked on #Log at intervals of PulseInterval milliseconds.
+ *
+ * \return the result of the download.
+ */
+ RunResult Run(int PulseInterval=500000);
+
+ /** \brief Remove all items from this download process, terminate
+ * all download workers, and empty all queues.
+ */
void Shutdown();
- // Simple iteration mechanism
+ /** \brief Get the first #Worker object.
+ *
+ * \return the first active worker in this download process.
+ */
inline Worker *WorkersBegin() {return Workers;};
+
+ /** \brief Advance to the next #Worker object.
+ *
+ * \return the worker immediately following I, or \b NULL if none
+ * exists.
+ */
Worker *WorkerStep(Worker *I);
+
+ /** \brief Get the head of the list of items. */
inline ItemIterator ItemsBegin() {return Items.begin();};
+
+ /** \brief Get the end iterator of the list of items. */
inline ItemIterator ItemsEnd() {return Items.end();};
// Iterate over queued Item URIs
class UriIterator;
+ /** \brief Get the head of the list of enqueued item URIs.
+ *
+ * This iterator will step over every element of every active
+ * queue.
+ */
UriIterator UriBegin();
+ /** \brief Get the end iterator of the list of enqueued item URIs. */
UriIterator UriEnd();
- // Cleans out the download dir
+ /** Deletes each entry in the given directory that is not being
+ * downloaded by this object. For instance, when downloading new
+ * list files, calling Clean() will delete the old ones.
+ *
+ * \param Dir The directory to be cleaned out.
+ *
+ * \return \b true if the directory exists and is readable.
+ */
bool Clean(string Dir);
- // Returns the size of the total download set
+ /** \return the total size in bytes of all the items included in
+ * this download.
+ */
double TotalNeeded();
+
+ /** \return the size in bytes of all non-local items included in
+ * this download.
+ */
double FetchNeeded();
+
+ /** \return the amount of data to be fetched that is already
+ * present on the filesystem.
+ */
double PartialPresent();
+ /** \brief Construct a new pkgAcquire.
+ *
+ * \param Log The progress indicator associated with this
+ * download, or \b NULL for none. This object is not owned by the
+ * download process and will not be deleted when the pkgAcquire
+ * object is destroyed. Naturally, it should live for at least as
+ * long as the pkgAcquire object does.
+ */
pkgAcquire(pkgAcquireStatus *Log = 0);
+
+ /** \brief Destroy this pkgAcquire object.
+ *
+ * Destroys all queue, method, and item objects associated with
+ * this download.
+ */
virtual ~pkgAcquire();
};
-// Description of an Item+URI
+/** \brief Represents a single download source from which an item
+ * should be downloaded.
+ *
+ * An item may have several assocated ItemDescs over its lifetime.
+ */
struct pkgAcquire::ItemDesc
{
+ /** \brief The URI from which to download this item. */
string URI;
+ /** brief A description of this item. */
string Description;
+ /** brief A shorter description of this item. */
string ShortDesc;
+ /** brief The underlying item which is to be downloaded. */
Item *Owner;
};
-// List of possible items queued for download.
+/** \brief A single download queue in a pkgAcquire object.
+ *
+ * \todo Why so many protected values?
+ */
class pkgAcquire::Queue
{
friend class pkgAcquire;
friend class pkgAcquire::UriIterator;
friend class pkgAcquire::Worker;
+
+ /** \brief The next queue in the pkgAcquire object's list of queues. */
Queue *Next;
protected:
- // Queued item
+ /** \brief A single item placed in this queue. */
struct QItem : pkgAcquire::ItemDesc
{
- QItem *Next;
+ /** \brief The next item in the queue. */
+ QItem *Next;
+ /** \brief The worker associated with this item, if any. */
pkgAcquire::Worker *Worker;
-
+
+ /** \brief Assign the ItemDesc portion of this QItem from
+ * another ItemDesc
+ */
void operator =(pkgAcquire::ItemDesc const &I)
{
URI = I.URI;
};
};
- // Name of the queue
+ /** \brief The name of this queue. */
string Name;
- // Items queued into this queue
+ /** \brief The head of the list of items contained in this queue.
+ *
+ * \todo why a by-hand list instead of an STL structure?
+ */
QItem *Items;
+
+ /** \brief The head of the list of workers associated with this queue.
+ *
+ * \todo This is plural because support exists in Queue for
+ * multiple workers. However, it does not appear that there is
+ * any way to actually associate more than one worker with a
+ * queue.
+ *
+ * \todo Why not just use a std::set?
+ */
pkgAcquire::Worker *Workers;
+
+ /** \brief the download scheduler with which this queue is associated. */
pkgAcquire *Owner;
+
+ /** \brief The number of entries in this queue that are currently
+ * being downloaded.
+ */
signed long PipeDepth;
+
+ /** \brief The maximum number of entries that this queue will
+ * attempt to download at once.
+ */
unsigned long MaxPipeDepth;
public:
- // Put an item into this queue
+ /** \brief Insert the given fetch request into this queue. */
void Enqueue(ItemDesc &Item);
+
+ /** \brief Remove all fetch requests for the given item from this queue.
+ *
+ * \return \b true if at least one request was removed from the queue.
+ */
bool Dequeue(Item *Owner);
- // Find a Queued item
+ /** \brief Locate an item in this queue.
+ *
+ * \param URI A URI to match against.
+ * \param Owner A pkgAcquire::Worker to match against.
+ *
+ * \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);
+
+ /** Presumably this should start downloading an item?
+ *
+ * \todo Unimplemented. Implement it or remove?
+ */
bool ItemStart(QItem *Itm,unsigned long Size);
+
+ /** \brief Remove the given item from this queue and set its state
+ * to pkgAcquire::Item::StatDone.
+ *
+ * If this is the only queue containing the item, the item is also
+ * removed from the main queue by calling pkgAcquire::Dequeue.
+ *
+ * \param Itm The item to remove.
+ *
+ * \return \b true if no errors are encountered.
+ */
bool ItemDone(QItem *Itm);
+ /** \brief Start the worker process associated with this queue.
+ *
+ * If a worker process is already associated with this queue,
+ * this is equivalent to calling Cycle().
+ *
+ * \return \b true if the startup was successful.
+ */
bool Startup();
+
+ /** \brief Shut down the worker process associated with this queue.
+ *
+ * \param Final If \b true, then the process is stopped unconditionally.
+ * Otherwise, it is only stopped if it does not need cleanup
+ * as indicated by the pkgAcqMethod::NeedsCleanup member of
+ * its configuration.
+ *
+ * \return \b true.
+ */
bool Shutdown(bool Final);
+
+ /** \brief Send idle items to the worker process.
+ *
+ * Fills up the pipeline by inserting idle items into the worker's queue.
+ */
bool Cycle();
+
+ /** \brief Check for items that could be enqueued.
+ *
+ * Call this after an item placed in multiple queues has gone from
+ * the pkgAcquire::Item::StatFetching state to the
+ * pkgAcquire::Item::StatIdle state, to possibly refill an empty queue.
+ * This is an alias for Cycle().
+ *
+ * \todo Why both this and Cycle()? Are they expected to be
+ * different someday?
+ */
void Bump();
+ /** \brief Create a new Queue.
+ *
+ * \param Name The name of the new queue.
+ * \param Owner The download process that owns the new queue.
+ */
Queue(string Name,pkgAcquire *Owner);
+
+ /** Shut down all the worker processes associated with this queue
+ * and empty the queue.
+ */
~Queue();
};
+/** \brief Iterates over all the URIs being fetched by a pkgAcquire object. */
class pkgAcquire::UriIterator
{
+ /** The next queue to iterate over. */
pkgAcquire::Queue *CurQ;
+ /** The item that we currently point at. */
pkgAcquire::Queue::QItem *CurItem;
public:
- // Advance to the next item
inline void operator ++() {operator ++();};
+
void operator ++(int)
{
CurItem = CurItem->Next;
}
};
- // Accessors
inline pkgAcquire::ItemDesc const *operator ->() const {return CurItem;};
inline bool operator !=(UriIterator const &rhs) const {return rhs.CurQ != CurQ || rhs.CurItem != CurItem;};
inline bool operator ==(UriIterator const &rhs) const {return rhs.CurQ == CurQ && rhs.CurItem == CurItem;};
+ /** \brief Create a new UriIterator.
+ *
+ * \param Q The queue over which this UriIterator should iterate.
+ */
UriIterator(pkgAcquire::Queue *Q) : CurQ(Q), CurItem(0)
{
while (CurItem == 0 && CurQ != 0)
}
};
-// Configuration information from each method
+/** \brief Information about the properties of a single acquire method. */
struct pkgAcquire::MethodConfig
{
+ /** \brief The next link on the acquire method list.
+ *
+ * \todo Why not an STL container?
+ */
MethodConfig *Next;
+ /** \brief The name of this acquire method (e.g., http). */
string Access;
+ /** \brief The implementation version of this acquire method. */
string Version;
+
+ /** \brief If \b true, only one download queue should be created for this
+ * method.
+ */
bool SingleInstance;
+
+ /** \brief If \b true, this method supports pipelined downloading. */
bool Pipeline;
+
+ /** \brief If \b true, the worker process should send the entire
+ * APT configuration tree to the fetch subprocess when it starts
+ * up.
+ */
bool SendConfig;
+
+ /** \brief If \b true, this fetch method does not require network access;
+ * all files are to be acquired from the local disk.
+ */
bool LocalOnly;
+
+ /** \brief If \b true, the subprocess has to carry out some cleanup
+ * actions before shutting down.
+ *
+ * For instance, the cdrom method needs to unmount the CD after it
+ * finishes.
+ */
bool NeedsCleanup;
+
+ /** \brief If \b true, this fetch method acquires files from removable media. */
bool Removable;
+ /** \brief Set up the default method parameters.
+ *
+ * All fields are initialized to NULL, "", or \b false as
+ * appropriate.
+ */
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
{
protected:
+ /** \brief The last time at which this monitor object was updated. */
struct timeval Time;
+
+ /** \brief The time at which the download started. */
struct timeval StartTime;
+
+ /** \brief The number of bytes fetched as of the previous call to
+ * pkgAcquireStatus::Pulse, including local items.
+ */
double LastBytes;
+
+ /** \brief The current rate of download as of the most recent call
+ * to pkgAcquireStatus::Pulse, in bytes per second.
+ */
double CurrentCPS;
+
+ /** \brief The number of bytes fetched as of the most recent call
+ * to pkgAcquireStatus::Pulse, including local items.
+ */
double 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;
+
+ /** \brief The total number of bytes accounted for by items that
+ * were successfully fetched.
+ */
double FetchedBytes;
+
+ /** \brief The amount of time that has elapsed since the download
+ * started.
+ */
unsigned long ElapsedTime;
+
+ /** \brief The total number of items that need to be fetched.
+ *
+ * \warning This member is inaccurate, as new items might be
+ * enqueued while the download is in progress!
+ */
unsigned long TotalItems;
+
+ /** \brief The number of items that have been successfully downloaded. */
unsigned long CurrentItems;
public:
+ /** \brief If \b true, the download scheduler should call Pulse()
+ * at the next available opportunity.
+ */
bool Update;
+
+ /** \brief If \b true, extra Pulse() invocations will be performed.
+ *
+ * With this option set, Pulse() will be called every time that a
+ * download item starts downloading, finishes downloading, or
+ * terminates with an error.
+ */
bool MorePulses;
- // Called by items when they have finished a real download
+ /** \brief Invoked when a local or remote file has been completely fetched.
+ *
+ * \param Size The size of the file fetched.
+ *
+ * \param ResumePoint How much of the file was already fetched.
+ */
virtual void Fetched(unsigned long Size,unsigned long ResumePoint);
- // Called to change media
+ /** \brief Invoked when the user should be prompted to change the
+ * inserted removable media.
+ *
+ * This method should not return until the user has confirmed to
+ * the user interface that the media change is complete.
+ *
+ * \param Media The name of the media type that should be changed.
+ *
+ * \param Drive The identifying name of the drive whose media
+ * should be changed.
+ *
+ * \return \b true if the user confirms the media change, \b
+ * false if it is cancelled.
+ *
+ * \todo This is a horrible blocking monster; it should be CPSed
+ * with prejudice.
+ */
virtual bool MediaChange(string Media,string Drive) = 0;
- // Each of these is called by the workers when an event occures
+ /** \brief Invoked when an item is confirmed to be up-to-date.
+
+ * For instance, when an HTTP download is informed that the file on
+ * the server was not modified.
+ */
virtual void IMSHit(pkgAcquire::ItemDesc &/*Itm*/) {};
+
+ /** \brief Invoked when some of an item's data is fetched. */
virtual void Fetch(pkgAcquire::ItemDesc &/*Itm*/) {};
+
+ /** \brief Invoked when an item is successfully and completely fetched. */
virtual void Done(pkgAcquire::ItemDesc &/*Itm*/) {};
+
+ /** \brief Invoked when the process of fetching an item encounters
+ * a fatal error.
+ */
virtual void Fail(pkgAcquire::ItemDesc &/*Itm*/) {};
- virtual bool Pulse(pkgAcquire *Owner); // returns false on user cancel
+
+ /** \brief Periodically invoked while the Acquire process is underway.
+ *
+ * Subclasses should first call pkgAcquireStatus::Pulse(), then
+ * update their status output. The download process is blocked
+ * while Pulse() is being called.
+ *
+ * \return \b false if the user asked to cancel the whole Acquire process.
+ *
+ * \see pkgAcquire::Run
+ */
+ virtual bool Pulse(pkgAcquire *Owner);
+
+ /** \brief Invoked when the Acquire process starts running. */
virtual void Start();
+
+ /** \brief Invoked when the Acquire process stops running. */
virtual void Stop();
+ /** \brief Initialize all counters to 0 and the time to the current time. */
pkgAcquireStatus();
virtual ~pkgAcquireStatus() {};
};
+/** @} */
+
#endif
{
Version *Ver;
pkgCache *Owner;
-
+
void _dummy();
public:
inline const char *Section() const {return Ver->Section == 0?0:Owner->StrP + Ver->Section;};
inline const char *Arch() const {return Ver->Arch == 0?0:Owner->StrP + Ver->Arch;};
inline PkgIterator ParentPkg() const {return PkgIterator(*Owner,Owner->PkgP + Ver->ParentPkg);};
+ inline DescIterator DescriptionList() const;
+ DescIterator TranslatedDescription() const;
inline DepIterator DependsList() const;
inline PrvIterator ProvidesList() const;
inline VerFileIterator FileList() const;
};
};
+// Description Iterator
+class pkgCache::DescIterator
+{
+ Description *Desc;
+ pkgCache *Owner;
+
+ void _dummy();
+
+ public:
+
+ // Iteration
+ void operator ++(int) {if (Desc != Owner->DescP) Desc = Owner->DescP + Desc->NextDesc;};
+ inline void operator ++() {operator ++(0);};
+ inline bool end() const {return Desc == Owner->DescP?true:false;};
+ inline void operator =(const DescIterator &B) {Desc = B.Desc; Owner = B.Owner;};
+
+ // Comparison
+ inline bool operator ==(const DescIterator &B) const {return Desc == B.Desc;};
+ inline bool operator !=(const DescIterator &B) const {return Desc != B.Desc;};
+ int CompareDesc(const DescIterator &B) const;
+
+ // Accessors
+ inline Description *operator ->() {return Desc;};
+ inline Description const *operator ->() const {return Desc;};
+ inline Description &operator *() {return *Desc;};
+ inline Description const &operator *() const {return *Desc;};
+ inline operator Description *() {return Desc == Owner->DescP?0:Desc;};
+ inline operator Description const *() const {return Desc == Owner->DescP?0:Desc;};
+ inline pkgCache *Cache() {return Owner;};
+
+ inline const char *LanguageCode() const {return Owner->StrP + Desc->language_code;};
+ inline const char *md5() const {return Owner->StrP + Desc->md5sum;};
+ inline DescFileIterator FileList() const;
+ inline unsigned long Index() const {return Desc - Owner->DescP;};
+
+ inline DescIterator() : Desc(0), Owner(0) {};
+ inline DescIterator(pkgCache &Owner,Description *Trg = 0) : Desc(Trg),
+ Owner(&Owner)
+ {
+ if (Desc == 0)
+ Desc = Owner.DescP;
+ };
+};
+
// Dependency iterator
class pkgCache::DepIterator
{
inline VerFileIterator(pkgCache &Owner,VerFile *Trg) : Owner(&Owner), FileP(Trg) {};
};
+// Description File
+class pkgCache::DescFileIterator
+{
+ pkgCache *Owner;
+ DescFile *FileP;
+
+ public:
+
+ // Iteration
+ void operator ++(int) {if (FileP != Owner->DescFileP) FileP = Owner->DescFileP + FileP->NextFile;};
+ inline void operator ++() {operator ++(0);};
+ inline bool end() const {return FileP == Owner->DescFileP?true:false;};
+
+ // Comparison
+ inline bool operator ==(const DescFileIterator &B) const {return FileP == B.FileP;};
+ inline bool operator !=(const DescFileIterator &B) const {return FileP != B.FileP;};
+
+ // Accessors
+ inline DescFile *operator ->() {return FileP;};
+ inline DescFile const *operator ->() const {return FileP;};
+ inline DescFile const &operator *() const {return *FileP;};
+ inline operator DescFile *() {return FileP == Owner->DescFileP?0:FileP;};
+ inline operator DescFile const *() const {return FileP == Owner->DescFileP?0:FileP;};
+ inline pkgCache *Cache() {return Owner;};
+
+ inline PkgFileIterator File() const {return PkgFileIterator(*Owner,FileP->File + Owner->PkgFileP);};
+ inline unsigned long Index() const {return FileP - Owner->DescFileP;};
+
+ inline DescFileIterator() : Owner(0), FileP(0) {};
+ inline DescFileIterator(pkgCache &Owner,DescFile *Trg) : Owner(&Owner), FileP(Trg) {};
+};
+
// Inlined Begin functions cant be in the class because of order problems
inline pkgCache::VerIterator pkgCache::PkgIterator::VersionList() const
{return VerIterator(*Owner,Owner->VerP + Pkg->VersionList);};
{return DepIterator(*Owner,Owner->DepP + Pkg->RevDepends,Pkg);};
inline pkgCache::PrvIterator pkgCache::PkgIterator::ProvidesList() const
{return PrvIterator(*Owner,Owner->ProvideP + Pkg->ProvidesList,Pkg);};
+inline pkgCache::DescIterator pkgCache::VerIterator::DescriptionList() const
+ {return DescIterator(*Owner,Owner->DescP + Ver->DescriptionList);};
inline pkgCache::PrvIterator pkgCache::VerIterator::ProvidesList() const
{return PrvIterator(*Owner,Owner->ProvideP + Ver->ProvidesList,Ver);};
inline pkgCache::DepIterator pkgCache::VerIterator::DependsList() const
{return DepIterator(*Owner,Owner->DepP + Ver->DependsList,Ver);};
inline pkgCache::VerFileIterator pkgCache::VerIterator::FileList() const
{return VerFileIterator(*Owner,Owner->VerFileP + Ver->FileList);};
+inline pkgCache::DescFileIterator pkgCache::DescIterator::FileList() const
+ {return DescFileIterator(*Owner,Owner->DescFileP + Desc->FileList);};
#endif
search that short circuits when it his a package file in the dir.
This speeds it up greatly as the majority of the size is in the
binary-* sub dirs. */
-bool pkgCdrom::FindPackages(string CD,vector<string> &List,
- vector<string> &SList, vector<string> &SigList,
+bool pkgCdrom::FindPackages(string CD,
+ vector<string> &List,
+ vector<string> &SList,
+ vector<string> &SigList,
+ vector<string> &TransList,
string &InfoDir, pkgCdromStatus *log,
unsigned int Depth)
{
static ino_t Inodes[9];
+ DIR *D;
// if we have a look we "pulse" now
if(log)
if (_config->FindB("APT::CDROM::Thorough",false) == false)
return true;
}
+
+ // see if we find translatin indexes
+ if (stat("i18n",&Buf) == 0)
+ {
+ D = opendir("i18n");
+ for (struct dirent *Dir = readdir(D); Dir != 0; Dir = readdir(D))
+ {
+ if(strstr(Dir->d_name,"Translation") != NULL)
+ {
+ 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);
+ }
+ }
+ closedir(D);
+ }
+
- DIR *D = opendir(".");
+ D = opendir(".");
if (D == 0)
return _error->Errno("opendir","Unable to read %s",CD.c_str());
Inodes[Depth] = Buf.st_ino;
// Descend
- if (FindPackages(CD + Dir->d_name,List,SList,SigList,InfoDir,log,Depth+1) == false)
+ if (FindPackages(CD + Dir->d_name,List,SList,SigList,TransList,InfoDir,log,Depth+1) == false)
break;
if (chdir(CD.c_str()) != 0)
vector<string> List;
vector<string> SourceList;
vector<string> SigList;
+ vector<string> TransList;
string StartDir = SafeGetCWD();
string InfoDir;
- if (FindPackages(CDROM,List,SourceList, SigList,InfoDir,log) == false)
+ if (FindPackages(CDROM,List,SourceList, SigList,TransList,InfoDir,log) == false)
{
log->Update("\n");
return false;
DropRepeats(List,"Packages");
DropRepeats(SourceList,"Sources");
DropRepeats(SigList,"Release.gpg");
+ DropRepeats(TransList,"");
if(log) {
msg.str("");
- ioprintf(msg, _("Found %i package indexes, %i source indexes and "
- "%i signatures\n"),
- List.size(), SourceList.size(), SigList.size());
+ ioprintf(msg, _("Found %i package indexes, %i source indexes, "
+ "%i translation indexes and %i signatures\n"),
+ List.size(), SourceList.size(), TransList.size(),
+ SigList.size());
log->Update(msg.str(), STEP_SCAN);
}
// Copy the package files to the state directory
PackageCopy Copy;
SourceCopy SrcCopy;
+ TranslationsCopy TransCopy;
if (Copy.CopyPackages(CDROM,Name,List, log) == false ||
- SrcCopy.CopyPackages(CDROM,Name,SourceList, log) == false)
+ SrcCopy.CopyPackages(CDROM,Name,SourceList, log) == false ||
+ TransCopy.CopyTranslations(CDROM,Name,TransList, log) == false)
return false;
// reduce the List so that it takes less space in sources.list
};
- bool FindPackages(string CD,vector<string> &List,
- vector<string> &SList, vector<string> &SigList,
+ bool FindPackages(string CD,
+ vector<string> &List,
+ vector<string> &SList,
+ vector<string> &SigList,
+ vector<string> &TransList,
string &InfoDir, pkgCdromStatus *log,
unsigned int Depth = 0);
bool DropBinaryArch(vector<string> &List);
#include <regex.h>
#include <errno.h>
#include <stdarg.h>
+#include <iconv.h>
#include "config.h"
using namespace std;
/*}}}*/
+// UTF8ToCodeset - Convert some UTF-8 string for some codeset /*{{{*/
+// ---------------------------------------------------------------------
+/* This is handy to use before display some information for enduser */
+bool UTF8ToCodeset(const char *codeset, const string &orig, string *dest)
+{
+ iconv_t cd;
+ const char *inbuf;
+ char *inptr, *outbuf, *outptr;
+ size_t insize, outsize;
+
+ cd = iconv_open(codeset, "UTF-8");
+ if (cd == (iconv_t)(-1)) {
+ // Something went wrong
+ if (errno == EINVAL)
+ _error->Error("conversion from 'UTF-8' to '%s' not available",
+ codeset);
+ else
+ perror("iconv_open");
+
+ // Clean the destination string
+ *dest = "";
+
+ return false;
+ }
+
+ insize = outsize = orig.size();
+ inbuf = orig.data();
+ inptr = (char *)inbuf;
+ outbuf = new char[insize+1];
+ outptr = outbuf;
+
+ iconv(cd, &inptr, &insize, &outptr, &outsize);
+ *outptr = '\0';
+
+ *dest = outbuf;
+ delete[] outbuf;
+
+ iconv_close(cd);
+
+ return true;
+}
+ /*}}}*/
// strstrip - Remove white space from the front and back of a string /*{{{*/
// ---------------------------------------------------------------------
/* This is handy to use when parsing a file. It also removes \n's left
#define APT_FORMAT2
#define APT_FORMAT3
#endif
-
+
+bool UTF8ToCodeset(const char *codeset, const string &orig, string *dest);
char *_strstrip(char *String);
char *_strtabexpand(char *String,size_t Len);
bool ParseQuoteWord(const char *&String,string &Res);
}
/*}}}*/
+// TranslationsIndex::debTranslationsIndex - Contructor /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+debTranslationsIndex::debTranslationsIndex(string URI,string Dist,string Section) :
+ pkgIndexFile(true), URI(URI), Dist(Dist), Section(Section)
+{
+}
+ /*}}}*/
+// TranslationIndex::Trans* - Return the URI to the translation files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+inline string debTranslationsIndex::IndexFile(const char *Type) const
+{
+ return _config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type));
+}
+string debTranslationsIndex::IndexURI(const char *Type) const
+{
+ string Res;
+ if (Dist[Dist.size() - 1] == '/')
+ {
+ if (Dist != "/")
+ Res = URI + Dist;
+ else
+ Res = URI;
+ }
+ else
+ Res = URI + "dists/" + Dist + '/' + Section +
+ "/i18n/Translation-";
+
+ Res += Type;
+ return Res;
+}
+ /*}}}*/
+// TranslationsIndex::GetIndexes - Fetch the index files /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debTranslationsIndex::GetIndexes(pkgAcquire *Owner) const
+{
+ if (TranslationsAvailable()) {
+ string TranslationFile = "Translation-" + LanguageCode();
+ new pkgAcqIndexTrans(Owner, IndexURI(LanguageCode().c_str()),
+ Info(TranslationFile.c_str()),
+ TranslationFile);
+ }
+
+ return true;
+}
+ /*}}}*/
+// TranslationsIndex::Describe - Give a descriptive path to the index /*{{{*/
+// ---------------------------------------------------------------------
+/* This should help the user find the index in the sources.list and
+ in the filesystem for problem solving */
+string debTranslationsIndex::Describe(bool Short) const
+{
+ char S[300];
+ if (Short == true)
+ snprintf(S,sizeof(S),"%s",Info(TranslationFile().c_str()).c_str());
+ else
+ snprintf(S,sizeof(S),"%s (%s)",Info(TranslationFile().c_str()).c_str(),
+ IndexFile(LanguageCode().c_str()).c_str());
+ return S;
+}
+ /*}}}*/
+// TranslationsIndex::Info - One liner describing the index URI /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+string debTranslationsIndex::Info(const char *Type) const
+{
+ string Info = ::URI::SiteOnly(URI) + ' ';
+ if (Dist[Dist.size() - 1] == '/')
+ {
+ if (Dist != "/")
+ Info += Dist;
+ }
+ else
+ Info += Dist + '/' + Section;
+ Info += " ";
+ Info += Type;
+ return Info;
+}
+ /*}}}*/
+bool debTranslationsIndex::HasPackages() const
+{
+ if(!TranslationsAvailable())
+ return false;
+
+ return FileExists(IndexFile(LanguageCode().c_str()));
+}
+
+// TranslationsIndex::Exists - Check if the index is available /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debTranslationsIndex::Exists() const
+{
+ return FileExists(IndexFile(LanguageCode().c_str()));
+}
+ /*}}}*/
+// TranslationsIndex::Size - Return the size of the index /*{{{*/
+// ---------------------------------------------------------------------
+/* This is really only used for progress reporting. */
+unsigned long debTranslationsIndex::Size() const
+{
+ struct stat S;
+ if (stat(IndexFile(LanguageCode().c_str()).c_str(),&S) != 0)
+ return 0;
+ return S.st_size;
+}
+ /*}}}*/
+// TranslationsIndex::Merge - Load the index file into a cache /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const
+{
+ // Check the translation file, if in use
+ string TranslationFile = IndexFile(LanguageCode().c_str());
+ if (TranslationsAvailable() && FileExists(TranslationFile))
+ {
+ FileFd Trans(TranslationFile,FileFd::ReadOnly);
+ debListParser TransParser(&Trans);
+ if (_error->PendingError() == true)
+ return false;
+
+ Prog.SubProgress(0, Info(TranslationFile.c_str()));
+ if (Gen.SelectFile(TranslationFile,string(),*this) == false)
+ return _error->Error("Problem with SelectFile %s",TranslationFile.c_str());
+
+ // 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;
+
+ if (Gen.MergeList(TransParser) == false)
+ return _error->Error("Problem with MergeList %s",TranslationFile.c_str());
+ }
+
+ return true;
+}
+ /*}}}*/
+// TranslationsIndex::FindInCache - Find this index /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgCache::PkgFileIterator debTranslationsIndex::FindInCache(pkgCache &Cache) const
+{
+ string FileName = IndexFile(LanguageCode().c_str());
+
+ pkgCache::PkgFileIterator File = Cache.FileBegin();
+ for (; File.end() == false; File++)
+ {
+ if (FileName != File.FileName())
+ continue;
+
+ struct stat St;
+ if (stat(File.FileName(),&St) != 0)
+ return pkgCache::PkgFileIterator(Cache);
+ if ((unsigned)St.st_size != File->Size || St.st_mtime != File->mtime)
+ return pkgCache::PkgFileIterator(Cache);
+ return File;
+ }
+ return File;
+}
+ /*}}}*/
// StatusIndex::debStatusIndex - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* */
};
debIFTypePkg() {Label = "Debian Package Index";};
};
+class debIFTypeTrans : public debIFTypePkg
+{
+ public:
+ debIFTypeTrans() {Label = "Debian Translation Index";};
+};
class debIFTypeStatus : public pkgIndexFile::Type
{
public:
};
static debIFTypeSrc _apt_Src;
static debIFTypePkg _apt_Pkg;
+static debIFTypeTrans _apt_Trans;
static debIFTypeStatus _apt_Status;
const pkgIndexFile::Type *debSourcesIndex::GetType() const
{
return &_apt_Pkg;
}
+const pkgIndexFile::Type *debTranslationsIndex::GetType() const
+{
+ return &_apt_Trans;
+}
const pkgIndexFile::Type *debStatusIndex::GetType() const
{
return &_apt_Status;
debPackagesIndex(string URI,string Dist,string Section,bool Trusted);
};
+class debTranslationsIndex : public pkgIndexFile
+{
+ string URI;
+ string Dist;
+ string Section;
+
+ string Info(const char *Type) const;
+ string IndexFile(const char *Type) const;
+ string IndexURI(const char *Type) const;
+
+ inline string TranslationFile() const {return "Translation-" + LanguageCode();};
+
+ public:
+
+ virtual const Type *GetType() const;
+
+ // Interface for acquire
+ virtual string Describe(bool Short) const;
+ virtual bool GetIndexes(pkgAcquire *Owner) const;
+
+ // Interface for the Cache Generator
+ virtual bool Exists() const;
+ virtual bool HasPackages() const;
+ virtual unsigned long Size() const;
+ virtual bool Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const;
+ virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const;
+
+ debTranslationsIndex(string URI,string Dist,string Section);
+};
+
class debSourcesIndex : public pkgIndexFile
{
string URI;
#include <apt-pkg/configuration.h>
#include <apt-pkg/strutl.h>
#include <apt-pkg/crc-16.h>
+#include <apt-pkg/md5.h>
#include <ctype.h>
return true;
}
/*}}}*/
+// ListParser::Description - Return the description string /*{{{*/
+// ---------------------------------------------------------------------
+/* This is to return the string describing the package in debian
+ form. If this returns the blank string then the entry is assumed to
+ only describe package properties */
+string debListParser::Description()
+{
+ if (DescriptionLanguage().empty())
+ return Section.FindS("Description");
+ else
+ return Section.FindS(("Description-" + pkgIndexFile::LanguageCode()).c_str());
+}
+ /*}}}*/
+// ListParser::DescriptionLanguage - Return the description lang string /*{{{*/
+// ---------------------------------------------------------------------
+/* This is to return the string describing the language of
+ description. If this returns the blank string then the entry is
+ assumed to describe original description. */
+string debListParser::DescriptionLanguage()
+{
+ return Section.FindS("Description").empty() ? pkgIndexFile::LanguageCode() : "";
+}
+ /*}}}*/
+// ListParser::Description - Return the description_md5 MD5SumValue /*{{{*/
+// ---------------------------------------------------------------------
+/* This is to return the md5 string to allow the check if it is the right
+ description. If no Description-md5 is found in the section it will be
+ calculated.
+ */
+MD5SumValue debListParser::Description_md5()
+{
+ string value = Section.FindS("Description-md5");
+
+ if (value.empty())
+ {
+ MD5Summation md5;
+ md5.Add((Description() + "\n").c_str());
+ return md5.Result();
+ } else
+ return MD5SumValue(value);
+}
+ /*}}}*/
// ListParser::UsePackage - Update a package structure /*{{{*/
// ---------------------------------------------------------------------
/* This is called to update the package with any new information
#define PKGLIB_DEBLISTPARSER_H
#include <apt-pkg/pkgcachegen.h>
+#include <apt-pkg/indexfile.h>
#include <apt-pkg/tagfile.h>
class debListParser : public pkgCacheGenerator::ListParser
virtual string Package();
virtual string Version();
virtual bool NewVersion(pkgCache::VerIterator Ver);
+ virtual string Description();
+ virtual string DescriptionLanguage();
+ virtual MD5SumValue Description_md5();
virtual unsigned short VersionHash();
virtual bool UsePackage(pkgCache::PkgIterator Pkg,
pkgCache::VerIterator Ver);
ComputeIndexTargets(),
new indexRecords (Dist));
+ // Queue the translations
+ for (vector<const debSectionEntry *>::const_iterator I = SectionEntries.begin();
+ I != SectionEntries.end(); I++) {
+
+ debTranslationsIndex i = debTranslationsIndex(URI,Dist,(*I)->Section);
+ i.GetIndexes(Owner);
+ }
+
return true;
}
Indexes = new vector <pkgIndexFile*>;
for (vector<const debSectionEntry *>::const_iterator I = SectionEntries.begin();
- I != SectionEntries.end(); I++)
+ I != SectionEntries.end(); I++) {
if ((*I)->IsSrc)
Indexes->push_back(new debSourcesIndex (URI, Dist, (*I)->Section, IsTrusted()));
else
+ {
Indexes->push_back(new debPackagesIndex (URI, Dist, (*I)->Section, IsTrusted()));
+ Indexes->push_back(new debTranslationsIndex(URI, Dist, (*I)->Section));
+ }
+ }
+
return Indexes;
}
#pragma implementation "apt-pkg/debrecords.h"
#endif
#include <apt-pkg/debrecords.h>
+#include <apt-pkg/strutl.h>
#include <apt-pkg/error.h>
+#include <langinfo.h>
/*}}}*/
// RecordParser::debRecordParser - Constructor /*{{{*/
bool debRecordParser::Jump(pkgCache::VerFileIterator const &Ver)
{
return Tags.Jump(Section,Ver->Offset);
+}
+bool debRecordParser::Jump(pkgCache::DescFileIterator const &Desc)
+{
+ return Tags.Jump(Section,Desc->Offset);
}
/*}}}*/
// RecordParser::FileName - Return the archive filename on the site /*{{{*/
/* */
string debRecordParser::ShortDesc()
{
- string Res = Section.FindS("Description");
+ string Res = LongDesc();
string::size_type Pos = Res.find('\n');
if (Pos == string::npos)
return Res;
/* */
string debRecordParser::LongDesc()
{
- return Section.FindS("Description");
+ string orig, dest;
+ char *codeset = nl_langinfo(CODESET);
+
+ if (!Section.FindS("Description").empty())
+ orig = Section.FindS("Description").c_str();
+ else
+ orig = Section.FindS(("Description-" + pkgIndexFile::LanguageCode()).c_str()).c_str();
+
+ if (strcmp(codeset,"UTF-8") != 0) {
+ UTF8ToCodeset(codeset, orig, &dest);
+ orig = dest;
+ }
+
+ return orig;
}
/*}}}*/
// RecordParser::SourcePkg - Return the source package name if any /*{{{*/
#endif
#include <apt-pkg/pkgrecords.h>
+#include <apt-pkg/indexfile.h>
#include <apt-pkg/tagfile.h>
class debRecordParser : public pkgRecords::Parser
protected:
virtual bool Jump(pkgCache::VerFileIterator const &Ver);
+ virtual bool Jump(pkgCache::DescFileIterator const &Desc);
public:
using namespace std;
+
+
// IndexCopy::CopyPackages - Copy the package files from the CD /*{{{*/
// ---------------------------------------------------------------------
/* */
fputc('\n',Target);
return true;
}
-
-
/*}}}*/
-
+// SigVerify::Verify - Verify a files md5sum against its metaindex /*{{{*/
+// ---------------------------------------------------------------------
+/* */
bool SigVerify::Verify(string prefix, string file, indexRecords *MetaIndex)
{
const indexRecords::checkSum *Record = MetaIndex->Lookup(file);
return true;
}
+
+
+bool TranslationsCopy::CopyTranslations(string CDROM,string Name,vector<string> &List,
+ pkgCdromStatus *log)
+{
+ OpProgress *Progress = NULL;
+ if (List.size() == 0)
+ return true;
+
+ if(log)
+ Progress = log->GetOpProgress();
+
+ bool Debug = _config->FindB("Debug::aptcdrom",false);
+
+ // Prepare the progress indicator
+ unsigned long TotalSize = 0;
+ 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());
+ TotalSize += Buf.st_size;
+ }
+
+ unsigned long 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 (FileExists(*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);
+ }
+ pkgTagFile Parser(&Pkg);
+ if (_error->PendingError() == true)
+ return false;
+
+ // Open the output file
+ char S[400];
+ snprintf(S,sizeof(S),"cdrom:[%s]/%s",Name.c_str(),
+ (*I).c_str() + CDROM.length());
+ string TargetF = _config->FindDir("Dir::State::lists") + "partial/";
+ TargetF += URItoFileName(S);
+ if (_config->FindB("APT::CDROM::NoAct",false) == true)
+ TargetF = "/dev/null";
+ FileFd Target(TargetF,FileFd::WriteEmpty);
+ FILE *TargetFl = fdopen(dup(Target.Fd()),"w");
+ if (_error->PendingError() == true)
+ return false;
+ if (TargetFl == 0)
+ return _error->Errno("fdopen","Failed to reopen fd");
+
+ // Setup the progress meter
+ if(Progress)
+ Progress->OverallProgress(CurrentSize,TotalSize,FileSize,
+ string("Reading Translation Indexes"));
+
+ // Parse
+ if(Progress)
+ Progress->SubProgress(Pkg.Size());
+ pkgTagSection Section;
+ this->Section = &Section;
+ string Prefix;
+ unsigned long Hits = 0;
+ unsigned long Chop = 0;
+ while (Parser.Step(Section) == true)
+ {
+ if(Progress)
+ Progress->Progress(Parser.Offset());
+
+ const char *Start;
+ const char *Stop;
+ Section.GetSection(Start,Stop);
+ fwrite(Start,Stop-Start, 1, TargetFl);
+ fputc('\n',TargetFl);
+
+ Packages++;
+ Hits++;
+ }
+ fclose(TargetFl);
+
+ if (Debug == true)
+ cout << " Processed by using Prefix '" << Prefix << "' and chop " << Chop << endl;
+
+ if (_config->FindB("APT::CDROM::NoAct",false) == false)
+ {
+ // Move out of the partial directory
+ Target.Close();
+ string FinalF = _config->FindDir("Dir::State::lists");
+ FinalF += URItoFileName(S);
+ if (rename(TargetF.c_str(),FinalF.c_str()) != 0)
+ return _error->Errno("rename","Failed to rename");
+ }
+
+
+ CurrentSize += FileSize;
+ }
+ if(Progress)
+ Progress->Done();
+
+ // Some stats
+ if(log) {
+ stringstream msg;
+ if(NotFound == 0 && WrongSize == 0)
+ ioprintf(msg, _("Wrote %i records.\n"), Packages);
+ else if (NotFound != 0 && WrongSize == 0)
+ ioprintf(msg, _("Wrote %i records with %i missing files.\n"),
+ Packages, NotFound);
+ else if (NotFound == 0 && WrongSize != 0)
+ ioprintf(msg, _("Wrote %i records with %i mismatched files\n"),
+ Packages, WrongSize);
+ if (NotFound != 0 && WrongSize != 0)
+ ioprintf(msg, _("Wrote %i records with %i missing files and %i mismatched files\n"), Packages, NotFound, WrongSize);
+ }
+
+ if (Packages == 0)
+ _error->Warning("No valid records were found.");
+
+ if (NotFound + WrongSize > 10)
+ _error->Warning("Alot of entries were discarded, something may be wrong.\n");
+
+
+ return true;
+}
public:
};
+class TranslationsCopy
+{
+ protected:
+ pkgTagSection *Section;
+
+ public:
+ bool CopyTranslations(string CDROM,string Name,vector<string> &List,
+ pkgCdromStatus *log);
+};
+
+
class SigVerify
{
bool Verify(string prefix,string file, indexRecords *records);
vector<string> PkgList,vector<string> SrcList);
};
+
+
#endif
#pragma implementation "apt-pkg/indexfile.h"
#endif
+#include <apt-pkg/configuration.h>
#include <apt-pkg/indexfile.h>
#include <apt-pkg/error.h>
+
+#include <clocale>
/*}}}*/
// Global list of Item supported
return string();
}
/*}}}*/
+// IndexFile::TranslationsAvailable - Check if will use Translation /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgIndexFile::TranslationsAvailable()
+{
+ const string Translation = _config->Find("APT::Acquire::Translation");
+
+ if (Translation.compare("none") != 0)
+ return CheckLanguageCode(LanguageCode().c_str());
+ else
+ return false;
+}
+ /*}}}*/
+// IndexFile::CheckLanguageCode - Check the Language Code /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+/* common cases: de_DE, de_DE@euro, de_DE.UTF-8, de_DE.UTF-8@euro,
+ de_DE.ISO8859-1, tig_ER
+ more in /etc/gdm/locale.conf
+*/
+
+bool pkgIndexFile::CheckLanguageCode(const char *Lang)
+{
+ if (strlen(Lang) == 2 || (strlen(Lang) == 5 && Lang[2] == '_'))
+ return true;
+
+ if (strcmp(Lang,"C") != 0)
+ _error->Warning("Wrong language code %s", Lang);
+
+ return false;
+}
+ /*}}}*/
+// IndexFile::LanguageCode - Return the Language Code /*{{{*/
+// ---------------------------------------------------------------------
+/* return the language code */
+string pkgIndexFile::LanguageCode()
+{
+ const string Translation = _config->Find("APT::Acquire::Translation");
+
+ if (Translation.compare("environment") == 0)
+ {
+ string lang = std::setlocale(LC_MESSAGES,NULL);
+
+ // FIXME: this needs to be added
+ // we have a mapping of the language codes that contains all the language
+ // codes that need the country code as well
+ // (like pt_BR, pt_PT, sv_SE, zh_*, en_*)
+
+ if(lang.size() > 2)
+ return lang.substr(0,2);
+ else
+ return lang;
+ }
+ else
+ return Translation;
+}
+ /*}}}*/
Index File - Abstraction for an index of archive/source file.
- There are 3 primary sorts of index files, all represented by this
+ There are 4 primary sorts of index files, all represented by this
class:
Binary index files
+ Binary translation files
Bianry index files decribing the local system
Source index files
virtual bool MergeFileProvides(pkgCacheGenerator &/*Gen*/,OpProgress &/*Prog*/) const {return true;};
virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const;
+ static bool TranslationsAvailable();
+ static bool CheckLanguageCode(const char *Lang);
+ static string LanguageCode();
+
bool IsTrusted() const { return Trusted; };
pkgIndexFile(bool Trusted): Trusted(Trusted) {};
bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str());
}
#endif
+
+ // Translation
+ Cnf.Set("APT::Acquire::Translation", "environment");
return true;
}
#include <apt-pkg/pkgsystem.h>
// See the makefile
-#define APT_PKG_MAJOR 3
-#define APT_PKG_MINOR 11
+#define APT_PKG_MAJOR 4
+#define APT_PKG_MINOR 0
#define APT_PKG_RELEASE 0
extern const char *pkgVersion;
# methods/makefile - FIXME
LIBRARY=apt-pkg
LIBEXT=$(GLIBC_VER)$(LIBSTDCPP_VER)
-MAJOR=3.11
+MAJOR=4.0
MINOR=0
SLIBS=$(PTHREADLIB) $(INTLLIBS)
APT_DOMAIN:=libapt-pkg$(MAJOR)
#endif
#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/indexfile.h>
#include <apt-pkg/version.h>
#include <apt-pkg/error.h>
#include <apt-pkg/strutl.h>
using std::string;
+
// Cache::Header::Header - Constructor /*{{{*/
// ---------------------------------------------------------------------
/* Simply initialize the header */
/* Whenever the structures change the major version should be bumped,
whenever the generator changes the minor version should be bumped. */
- MajorVersion = 4;
+ MajorVersion = 5;
MinorVersion = 0;
Dirty = false;
PackageSz = sizeof(pkgCache::Package);
PackageFileSz = sizeof(pkgCache::PackageFile);
VersionSz = sizeof(pkgCache::Version);
+ DescriptionSz = sizeof(pkgCache::Description);
DependencySz = sizeof(pkgCache::Dependency);
ProvidesSz = sizeof(pkgCache::Provides);
VerFileSz = sizeof(pkgCache::VerFile);
+ DescFileSz = sizeof(pkgCache::DescFile);
PackageCount = 0;
VersionCount = 0;
+ DescriptionCount = 0;
DependsCount = 0;
PackageFileCount = 0;
VerFileCount = 0;
+ DescFileCount = 0;
ProvidesCount = 0;
MaxVerFileSize = 0;
+ MaxDescFileSize = 0;
FileList = 0;
StringList = 0;
PackageSz == Against.PackageSz &&
PackageFileSz == Against.PackageFileSz &&
VersionSz == Against.VersionSz &&
+ DescriptionSz == Against.DescriptionSz &&
DependencySz == Against.DependencySz &&
VerFileSz == Against.VerFileSz &&
+ DescFileSz == Against.DescFileSz &&
ProvidesSz == Against.ProvidesSz)
return true;
return false;
HeaderP = (Header *)Map.Data();
PkgP = (Package *)Map.Data();
VerFileP = (VerFile *)Map.Data();
+ DescFileP = (DescFile *)Map.Data();
PkgFileP = (PackageFile *)Map.Data();
VerP = (Version *)Map.Data();
+ DescP = (Description *)Map.Data();
ProvideP = (Provides *)Map.Data();
DepP = (Dependency *)Map.Data();
StringItemP = (StringItem *)Map.Data();
return 0;
}
/*}}}*/
-
// Bases for iterator classes /*{{{*/
void pkgCache::VerIterator::_dummy() {}
void pkgCache::DepIterator::_dummy() {}
void pkgCache::PrvIterator::_dummy() {}
+void pkgCache::DescIterator::_dummy() {}
/*}}}*/
// PkgIterator::operator ++ - Postfix incr /*{{{*/
// ---------------------------------------------------------------------
return Res;
}
/*}}}*/
+// VerIterator::TranslatedDescription - Return the a DescIter for locale/*{{{*/
+// ---------------------------------------------------------------------
+/* return a DescIter for the current locale or the default if none is
+ * found
+ */
+pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescription() const
+{
+ pkgCache::DescIterator DescDefault = DescriptionList();
+ pkgCache::DescIterator Desc = DescDefault;
+ for (; Desc.end() == false; Desc++)
+ if (pkgIndexFile::LanguageCode() == Desc.LanguageCode())
+ break;
+ if (Desc.end() == true) Desc = DescDefault;
+ return Desc;
+};
+
+ /*}}}*/
struct Package;
struct PackageFile;
struct Version;
+ struct Description;
struct Provides;
struct Dependency;
struct StringItem;
struct VerFile;
+ struct DescFile;
// Iterators
class PkgIterator;
class VerIterator;
+ class DescIterator;
class DepIterator;
class PrvIterator;
class PkgFileIterator;
class VerFileIterator;
+ class DescFileIterator;
friend class PkgIterator;
friend class VerIterator;
+ friend class DescInterator;
friend class DepIterator;
friend class PrvIterator;
friend class PkgFileIterator;
friend class VerFileIterator;
+ friend class DescFileIterator;
class Namespace;
Header *HeaderP;
Package *PkgP;
VerFile *VerFileP;
+ DescFile *DescFileP;
PackageFile *PkgFileP;
Version *VerP;
+ Description *DescP;
Provides *ProvideP;
Dependency *DepP;
StringItem *StringItemP;
unsigned short PackageSz;
unsigned short PackageFileSz;
unsigned short VersionSz;
+ unsigned short DescriptionSz;
unsigned short DependencySz;
unsigned short ProvidesSz;
unsigned short VerFileSz;
+ unsigned short DescFileSz;
// Structure counts
unsigned long PackageCount;
unsigned long VersionCount;
+ unsigned long DescriptionCount;
unsigned long DependsCount;
unsigned long PackageFileCount;
unsigned long VerFileCount;
+ unsigned long DescFileCount;
unsigned long ProvidesCount;
// Offsets
map_ptrloc VerSysName; // StringTable
map_ptrloc Architecture; // StringTable
unsigned long MaxVerFileSize;
+ unsigned long MaxDescFileSize;
/* Allocation pools, there should be one of these for each structure
excluding the header */
- DynamicMMap::Pool Pools[7];
+ DynamicMMap::Pool Pools[8];
// Rapid package name lookup
map_ptrloc HashTable[2*1048];
map_ptrloc NextPackage; // Package
map_ptrloc RevDepends; // Dependency
map_ptrloc ProvidesList; // Provides
-
+
// Install/Remove/Purge etc
unsigned char SelectedState; // What
unsigned char InstState; // Flags
unsigned short Size;
};
+struct pkgCache::DescFile
+{
+ map_ptrloc File; // PackageFile
+ map_ptrloc NextFile; // PkgVerFile
+ map_ptrloc Offset; // File offset
+ unsigned short Size;
+};
+
struct pkgCache::Version
{
map_ptrloc VerStr; // Stringtable
// Lists
map_ptrloc FileList; // VerFile
map_ptrloc NextVer; // Version
+ map_ptrloc DescriptionList; // Description
map_ptrloc DependsList; // Dependency
map_ptrloc ParentPkg; // Package
map_ptrloc ProvidesList; // Provides
unsigned char Priority;
};
+struct pkgCache::Description
+{
+ // Language Code store the description translation language code. If
+ // the value has a 0 lenght then this is readed using the Package
+ // file else the Translation-CODE are used.
+ map_ptrloc language_code; // StringTable
+ map_ptrloc md5sum; // StringTable
+
+ // Linked list
+ map_ptrloc FileList; // DescFile
+ map_ptrloc NextDesc; // Description
+ map_ptrloc ParentPkg; // Package
+
+ unsigned short ID;
+};
+
struct pkgCache::Dependency
{
map_ptrloc Version; // Stringtable
typedef pkgCache::PkgIterator PkgIterator;
typedef pkgCache::VerIterator VerIterator;
+ typedef pkgCache::DescIterator DescIterator;
typedef pkgCache::DepIterator DepIterator;
typedef pkgCache::PrvIterator PrvIterator;
typedef pkgCache::PkgFileIterator PkgFileIterator;
typedef pkgCache::VerFileIterator VerFileIterator;
typedef pkgCache::Version Version;
+ typedef pkgCache::Description Description;
typedef pkgCache::Package Package;
typedef pkgCache::Header Header;
typedef pkgCache::Dep Dep;
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)
if (List.UsePackage(Pkg,pkgCache::VerIterator(Cache)) == 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();
+ pkgCache::VerIterator Ver = Pkg.VersionList();
+ map_ptrloc *LastVer = &Pkg->VersionList;
+
+ for (; Ver.end() == false; LastVer = &Ver->NextVer, Ver++)
+ {
+ pkgCache::DescIterator Desc = Ver.DescriptionList();
+ map_ptrloc *LastDesc = &Ver->DescriptionList;
+
+ for (; Desc.end() == false; LastDesc = &Desc->NextDesc, Desc++)
+ {
+
+ if (MD5SumValue(Desc.md5()) == CurMd5)
+ {
+ // Add new description
+ *LastDesc = NewDescription(Desc, List.DescriptionLanguage(), CurMd5, *LastDesc);
+ Desc->ParentPkg = Pkg.Index();
+
+ if (NewFileDesc(Desc,List) == false)
+ return _error->Error(_("Error occured while processing %s (NewFileDesc1)"),PackageName.c_str());
+ break;
+ }
+ }
+ }
+
continue;
}
pkgCache::VerIterator Ver = Pkg.VersionList();
- map_ptrloc *Last = &Pkg->VersionList;
+ map_ptrloc *LastVer = &Pkg->VersionList;
int Res = 1;
- for (; Ver.end() == false; Last = &Ver->NextVer, Ver++)
+ for (; Ver.end() == false; LastVer = &Ver->NextVer, Ver++)
{
Res = Cache.VS->CmpVersion(Version,Ver.VerStr());
if (Res >= 0)
// Skip to the end of the same version set.
if (Res == 0)
{
- for (; Ver.end() == false; Last = &Ver->NextVer, Ver++)
+ for (; Ver.end() == false; LastVer = &Ver->NextVer, Ver++)
{
Res = Cache.VS->CmpVersion(Version,Ver.VerStr());
if (Res != 0)
}
// Add a new version
- *Last = NewVersion(Ver,Version,*Last);
+ *LastVer = NewVersion(Ver,Version,*LastVer);
Ver->ParentPkg = Pkg.Index();
Ver->Hash = Hash;
+
if (List.NewVersion(Ver) == false)
return _error->Error(_("Error occurred while processing %s (NewVersion1)"),
PackageName.c_str());
FoundFileDeps |= List.HasFileDeps();
return true;
}
+
+ /* Record the Description data. Description data always exist in
+ Packages and Translation-* files. */
+ pkgCache::DescIterator Desc = Ver.DescriptionList();
+ map_ptrloc *LastDesc = &Ver->DescriptionList;
+
+ // Skip to the end of description set
+ for (; Desc.end() == false; LastDesc = &Desc->NextDesc, Desc++);
+
+ // Add new description
+ *LastDesc = NewDescription(Desc, List.DescriptionLanguage(), List.Description_md5(), *LastDesc);
+ Desc->ParentPkg = Pkg.Index();
+
+ if (NewFileDesc(Desc,List) == false)
+ return _error->Error(_("Error occured while processing %s (NewFileDesc2)"),PackageName.c_str());
}
FoundFileDeps |= List.HasFileDeps();
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."));
Pkg = Cache.FindPkg(Name);
if (Pkg.end() == false)
return true;
-
+
// Get a structure
unsigned long Package = Map.Allocate(sizeof(pkgCache::Package));
if (Package == 0)
return Version;
}
/*}}}*/
+// CacheGenerator::NewFileDesc - Create a new File<->Desc association /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator &Desc,
+ ListParser &List)
+{
+ if (CurrentFile == 0)
+ return true;
+
+ // Get a structure
+ unsigned long DescFile = Map.Allocate(sizeof(pkgCache::DescFile));
+ if (DescFile == 0)
+ return 0;
+
+ pkgCache::DescFileIterator DF(Cache,Cache.DescFileP + DescFile);
+ DF->File = CurrentFile - Cache.PkgFileP;
+
+ // Link it to the end of the list
+ map_ptrloc *Last = &Desc->FileList;
+ for (pkgCache::DescFileIterator D = Desc.FileList(); D.end() == false; D++)
+ Last = &D->NextFile;
+
+ DF->NextFile = *Last;
+ *Last = DF.Index();
+
+ DF->Offset = List.Offset();
+ DF->Size = List.Size();
+ if (Cache.HeaderP->MaxDescFileSize < DF->Size)
+ Cache.HeaderP->MaxDescFileSize = DF->Size;
+ Cache.HeaderP->DescFileCount++;
+
+ return true;
+}
+ /*}}}*/
+// CacheGenerator::NewDescription - Create a new Description /*{{{*/
+// ---------------------------------------------------------------------
+/* This puts a description structure in the linked list */
+map_ptrloc pkgCacheGenerator::NewDescription(pkgCache::DescIterator &Desc,
+ const string &Lang, const MD5SumValue &md5sum,
+ map_ptrloc Next)
+{
+ // Get a structure
+ map_ptrloc Description = Map.Allocate(sizeof(pkgCache::Description));
+ if (Description == 0)
+ return 0;
+
+ // Fill it in
+ Desc = pkgCache::DescIterator(Cache,Cache.DescP + Description);
+ Desc->NextDesc = Next;
+ Desc->ID = Cache.HeaderP->DescriptionCount++;
+ Desc->language_code = Map.WriteString(Lang);
+ Desc->md5sum = Map.WriteString(md5sum.Value());
+
+ return Description;
+}
+ /*}}}*/
// ListParser::NewDepends - Create a dependency element /*{{{*/
// ---------------------------------------------------------------------
/* This creates a dependency element in the tree. It is linked to the
pkgCache::PkgFileIterator File = (*Start)->FindInCache(Cache);
if (File.end() == true)
return false;
-
+
Visited[File->ID] = true;
}
#endif
#include <apt-pkg/pkgcache.h>
+#include <apt-pkg/md5.h>
class pkgSourceList;
class OpProgress;
bool NewPackage(pkgCache::PkgIterator &Pkg,const string &Pkg);
bool NewFileVer(pkgCache::VerIterator &Ver,ListParser &List);
+ bool NewFileDesc(pkgCache::DescIterator &Desc,ListParser &List);
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);
public:
virtual string Package() = 0;
virtual string Version() = 0;
virtual bool NewVersion(pkgCache::VerIterator Ver) = 0;
+ virtual string Description() = 0;
+ virtual string DescriptionLanguage() = 0;
+ virtual MD5SumValue Description_md5() = 0;
virtual unsigned short VersionHash() = 0;
virtual bool UsePackage(pkgCache::PkgIterator Pkg,
pkgCache::VerIterator Ver) = 0;
return *Files[Ver.File()->ID];
}
/*}}}*/
+// Records::Lookup - Get a parser for the package description file /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+pkgRecords::Parser &pkgRecords::Lookup(pkgCache::DescFileIterator const &Desc)
+{
+ Files[Desc.File()->ID]->Jump(Desc);
+ return *Files[Desc.File()->ID];
+}
+ /*}}}*/
// Lookup function
Parser &Lookup(pkgCache::VerFileIterator const &Ver);
+ Parser &Lookup(pkgCache::DescFileIterator const &Desc);
// Construct destruct
pkgRecords(pkgCache &Cache);
protected:
virtual bool Jump(pkgCache::VerFileIterator const &Ver) = 0;
+ virtual bool Jump(pkgCache::DescFileIterator const &Desc) = 0;
public:
friend class pkgRecords;
DEBIANDOC_HTML = @DEBIANDOC_HTML@
DEBIANDOC_TEXT = @DEBIANDOC_TEXT@
+DOXYGEN = @DOXYGEN@
+
# SGML for the man pages
DOCBOOK2MAN := @DOCBOOK2MAN@
{
qsort(begin,Count,Size,LocalityCompare);
}
+
+void LocalitySort(pkgCache::DescFile **begin,
+ unsigned long Count,size_t Size)
+{
+ qsort(begin,Count,Size,LocalityCompare);
+}
/*}}}*/
// UnMet - Show unmet dependencies /*{{{*/
// ---------------------------------------------------------------------
{
cout << Cur.VerStr();
for (pkgCache::VerFileIterator Vf = Cur.FileList(); Vf.end() == false; Vf++)
- cout << "(" << Vf.File().FileName() << ")";
+ cout << " (" << Vf.File().FileName() << ")";
+ cout << endl;
+ for (pkgCache::DescIterator D = Cur.DescriptionList(); D.end() == false; D++)
+ {
+ cout << " Description Language: " << D.LanguageCode() << endl
+ << " File: " << D.FileList().File().FileName() << endl
+ << " MD5: " << D.md5() << endl;
+ }
cout << endl;
}
cout << _("Total distinct versions: ") << Cache.Head().VersionCount << " (" <<
SizeToStr(Cache.Head().VersionCount*Cache.Head().VersionSz) << ')' << endl;
+ cout << _("Total Distinct Descriptions: ") << Cache.Head().DescriptionCount << " (" <<
+ SizeToStr(Cache.Head().DescriptionCount*Cache.Head().DescriptionSz) << ')' << endl;
cout << _("Total dependencies: ") << Cache.Head().DependsCount << " (" <<
SizeToStr(Cache.Head().DependsCount*Cache.Head().DependencySz) << ')' << endl;
cout << _("Total ver/file relations: ") << Cache.Head().VerFileCount << " (" <<
SizeToStr(Cache.Head().VerFileCount*Cache.Head().VerFileSz) << ')' << endl;
+ cout << _("Total Desc/File relations: ") << Cache.Head().DescFileCount << " (" <<
+ SizeToStr(Cache.Head().DescFileCount*Cache.Head().DescFileSz) << ')' << endl;
cout << _("Total Provides mappings: ") << Cache.Head().ProvidesCount << " (" <<
SizeToStr(Cache.Head().ProvidesCount*Cache.Head().ProvidesSz) << ')' << endl;
for (pkgCache::DepIterator D = V.DependsList(); D.end() == false; D++)
cout << " Depends: " << D.TargetPkg().Name() << ' ' <<
DeNull(D.TargetVer()) << endl;
+ for (pkgCache::DescIterator D = V.DescriptionList(); D.end() == false; D++)
+ {
+ cout << " Description Language: " << D.LanguageCode() << endl
+ << " File: " << D.FileList().File().FileName() << endl
+ << " MD5: " << D.md5() << endl;
+ }
}
}
if (_error->PendingError() == true)
return false;
- // Read the record and then write it out again.
+ // Read the record
unsigned char *Buffer = new unsigned char[GCache->HeaderP->MaxVerFileSize+1];
Buffer[V.FileList()->Size] = '\n';
if (PkgF.Seek(V.FileList()->Offset) == false ||
- PkgF.Read(Buffer,V.FileList()->Size) == false ||
- fwrite(Buffer,1,V.FileList()->Size+1,stdout) < (size_t)(V.FileList()->Size+1))
+ PkgF.Read(Buffer,V.FileList()->Size) == false)
{
delete [] Buffer;
return false;
}
-
+
+ // Get a pointer to start of Description field
+ const unsigned char *DescP = (unsigned char*)strstr((char*)Buffer, "Description:");
+
+ // Write all but Description
+ if (fwrite(Buffer,1,DescP - Buffer,stdout) < (size_t)(DescP - Buffer))
+ {
+ delete [] Buffer;
+ return false;
+ }
+
+ // Show the right description
+ pkgRecords Recs(*GCache);
+ pkgCache::DescIterator Desc = V.TranslatedDescription();
+ pkgRecords::Parser &P = Recs.Lookup(Desc.FileList());
+ cout << "Description" << ( (strcmp(Desc.LanguageCode(),"") != 0) ? "-" : "" ) << Desc.LanguageCode() << ": " << P.LongDesc();
+
+ // Find the first field after the description (if there is any)
+ for(DescP++;DescP != &Buffer[V.FileList()->Size];DescP++)
+ {
+ if(*DescP == '\n' && *(DescP+1) != ' ')
+ {
+ // write the rest of the buffer
+ const unsigned char *end=&Buffer[V.FileList()->Size];
+ if (fwrite(DescP,1,end-DescP,stdout) < (size_t)(end-DescP))
+ {
+ delete [] Buffer;
+ return false;
+ }
+
+ break;
+ }
+ }
+ // write a final newline (after the description)
+ cout<<endl;
delete [] Buffer;
return true;
// Search - Perform a search /*{{{*/
// ---------------------------------------------------------------------
/* This searches the package names and pacakge descriptions for a pattern */
-struct ExVerFile
+struct ExDescFile
{
- pkgCache::VerFile *Vf;
+ pkgCache::DescFile *Df;
bool NameMatch;
};
return false;
}
- ExVerFile *VFList = new ExVerFile[Cache.HeaderP->PackageCount+1];
- memset(VFList,0,sizeof(*VFList)*Cache.HeaderP->PackageCount+1);
+ ExDescFile *DFList = new ExDescFile[Cache.HeaderP->PackageCount+1];
+ memset(DFList,0,sizeof(*DFList)*Cache.HeaderP->PackageCount+1);
// Map versions that we want to write out onto the VerList array.
for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
{
- VFList[P->ID].NameMatch = NumPatterns != 0;
+ DFList[P->ID].NameMatch = NumPatterns != 0;
for (unsigned I = 0; I != NumPatterns; I++)
{
if (regexec(&Patterns[I],P.Name(),0,0,0) == 0)
- VFList[P->ID].NameMatch &= true;
+ DFList[P->ID].NameMatch &= true;
else
- VFList[P->ID].NameMatch = false;
+ DFList[P->ID].NameMatch = false;
}
// Doing names only, drop any that dont match..
- if (NamesOnly == true && VFList[P->ID].NameMatch == false)
+ if (NamesOnly == true && DFList[P->ID].NameMatch == false)
continue;
// Find the proper version to use.
pkgCache::VerIterator V = Plcy.GetCandidateVer(P);
if (V.end() == false)
- VFList[P->ID].Vf = V.FileList();
+ DFList[P->ID].Df = V.DescriptionList().FileList();
}
// Include all the packages that provide matching names too
for (pkgCache::PkgIterator P = Cache.PkgBegin(); P.end() == false; P++)
{
- if (VFList[P->ID].NameMatch == false)
+ if (DFList[P->ID].NameMatch == false)
continue;
for (pkgCache::PrvIterator Prv = P.ProvidesList() ; Prv.end() == false; Prv++)
pkgCache::VerIterator V = Plcy.GetCandidateVer(Prv.OwnerPkg());
if (V.end() == false)
{
- VFList[Prv.OwnerPkg()->ID].Vf = V.FileList();
- VFList[Prv.OwnerPkg()->ID].NameMatch = true;
+ DFList[Prv.OwnerPkg()->ID].Df = V.DescriptionList().FileList();
+ DFList[Prv.OwnerPkg()->ID].NameMatch = true;
}
}
}
-
- LocalitySort(&VFList->Vf,Cache.HeaderP->PackageCount,sizeof(*VFList));
+
+ LocalitySort(&DFList->Df,Cache.HeaderP->PackageCount,sizeof(*DFList));
// Iterate over all the version records and check them
- for (ExVerFile *J = VFList; J->Vf != 0; J++)
+ for (ExDescFile *J = DFList; J->Df != 0; J++)
{
- pkgRecords::Parser &P = Recs.Lookup(pkgCache::VerFileIterator(Cache,J->Vf));
+ pkgRecords::Parser &P = Recs.Lookup(pkgCache::DescFileIterator(Cache,J->Df));
bool Match = true;
if (J->NameMatch == false)
}
}
- delete [] VFList;
+ delete [] DFList;
for (unsigned I = 0; I != NumPatterns; I++)
regfree(&Patterns[I]);
if (ferror(stdout))
AC_PATH_PROG(DEBIANDOC_HTML,debiandoc2html)
AC_PATH_PROG(DEBIANDOC_TEXT,debiandoc2text)
+dnl Check for doxygen
+AC_PATH_PROG(DOXYGEN, doxygen)
+
dnl Check for the SGML tools needed to build man pages
AC_PATH_PROG(DOCBOOK2MAN,docbook2man)
dnl Check for the XML tools needed to build man pages
AC_PATH_PROG(XMLTO,xmlto)
+dnl Check for graphviz
+AC_CHECK_PROG([HAVE_DOT], [dot], [YES], [NO])
+AC_PATH_PROG([DOT], [dot], [])
+DOTDIR=$(dirname $DOT)
+AC_SUBST(DOTDIR)
+
dnl Check for YODL
dnl AC_CHECK_PROG(YODL_MAN,yodl2man,"yes","")
AC_SUBST(USE_NLS)
AC_PATH_PROG(BASH, bash)
-AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in,make -s dirs)
+AC_OUTPUT(environment.mak:buildlib/environment.mak.in makefile:buildlib/makefile.in doc/Doxyfile,make -s dirs)
+apt (0.6.43.2exp1) experimental; urgency=low
+
+ * added support for package index diffs
+ * added support for i18n of the package descriptions
+ * synced with the apt--debian-sid--0 branch
+ * build from mvo@debian.org--2005/apt--debian-experimental--0
+ (from http://people.debian.org/~mvo/arch)
+
+ -- Michael Vogt <mvo@debian.org> Thu, 12 Jan 2006 23:40:32 +0100
+
apt (0.6.43.2) unstable; urgency=low
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-159:
* cmdline/apt-cdrom.cc:
- fix some missing gettext() calls (closes: #334539)
* doc/apt-cache.8.xml: fix typo (closes: #334714)
-
+
-- Michael Vogt <mvo@debian.org> Wed, 19 Oct 2005 22:02:09 +0200
apt (0.6.41) unstable; urgency=low
-- Matt Zimmerman <mdz@debian.org> Sat, 25 Jun 2005 09:51:00 -0700
+>>>>>>> MERGE-SOURCE
apt (0.6.37) breezy; urgency=low
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-81
--- /dev/null
+# Doxyfile 1.4.5
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = @PACKAGE@
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER = @VERSION@
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ../build/doc/doxygen
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = NO
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
+# include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = NO
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = NO
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = NO
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = YES
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is YES.
+
+SHOW_DIRECTORIES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = ../apt-pkg
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py
+
+FILE_PATTERNS = *.cc \
+ *.h
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = @HAVE_DOT@
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH = @DOTDIR@
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
doc.pl: %.pl:
$(MAKE) -C pl $*
+
+ifdef DOXYGEN
+DOXYGEN_SOURCES = $(shell find $(BASE)/apt-pkg -not -name .\\\#* -and \( -name \*.cc -or -name \*.h \) )
+
+clean: doxygen-clean
+
+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
+ $(DOXYGEN) $(BUILD)/doc/Doxyfile
+ touch $(BUILD)/doc/doxygen-stamp
+
+doc: $(BUILD)/doc/doxygen-stamp
+
+endif
unsigned long TimeOut = 120;
bool Debug = false;
-
unsigned long CircleBuf::BwReadLimit=0;
unsigned long CircleBuf::BwTickReadData=0;
struct timeval CircleBuf::BwReadTick={0,0};
BIN := $(BIN)/methods
# FIXME..
-LIB_APT_PKG_MAJOR = 3.11
+LIB_APT_PKG_MAJOR = 4.0
APT_DOMAIN := libapt-pkg$(LIB_APT_PKG_MAJOR)
# The file method
SOURCE = ftp.cc rfc2553emu.cc connect.cc
include $(PROGRAM_H)
+# The rred method
+PROGRAM=rred
+SLIBS = -lapt-pkg $(SOCKETLIBS)
+LIB_MAKES = apt-pkg/makefile
+SOURCE = rred.cc
+include $(PROGRAM_H)
+
# The rsh method
PROGRAM=rsh
SLIBS = -lapt-pkg
--- /dev/null
+#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 <sys/stat.h>
+#include <unistd.h>
+#include <utime.h>
+#include <stdio.h>
+#include <errno.h>
+#include <apti18n.h>
+
+/* this method implements a patch functionality similar to "patch --ed" that is
+ * used by the "tiffany" incremental packages download stuff. it differs from
+ * "ed" insofar that it is way more restricted (and therefore secure). in the
+ * moment only the "c", "a" and "d" commands of ed are implemented (diff
+ * doesn't output any other). additionally the records must be reverse sorted
+ * by line number and may not overlap (diff *seems* to produce this kind of
+ * output).
+ * */
+
+const char *Prog;
+
+class RredMethod : public pkgAcqMethod
+{
+ bool Debug;
+ // the size of this doesn't really matter (except for performance)
+ const static int BUF_SIZE = 1024;
+ // the ed commands
+ enum Mode {MODE_CHANGED, MODE_DELETED, MODE_ADDED};
+ // return values
+ enum State {ED_OK, ED_ORDERING, ED_PARSER, ED_FAILURE};
+ // this applies a single hunk, it uses a tail recursion to
+ // reverse the hunks in the file
+ int ed_rec(FILE *ed_cmds, FILE *in_file, FILE *out_file, int line,
+ char *buffer, unsigned int bufsize, Hashes *hash);
+ // apply a patch file
+ int ed_file(FILE *ed_cmds, FILE *in_file, FILE *out_file, Hashes *hash);
+ // the methods main method
+ virtual bool Fetch(FetchItem *Itm);
+
+ public:
+
+ RredMethod() : pkgAcqMethod("1.1",SingleInstance | SendConfig) {};
+};
+
+int RredMethod::ed_rec(FILE *ed_cmds, FILE *in_file, FILE *out_file, int line,
+ char *buffer, unsigned int bufsize, Hashes *hash) {
+ int pos;
+ int startline;
+ int stopline;
+ int mode;
+ int written;
+ char *idx;
+
+ /* get the current command and parse it*/
+ if (fgets(buffer, bufsize, ed_cmds) == NULL) {
+ return line;
+ }
+ startline = strtol(buffer, &idx, 10);
+ if (startline < line) {
+ return ED_ORDERING;
+ }
+ if (*idx == ',') {
+ idx++;
+ stopline = strtol(idx, &idx, 10);
+ }
+ else {
+ stopline = startline;
+ }
+ if (*idx == 'c') {
+ mode = MODE_CHANGED;
+ if (Debug == true) {
+ std::clog << "changing from line " << startline
+ << " to " << stopline << std::endl;
+ }
+ }
+ else if (*idx == 'a') {
+ mode = MODE_ADDED;
+ if (Debug == true) {
+ std::clog << "adding after line " << startline << std::endl;
+ }
+ }
+ else if (*idx == 'd') {
+ mode = MODE_DELETED;
+ if (Debug == true) {
+ std::clog << "deleting from line " << startline
+ << " to " << stopline << std::endl;
+ }
+ }
+ else {
+ return ED_PARSER;
+ }
+ /* get the current position */
+ pos = ftell(ed_cmds);
+ /* if this is add or change then go to the next full stop */
+ if ((mode == MODE_CHANGED) || (mode == MODE_ADDED)) {
+ do {
+ fgets(buffer, bufsize, ed_cmds);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, ed_cmds);
+ buffer[0] = ' ';
+ }
+ } while (strncmp(buffer, ".", 1) != 0);
+ }
+ /* do the recursive call */
+ line = ed_rec(ed_cmds, in_file, out_file, line, buffer, bufsize,
+ hash);
+ /* pass on errors */
+ if (line < 0) {
+ return line;
+ }
+ /* apply our hunk */
+ fseek(ed_cmds, pos, SEEK_SET);
+ /* first wind to the current position */
+ if (mode != MODE_ADDED) {
+ startline -= 1;
+ }
+ while (line < startline) {
+ fgets(buffer, bufsize, in_file);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, in_file);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ line++;
+ }
+ /* include from ed script */
+ if ((mode == MODE_ADDED) || (mode == MODE_CHANGED)) {
+ do {
+ fgets(buffer, bufsize, ed_cmds);
+ if (strncmp(buffer, ".", 1) != 0) {
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, ed_cmds);
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ }
+ else {
+ break;
+ }
+ } while (1);
+ }
+ /* ignore the corresponding number of lines from input */
+ if ((mode == MODE_DELETED) || (mode == MODE_CHANGED)) {
+ while (line < stopline) {
+ fgets(buffer, bufsize, in_file);
+ while ((strlen(buffer) == (bufsize - 1))
+ && (buffer[bufsize - 2] != '\n')) {
+ fgets(buffer, bufsize, in_file);
+ }
+ line++;
+ }
+ }
+ return line;
+}
+
+int RredMethod::ed_file(FILE *ed_cmds, FILE *in_file, FILE *out_file,
+ Hashes *hash) {
+ char buffer[BUF_SIZE];
+ int result;
+ int written;
+
+ /* we do a tail recursion to read the commands in the right order */
+ result = ed_rec(ed_cmds, in_file, out_file, 0, buffer, BUF_SIZE,
+ hash);
+
+ /* read the rest from infile */
+ if (result > 0) {
+ while (fgets(buffer, BUF_SIZE, in_file) != NULL) {
+ written = fwrite(buffer, 1, strlen(buffer), out_file);
+ hash->Add((unsigned char*)buffer, written);
+ }
+ }
+ else {
+ return ED_FAILURE;
+ }
+ return ED_OK;
+}
+
+
+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
+ // Path contains the filename to patch
+ FetchResult Res;
+ Res.Filename = Itm->DestFile;
+ URIStart(Res);
+ // Res.Filename the destination filename
+
+ if (Debug == true)
+ std::clog << "Patching " << Path << " with " << Path
+ << ".ed and putting result into " << Itm->DestFile << std::endl;
+ // 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::ReadOnly);
+ FileFd To(Itm->DestFile,FileFd::WriteEmpty);
+ To.EraseOnFailure();
+ if (_error->PendingError() == true)
+ return false;
+
+ Hashes Hash;
+ FILE* fFrom = fdopen(From.Fd(), "r");
+ FILE* fPatch = fdopen(Patch.Fd(), "r");
+ FILE* fTo = fdopen(To.Fd(), "w");
+ // now do the actual patching
+ if (ed_file(fPatch, fFrom, fTo, &Hash) != ED_OK) {
+ _error->Errno("rred", _("Could not patch file"));
+ return false;
+ }
+
+ // write out the result
+ fflush(fFrom);
+ fflush(fPatch);
+ fflush(fTo);
+ From.Close();
+ Patch.Close();
+ To.Close();
+
+ // Transfer the modification times
+ struct stat Buf;
+ if (stat(Path.c_str(),&Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ struct utimbuf TimeBuf;
+ TimeBuf.actime = Buf.st_atime;
+ TimeBuf.modtime = Buf.st_mtime;
+ if (utime(Itm->DestFile.c_str(),&TimeBuf) != 0)
+ return _error->Errno("utime",_("Failed to set modification time"));
+
+ if (stat(Itm->DestFile.c_str(),&Buf) != 0)
+ return _error->Errno("stat",_("Failed to stat"));
+
+ // return done
+ Res.LastModified = Buf.st_mtime;
+ Res.Size = Buf.st_size;
+ Res.TakeHashes(Hash);
+ URIDone(Res);
+
+ return true;
+}
+
+int main(int argc, char *argv[])
+{
+ RredMethod Mth;
+
+ Prog = strrchr(argv[0],'/');
+ Prog++;
+
+ return Mth.Run();
+}
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:51+0100\n"
+"POT-Creation-Date: 2005-10-17 19:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: cmdline/apt-cache.cc:135
+#: cmdline/apt-cache.cc:141
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr ""
-#: cmdline/apt-cache.cc:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615
-#: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357
-#: cmdline/apt-cache.cc:1508
+#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:638
+#: cmdline/apt-cache.cc:794 cmdline/apt-cache.cc:1012
+#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
#, c-format
msgid "Unable to locate package %s"
msgstr ""
-#: cmdline/apt-cache.cc:232
+#: cmdline/apt-cache.cc:245
msgid "Total package names : "
msgstr ""
-#: cmdline/apt-cache.cc:272
+#: cmdline/apt-cache.cc:285
msgid " Normal packages: "
msgstr ""
-#: cmdline/apt-cache.cc:273
+#: cmdline/apt-cache.cc:286
msgid " Pure virtual packages: "
msgstr ""
-#: cmdline/apt-cache.cc:274
+#: cmdline/apt-cache.cc:287
msgid " Single virtual packages: "
msgstr ""
-#: cmdline/apt-cache.cc:275
+#: cmdline/apt-cache.cc:288
msgid " Mixed virtual packages: "
msgstr ""
-#: cmdline/apt-cache.cc:276
+#: cmdline/apt-cache.cc:289
msgid " Missing: "
msgstr ""
-#: cmdline/apt-cache.cc:278
+#: cmdline/apt-cache.cc:291
msgid "Total distinct versions: "
msgstr ""
-#: cmdline/apt-cache.cc:280
+#: cmdline/apt-cache.cc:293
+msgid "Total Distinct Descriptions: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:295
msgid "Total dependencies: "
msgstr ""
-#: cmdline/apt-cache.cc:283
+#: cmdline/apt-cache.cc:298
msgid "Total ver/file relations: "
msgstr ""
-#: cmdline/apt-cache.cc:285
+#: cmdline/apt-cache.cc:300
+msgid "Total Desc/File relations: "
+msgstr ""
+
+#: cmdline/apt-cache.cc:302
msgid "Total Provides mappings: "
msgstr ""
-#: cmdline/apt-cache.cc:297
+#: cmdline/apt-cache.cc:314
msgid "Total globbed strings: "
msgstr ""
-#: cmdline/apt-cache.cc:311
+#: cmdline/apt-cache.cc:328
msgid "Total dependency version space: "
msgstr ""
-#: cmdline/apt-cache.cc:316
+#: cmdline/apt-cache.cc:333
msgid "Total slack space: "
msgstr ""
-#: cmdline/apt-cache.cc:324
+#: cmdline/apt-cache.cc:341
msgid "Total space accounted for: "
msgstr ""
-#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
+#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1212
#, c-format
msgid "Package file %s is out of sync."
msgstr ""
-#: cmdline/apt-cache.cc:1231
+#: cmdline/apt-cache.cc:1293
msgid "You must give exactly one pattern"
msgstr ""
-#: cmdline/apt-cache.cc:1385
+#: cmdline/apt-cache.cc:1447
msgid "No packages found"
msgstr ""
-#: cmdline/apt-cache.cc:1462
+#: cmdline/apt-cache.cc:1524
msgid "Package files:"
msgstr ""
-#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
+#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
msgid "Cache is out of sync, can't x-ref a package file"
msgstr ""
-#: cmdline/apt-cache.cc:1470
+#: cmdline/apt-cache.cc:1532
#, c-format
msgid "%4i %s\n"
msgstr ""
#. Show any packages have explicit pins
-#: cmdline/apt-cache.cc:1482
+#: cmdline/apt-cache.cc:1544
msgid "Pinned packages:"
msgstr ""
-#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
+#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
msgid "(not found)"
msgstr ""
#. Installed version
-#: cmdline/apt-cache.cc:1515
+#: cmdline/apt-cache.cc:1577
msgid " Installed: "
msgstr ""
-#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
+#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
msgid "(none)"
msgstr ""
#. Candidate Version
-#: cmdline/apt-cache.cc:1522
+#: cmdline/apt-cache.cc:1584
msgid " Candidate: "
msgstr ""
-#: cmdline/apt-cache.cc:1532
+#: cmdline/apt-cache.cc:1594
msgid " Package pin: "
msgstr ""
#. Show the priority tables
-#: cmdline/apt-cache.cc:1541
+#: cmdline/apt-cache.cc:1603
msgid " Version table:"
msgstr ""
-#: cmdline/apt-cache.cc:1556
+#: cmdline/apt-cache.cc:1618
#, c-format
msgid " %4i %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1713 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2325 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1720
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
"See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
msgstr ""
-#: cmdline/apt-cdrom.cc:78
-msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr ""
-
-#: cmdline/apt-cdrom.cc:93
-msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-
-#: cmdline/apt-cdrom.cc:117
-msgid "Repeat this process for the rest of the CDs in your set."
-msgstr ""
-
#: cmdline/apt-config.cc:41
msgid "Arguments not in pairs"
msgstr ""
" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
msgstr ""
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:815
#, c-format
msgid "Unable to write to %s"
msgstr ""
msgid "Archive had no package field"
msgstr ""
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
+#: ftparchive/writer.cc:394 ftparchive/writer.cc:602
#, c-format
msgid " %s has no override entry\n"
msgstr ""
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
+#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
#, c-format
msgid " %s maintainer is %s not %s\n"
msgstr ""
msgid "Failed to rename %s to %s"
msgstr ""
-#: cmdline/apt-get.cc:120
+#: cmdline/apt-get.cc:118
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1486
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
-#: cmdline/apt-get.cc:237
+#: cmdline/apt-get.cc:235
msgid "The following packages have unmet dependencies:"
msgstr ""
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:325
#, c-format
msgid "but %s is installed"
msgstr ""
-#: cmdline/apt-get.cc:329
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is to be installed"
msgstr ""
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:334
msgid "but it is not installable"
msgstr ""
-#: cmdline/apt-get.cc:338
+#: cmdline/apt-get.cc:336
msgid "but it is a virtual package"
msgstr ""
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not installed"
msgstr ""
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not going to be installed"
msgstr ""
-#: cmdline/apt-get.cc:346
+#: cmdline/apt-get.cc:344
msgid " or"
msgstr ""
-#: cmdline/apt-get.cc:375
+#: cmdline/apt-get.cc:373
msgid "The following NEW packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:401
+#: cmdline/apt-get.cc:399
msgid "The following packages will be REMOVED:"
msgstr ""
-#: cmdline/apt-get.cc:423
+#: cmdline/apt-get.cc:421
msgid "The following packages have been kept back:"
msgstr ""
-#: cmdline/apt-get.cc:444
+#: cmdline/apt-get.cc:442
msgid "The following packages will be upgraded:"
msgstr ""
-#: cmdline/apt-get.cc:465
+#: cmdline/apt-get.cc:463
msgid "The following packages will be DOWNGRADED:"
msgstr ""
-#: cmdline/apt-get.cc:485
+#: cmdline/apt-get.cc:483
msgid "The following held packages will be changed:"
msgstr ""
-#: cmdline/apt-get.cc:538
+#: cmdline/apt-get.cc:536
#, c-format
msgid "%s (due to %s) "
msgstr ""
-#: cmdline/apt-get.cc:546
+#: cmdline/apt-get.cc:544
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:577
+#: cmdline/apt-get.cc:575
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr ""
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:579
#, c-format
msgid "%lu reinstalled, "
msgstr ""
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu downgraded, "
msgstr ""
-#: cmdline/apt-get.cc:585
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr ""
-#: cmdline/apt-get.cc:589
+#: cmdline/apt-get.cc:587
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr ""
-#: cmdline/apt-get.cc:649
+#: cmdline/apt-get.cc:647
msgid "Correcting dependencies..."
msgstr ""
-#: cmdline/apt-get.cc:652
+#: cmdline/apt-get.cc:650
msgid " failed."
msgstr ""
-#: cmdline/apt-get.cc:655
+#: cmdline/apt-get.cc:653
msgid "Unable to correct dependencies"
msgstr ""
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr ""
-#: cmdline/apt-get.cc:660
+#: cmdline/apt-get.cc:658
msgid " Done"
msgstr ""
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:662
msgid "You might want to run `apt-get -f install' to correct these."
msgstr ""
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid "Unmet dependencies. Try using -f."
msgstr ""
-#: cmdline/apt-get.cc:689
+#: cmdline/apt-get.cc:687
msgid "WARNING: The following packages cannot be authenticated!"
msgstr ""
-#: cmdline/apt-get.cc:693
+#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
msgstr ""
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr ""
-#: cmdline/apt-get.cc:702
+#: cmdline/apt-get.cc:700
msgid "Some packages could not be authenticated"
msgstr ""
-#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
+#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
msgid "There are problems and -y was used without --force-yes"
msgstr ""
-#: cmdline/apt-get.cc:755
+#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr ""
-#: cmdline/apt-get.cc:764
+#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr ""
-#: cmdline/apt-get.cc:775
+#: cmdline/apt-get.cc:773
msgid "Internal error, Ordering didn't finish"
msgstr ""
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:2073
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr ""
-#: cmdline/apt-get.cc:816
+#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:819
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:824
+#: cmdline/apt-get.cc:822
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr ""
-#: cmdline/apt-get.cc:832
+#: cmdline/apt-get.cc:830
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
#, c-format
msgid "Couldn't determine free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:847
#, c-format
msgid "You don't have enough free space in %s."
msgstr ""
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
+#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882
msgid "Trivial Only specified but this is not a trivial operation."
msgstr ""
-#: cmdline/apt-get.cc:866
+#: cmdline/apt-get.cc:864
msgid "Yes, do as I say!"
msgstr ""
-#: cmdline/apt-get.cc:868
+#: cmdline/apt-get.cc:866
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
" ?] "
msgstr ""
-#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr ""
-#: cmdline/apt-get.cc:889
+#: cmdline/apt-get.cc:887
msgid "Do you want to continue [Y/n]? "
msgstr ""
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1336 cmdline/apt-get.cc:1970
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
-#: cmdline/apt-get.cc:979
+#: cmdline/apt-get.cc:977
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:1979
msgid "Download complete and in download only mode"
msgstr ""
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:984
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
msgstr ""
-#: cmdline/apt-get.cc:990
+#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
msgstr ""
-#: cmdline/apt-get.cc:995
+#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
msgstr ""
-#: cmdline/apt-get.cc:996
+#: cmdline/apt-get.cc:994
msgid "Aborting install."
msgstr ""
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1028
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1040
+#: cmdline/apt-get.cc:1038
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
-#: cmdline/apt-get.cc:1058
+#: cmdline/apt-get.cc:1056
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr ""
-#: cmdline/apt-get.cc:1069
+#: cmdline/apt-get.cc:1067
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr ""
-#: cmdline/apt-get.cc:1081
+#: cmdline/apt-get.cc:1079
msgid " [Installed]"
msgstr ""
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1084
msgid "You should explicitly select one to install."
msgstr ""
-#: cmdline/apt-get.cc:1091
+#: cmdline/apt-get.cc:1089
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
"is only available from another source\n"
msgstr ""
-#: cmdline/apt-get.cc:1110
+#: cmdline/apt-get.cc:1108
msgid "However the following packages replace it:"
msgstr ""
-#: cmdline/apt-get.cc:1113
+#: cmdline/apt-get.cc:1111
#, c-format
msgid "Package %s has no installation candidate"
msgstr ""
-#: cmdline/apt-get.cc:1133
+#: cmdline/apt-get.cc:1131
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
-#: cmdline/apt-get.cc:1141
+#: cmdline/apt-get.cc:1139
#, c-format
msgid "%s is already the newest version.\n"
msgstr ""
-#: cmdline/apt-get.cc:1168
+#: cmdline/apt-get.cc:1166
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1176
+#: cmdline/apt-get.cc:1174
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1284
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1297 cmdline/apt-get.cc:1391
msgid "Unable to lock the list directory"
msgstr ""
-#: cmdline/apt-get.cc:1384
+#: cmdline/apt-get.cc:1355
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
msgstr ""
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1374
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1473 cmdline/apt-get.cc:1509
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1496
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1526
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1529
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
msgstr ""
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1541
msgid ""
"Some packages could not be installed. This may mean that you have\n"
"requested an impossible situation or if you are using the unstable\n"
"or been moved out of Incoming."
msgstr ""
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1549
msgid ""
"Since you only requested a single operation it is extremely likely that\n"
"the package is simply not installable and a bug report against\n"
"that package should be filed."
msgstr ""
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1554
msgid "The following information may help to resolve the situation:"
msgstr ""
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1557
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1583
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1654
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1655
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1675
msgid "Calculating upgrade... "
msgstr ""
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1678 methods/ftp.cc:702 methods/connect.cc:101
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1683
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
msgid "Internal error, problem resolver broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1883 cmdline/apt-get.cc:2091
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:1959
-#, c-format
-msgid "Skiping already downloaded file '%s'\n"
-msgstr ""
-
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1930
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1935
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1938
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1944
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:1975
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2003
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2015
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2033
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2052
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2068
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2096
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2116
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2168
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2220
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"package %s can satisfy version requirements"
msgstr ""
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2255
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2280
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2294
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2298
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2330
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2371
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
msgid "Failed to write file %s"
msgstr ""
-#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
+#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgid "Failed to close file %s"
msgstr ""
msgstr ""
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
#, c-format
msgid "Unable to read %s"
msgstr ""
msgstr ""
#. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
-#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
-#: apt-pkg/pkgcachegen.cc:840
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:748
+#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822
+#: apt-pkg/pkgcachegen.cc:945
msgid "Reading package lists"
msgstr ""
msgstr ""
#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
-#: methods/gzip.cc:142
+#: methods/gzip.cc:142 methods/rred.cc:234 methods/rred.cc:243
msgid "Failed to stat"
msgstr ""
#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+#: methods/rred.cc:240
msgid "Failed to set modification time"
msgstr ""
msgid "Unable to accept connection"
msgstr ""
-#: methods/ftp.cc:864 methods/http.cc:963 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:921 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr ""
msgid "Read error from %s process"
msgstr ""
-#: methods/http.cc:381
+#: methods/http.cc:345
msgid "Waiting for headers"
msgstr ""
-#: methods/http.cc:527
+#: methods/http.cc:491
#, c-format
msgid "Got a single header line over %u chars"
msgstr ""
-#: methods/http.cc:535
+#: methods/http.cc:499
msgid "Bad header line"
msgstr ""
-#: methods/http.cc:554 methods/http.cc:561
+#: methods/http.cc:518 methods/http.cc:525
msgid "The HTTP server sent an invalid reply header"
msgstr ""
-#: methods/http.cc:590
+#: methods/http.cc:554
msgid "The HTTP server sent an invalid Content-Length header"
msgstr ""
-#: methods/http.cc:605
+#: methods/http.cc:569
msgid "The HTTP server sent an invalid Content-Range header"
msgstr ""
-#: methods/http.cc:607
+#: methods/http.cc:571
msgid "This HTTP server has broken range support"
msgstr ""
-#: methods/http.cc:631
+#: methods/http.cc:595
msgid "Unknown date format"
msgstr ""
-#: methods/http.cc:778
+#: methods/http.cc:742
msgid "Select failed"
msgstr ""
-#: methods/http.cc:783
+#: methods/http.cc:747
msgid "Connection timed out"
msgstr ""
-#: methods/http.cc:806
+#: methods/http.cc:770
msgid "Error writing to output file"
msgstr ""
-#: methods/http.cc:837
+#: methods/http.cc:798
msgid "Error writing to file"
msgstr ""
-#: methods/http.cc:865
+#: methods/http.cc:823
msgid "Error writing to the file"
msgstr ""
-#: methods/http.cc:879
+#: methods/http.cc:837
msgid "Error reading from server. Remote end closed connection"
msgstr ""
-#: methods/http.cc:881
+#: methods/http.cc:839
msgid "Error reading from server"
msgstr ""
-#: methods/http.cc:1112
+#: methods/http.cc:1070
msgid "Bad header data"
msgstr ""
-#: methods/http.cc:1129
+#: methods/http.cc:1087
msgid "Connection failed"
msgstr ""
-#: methods/http.cc:1220
+#: methods/http.cc:1178
msgid "Internal error"
msgstr ""
msgid "Couldn't make mmap of %lu bytes"
msgstr ""
-#: apt-pkg/contrib/strutl.cc:938
+#: apt-pkg/contrib/strutl.cc:984
#, c-format
msgid "Selection %s not found"
msgstr ""
msgid "Unable to stat the mount point %s"
msgstr ""
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
+#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44
#, c-format
msgid "Unable to change to %s"
msgstr ""
msgid "Problem syncing the file"
msgstr ""
-#: apt-pkg/pkgcache.cc:126
+#: apt-pkg/pkgcache.cc:135
msgid "Empty package cache"
msgstr ""
-#: apt-pkg/pkgcache.cc:132
+#: apt-pkg/pkgcache.cc:141
msgid "The package cache file is corrupted"
msgstr ""
-#: apt-pkg/pkgcache.cc:137
+#: apt-pkg/pkgcache.cc:146
msgid "The package cache file is an incompatible version"
msgstr ""
-#: apt-pkg/pkgcache.cc:142
+#: apt-pkg/pkgcache.cc:151
#, c-format
msgid "This APT does not support the versioning system '%s'"
msgstr ""
-#: apt-pkg/pkgcache.cc:147
+#: apt-pkg/pkgcache.cc:156
msgid "The package cache was built for a different architecture"
msgstr ""
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Depends"
msgstr ""
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "PreDepends"
msgstr ""
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Suggests"
msgstr ""
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Recommends"
msgstr ""
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Conflicts"
msgstr ""
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Replaces"
msgstr ""
-#: apt-pkg/pkgcache.cc:220
+#: apt-pkg/pkgcache.cc:229
msgid "Obsoletes"
msgstr ""
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "important"
msgstr ""
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "required"
msgstr ""
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "standard"
msgstr ""
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "optional"
msgstr ""
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "extra"
msgstr ""
msgid "Unable to parse package file %s (2)"
msgstr ""
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:87
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr ""
-#: apt-pkg/sourcelist.cc:96
+#: apt-pkg/sourcelist.cc:89
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr ""
-#: apt-pkg/sourcelist.cc:99
+#: apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr ""
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr ""
-#: apt-pkg/sourcelist.cc:112
+#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr ""
-#: apt-pkg/sourcelist.cc:203
+#: apt-pkg/sourcelist.cc:156
#, c-format
msgid "Opening %s"
msgstr ""
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:450
#, c-format
msgid "Line %u too long in source list %s."
msgstr ""
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:187
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr ""
-#: apt-pkg/sourcelist.cc:244
+#: apt-pkg/sourcelist.cc:191
#, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr ""
-#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr ""
msgid "Archive directory %spartial is missing."
msgstr ""
-#: apt-pkg/acquire.cc:821
+#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
msgstr ""
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr ""
-#: apt-pkg/init.cc:120
+#: apt-pkg/init.cc:122
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr ""
-#: apt-pkg/init.cc:136
+#: apt-pkg/init.cc:138
msgid "Unable to determine a suitable packaging system type"
msgstr ""
msgid "Error occurred while processing %s (NewPackage)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:129
+#: apt-pkg/pkgcachegen.cc:132
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:150
+#: apt-pkg/pkgcachegen.cc:155
+#, c-format
+msgid "Error occured while processing %s (NewFileDesc1)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:180
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:154
+#: apt-pkg/pkgcachegen.cc:184
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:184
+#: apt-pkg/pkgcachegen.cc:215
#, c-format
msgid "Error occurred while processing %s (NewVersion1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:188
+#: apt-pkg/pkgcachegen.cc:219
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:192
+#: apt-pkg/pkgcachegen.cc:223
#, c-format
msgid "Error occurred while processing %s (NewVersion2)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:207
+#: apt-pkg/pkgcachegen.cc:247
+#, c-format
+msgid "Error occured while processing %s (NewFileDesc2)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:253
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:210
+#: apt-pkg/pkgcachegen.cc:256
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:213
+#: apt-pkg/pkgcachegen.cc:259
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:262
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:290
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:254
+#: apt-pkg/pkgcachegen.cc:303
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:260
+#: apt-pkg/pkgcachegen.cc:309
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:574
+#: apt-pkg/pkgcachegen.cc:679
#, c-format
msgid "Couldn't stat source package list %s"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:658
+#: apt-pkg/pkgcachegen.cc:763
msgid "Collecting File Provides"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897
msgid "IO Error saving source cache"
msgstr ""
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr ""
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:911
+#: apt-pkg/acquire-item.cc:391 apt-pkg/acquire-item.cc:635
+#: apt-pkg/acquire-item.cc:1336
msgid "MD5Sum mismatch"
msgstr ""
-#: apt-pkg/acquire-item.cc:719
+#: apt-pkg/acquire-item.cc:1150
#, 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:778
+#: apt-pkg/acquire-item.cc:1203
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"manually fix this package."
msgstr ""
-#: apt-pkg/acquire-item.cc:814
+#: apt-pkg/acquire-item.cc:1239
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
-#: apt-pkg/acquire-item.cc:901
+#: apt-pkg/acquire-item.cc:1326
msgid "Size mismatch"
msgstr ""
msgid "Vendor block %s contains no fingerprint"
msgstr ""
-#: apt-pkg/cdrom.cc:507
+#: apt-pkg/cdrom.cc:531
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Mounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
+#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622
msgid "Identifying.. "
msgstr ""
-#: apt-pkg/cdrom.cc:541
+#: apt-pkg/cdrom.cc:565
#, c-format
msgid "Stored label: %s \n"
msgstr ""
-#: apt-pkg/cdrom.cc:561
+#: apt-pkg/cdrom.cc:585
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr ""
-#: apt-pkg/cdrom.cc:579
+#: apt-pkg/cdrom.cc:603
msgid "Unmounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:583
+#: apt-pkg/cdrom.cc:607
msgid "Waiting for disc...\n"
msgstr ""
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:591
+#: apt-pkg/cdrom.cc:615
msgid "Mounting CD-ROM...\n"
msgstr ""
-#: apt-pkg/cdrom.cc:609
+#: apt-pkg/cdrom.cc:633
msgid "Scanning disc for index files..\n"
msgstr ""
-#: apt-pkg/cdrom.cc:647
+#: apt-pkg/cdrom.cc:673
#, c-format
-msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+msgid ""
+"Found %i package indexes, %i source indexes, %i translation indexes and %i "
+"signatures\n"
msgstr ""
-#: apt-pkg/cdrom.cc:710
+#: apt-pkg/cdrom.cc:737
msgid "That is not a valid name, try again.\n"
msgstr ""
-#: apt-pkg/cdrom.cc:726
+#: apt-pkg/cdrom.cc:753
#, c-format
msgid ""
"This disc is called: \n"
"'%s'\n"
msgstr ""
-#: apt-pkg/cdrom.cc:730
+#: apt-pkg/cdrom.cc:757
msgid "Copying package lists..."
msgstr ""
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:783
msgid "Writing new source list\n"
msgstr ""
-#: apt-pkg/cdrom.cc:763
+#: apt-pkg/cdrom.cc:792
msgid "Source list entries for this disc are:\n"
msgstr ""
-#: apt-pkg/cdrom.cc:803
+#: apt-pkg/cdrom.cc:832
msgid "Unmounting CD-ROM..."
msgstr ""
-#: apt-pkg/indexcopy.cc:261
+#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
#, c-format
msgid "Wrote %i records.\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:263
+#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:266
+#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:269
+#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
msgid "Removed with config %s"
msgstr ""
+#: methods/rred.cc:219
+msgid "Could not patch file"
+msgstr ""
+
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr ""
msgstr ""
"Project-Id-Version: apt 0.5.26\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:51+0100\n"
+"POT-Creation-Date: 2005-10-17 19:31+0200\n"
"PO-Revision-Date: 2004-05-06 15:25+0100\n"
"Last-Translator: Safir Šećerović <sapphire@linux.org.ba>\n"
"Language-Team: Bosnian <lokal@lugbih.org>\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: cmdline/apt-cache.cc:135
+#: cmdline/apt-cache.cc:141
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr "Paket %s verzije %s ima nezadovoljenu zavisnost:\n"
-#: cmdline/apt-cache.cc:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615
-#: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357
-#: cmdline/apt-cache.cc:1508
+#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:638
+#: cmdline/apt-cache.cc:794 cmdline/apt-cache.cc:1012
+#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
#, c-format
msgid "Unable to locate package %s"
msgstr "Ne mogu pronaći paket %s"
-#: cmdline/apt-cache.cc:232
+#: cmdline/apt-cache.cc:245
msgid "Total package names : "
msgstr "Ukupno naziva paketa:"
-#: cmdline/apt-cache.cc:272
+#: cmdline/apt-cache.cc:285
msgid " Normal packages: "
msgstr " Normalni paketi:"
-#: cmdline/apt-cache.cc:273
+#: cmdline/apt-cache.cc:286
msgid " Pure virtual packages: "
msgstr " Čisto virtuelni paketi:"
-#: cmdline/apt-cache.cc:274
+#: cmdline/apt-cache.cc:287
msgid " Single virtual packages: "
msgstr " Pojedinačni virutuelni paketi:"
-#: cmdline/apt-cache.cc:275
+#: cmdline/apt-cache.cc:288
msgid " Mixed virtual packages: "
msgstr " Miješani virtuelni paketi:"
-#: cmdline/apt-cache.cc:276
+#: cmdline/apt-cache.cc:289
msgid " Missing: "
msgstr " Nedostajući:"
-#: cmdline/apt-cache.cc:278
+#: cmdline/apt-cache.cc:291
msgid "Total distinct versions: "
msgstr "Ukupno različitih verzija:"
-#: cmdline/apt-cache.cc:280
+#: cmdline/apt-cache.cc:293
+#, fuzzy
+msgid "Total Distinct Descriptions: "
+msgstr "Ukupno različitih verzija:"
+
+#: cmdline/apt-cache.cc:295
msgid "Total dependencies: "
msgstr "Ukupno zavisnosti:"
-#: cmdline/apt-cache.cc:283
+#: cmdline/apt-cache.cc:298
msgid "Total ver/file relations: "
msgstr "Ukupno Verzija/Datoteka odnosa:"
-#: cmdline/apt-cache.cc:285
+#: cmdline/apt-cache.cc:300
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Ukupno Verzija/Datoteka odnosa:"
+
+#: cmdline/apt-cache.cc:302
msgid "Total Provides mappings: "
msgstr ""
-#: cmdline/apt-cache.cc:297
+#: cmdline/apt-cache.cc:314
msgid "Total globbed strings: "
msgstr ""
-#: cmdline/apt-cache.cc:311
+#: cmdline/apt-cache.cc:328
msgid "Total dependency version space: "
msgstr ""
-#: cmdline/apt-cache.cc:316
+#: cmdline/apt-cache.cc:333
msgid "Total slack space: "
msgstr ""
-#: cmdline/apt-cache.cc:324
+#: cmdline/apt-cache.cc:341
msgid "Total space accounted for: "
msgstr ""
-#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
+#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1212
#, c-format
msgid "Package file %s is out of sync."
msgstr ""
-#: cmdline/apt-cache.cc:1231
+#: cmdline/apt-cache.cc:1293
msgid "You must give exactly one pattern"
msgstr ""
-#: cmdline/apt-cache.cc:1385
+#: cmdline/apt-cache.cc:1447
msgid "No packages found"
msgstr "Paketi nisu pronađeni"
-#: cmdline/apt-cache.cc:1462
+#: cmdline/apt-cache.cc:1524
msgid "Package files:"
msgstr "Datoteke paketa:"
-#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
+#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
msgid "Cache is out of sync, can't x-ref a package file"
msgstr ""
-#: cmdline/apt-cache.cc:1470
+#: cmdline/apt-cache.cc:1532
#, c-format
msgid "%4i %s\n"
msgstr ""
#. Show any packages have explicit pins
-#: cmdline/apt-cache.cc:1482
+#: cmdline/apt-cache.cc:1544
msgid "Pinned packages:"
msgstr ""
-#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
+#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
msgid "(not found)"
msgstr ""
#. Installed version
-#: cmdline/apt-cache.cc:1515
+#: cmdline/apt-cache.cc:1577
msgid " Installed: "
msgstr " Instalirano:"
-#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
+#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
msgid "(none)"
msgstr ""
#. Candidate Version
-#: cmdline/apt-cache.cc:1522
+#: cmdline/apt-cache.cc:1584
msgid " Candidate: "
msgstr ""
-#: cmdline/apt-cache.cc:1532
+#: cmdline/apt-cache.cc:1594
msgid " Package pin: "
msgstr ""
#. Show the priority tables
-#: cmdline/apt-cache.cc:1541
+#: cmdline/apt-cache.cc:1603
msgid " Version table:"
msgstr ""
-#: cmdline/apt-cache.cc:1556
+#: cmdline/apt-cache.cc:1618
#, c-format
msgid " %4i %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1713 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2325 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1720
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
"See the apt-cache(8) and apt.conf(5) manual pages for more information.\n"
msgstr ""
-#: cmdline/apt-cdrom.cc:78
-msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr ""
-
-#: cmdline/apt-cdrom.cc:93
-msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-
-#: cmdline/apt-cdrom.cc:117
-msgid "Repeat this process for the rest of the CDs in your set."
-msgstr ""
-
#: cmdline/apt-config.cc:41
msgid "Arguments not in pairs"
msgstr "Argumenti nisu u parovima"
" -o=? Set an arbitrary configuration option, eg -o dir::cache=/tmp\n"
msgstr ""
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:815
#, c-format
msgid "Unable to write to %s"
msgstr "Ne mogu zapisati na %s"
msgid "Archive had no package field"
msgstr ""
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
+#: ftparchive/writer.cc:394 ftparchive/writer.cc:602
#, c-format
msgid " %s has no override entry\n"
msgstr ""
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
+#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
#, c-format
msgid " %s maintainer is %s not %s\n"
msgstr ""
msgid "Failed to rename %s to %s"
msgstr ""
-#: cmdline/apt-get.cc:120
+#: cmdline/apt-get.cc:118
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1486
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
-#: cmdline/apt-get.cc:237
+#: cmdline/apt-get.cc:235
msgid "The following packages have unmet dependencies:"
msgstr ""
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:325
#, c-format
msgid "but %s is installed"
msgstr "ali je %s instaliran"
-#: cmdline/apt-get.cc:329
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is to be installed"
msgstr "ali se %s treba instalirati"
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:334
msgid "but it is not installable"
msgstr "ali se ne može instalirati"
-#: cmdline/apt-get.cc:338
+#: cmdline/apt-get.cc:336
msgid "but it is a virtual package"
msgstr "ali je virtuelni paket"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not installed"
msgstr "ali nije instaliran"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not going to be installed"
msgstr "ali se neće instalirati"
-#: cmdline/apt-get.cc:346
+#: cmdline/apt-get.cc:344
msgid " or"
msgstr " ili"
-#: cmdline/apt-get.cc:375
+#: cmdline/apt-get.cc:373
msgid "The following NEW packages will be installed:"
msgstr "Slijedeći NOVI paketi će biti instalirani:"
-#: cmdline/apt-get.cc:401
+#: cmdline/apt-get.cc:399
msgid "The following packages will be REMOVED:"
msgstr "Slijedeći paketi će biti UKLONJENI:"
-#: cmdline/apt-get.cc:423
+#: cmdline/apt-get.cc:421
#, fuzzy
msgid "The following packages have been kept back:"
msgstr "Slijedeći paketi su zadržani:"
-#: cmdline/apt-get.cc:444
+#: cmdline/apt-get.cc:442
msgid "The following packages will be upgraded:"
msgstr "Slijedeći paketi će biti nadograđeni:"
-#: cmdline/apt-get.cc:465
+#: cmdline/apt-get.cc:463
msgid "The following packages will be DOWNGRADED:"
msgstr ""
-#: cmdline/apt-get.cc:485
+#: cmdline/apt-get.cc:483
msgid "The following held packages will be changed:"
msgstr ""
-#: cmdline/apt-get.cc:538
+#: cmdline/apt-get.cc:536
#, c-format
msgid "%s (due to %s) "
msgstr ""
-#: cmdline/apt-get.cc:546
+#: cmdline/apt-get.cc:544
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:577
+#: cmdline/apt-get.cc:575
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr ""
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:579
#, c-format
msgid "%lu reinstalled, "
msgstr ""
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu downgraded, "
msgstr ""
-#: cmdline/apt-get.cc:585
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr ""
-#: cmdline/apt-get.cc:589
+#: cmdline/apt-get.cc:587
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr ""
-#: cmdline/apt-get.cc:649
+#: cmdline/apt-get.cc:647
msgid "Correcting dependencies..."
msgstr "Ispravljam zavisnosti..."
-#: cmdline/apt-get.cc:652
+#: cmdline/apt-get.cc:650
msgid " failed."
msgstr ""
-#: cmdline/apt-get.cc:655
+#: cmdline/apt-get.cc:653
msgid "Unable to correct dependencies"
msgstr "Ne mogu ispraviti zavisnosti"
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr ""
-#: cmdline/apt-get.cc:660
+#: cmdline/apt-get.cc:658
msgid " Done"
msgstr " Urađeno"
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:662
msgid "You might want to run `apt-get -f install' to correct these."
msgstr ""
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid "Unmet dependencies. Try using -f."
msgstr "Nezadovoljene zavisnosti. Pokušajte koristeći -f."
-#: cmdline/apt-get.cc:689
+#: cmdline/apt-get.cc:687
#, fuzzy
msgid "WARNING: The following packages cannot be authenticated!"
msgstr "Slijedeći paketi će biti nadograđeni:"
-#: cmdline/apt-get.cc:693
+#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
msgstr ""
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr ""
-#: cmdline/apt-get.cc:702
+#: cmdline/apt-get.cc:700
msgid "Some packages could not be authenticated"
msgstr ""
-#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
+#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
msgid "There are problems and -y was used without --force-yes"
msgstr ""
-#: cmdline/apt-get.cc:755
+#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr ""
-#: cmdline/apt-get.cc:764
+#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr ""
-#: cmdline/apt-get.cc:775
+#: cmdline/apt-get.cc:773
msgid "Internal error, Ordering didn't finish"
msgstr ""
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:2073
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr ""
-#: cmdline/apt-get.cc:816
+#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:819
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:824
+#: cmdline/apt-get.cc:822
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr ""
-#: cmdline/apt-get.cc:832
+#: cmdline/apt-get.cc:830
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
#, c-format
msgid "Couldn't determine free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:847
#, c-format
msgid "You don't have enough free space in %s."
msgstr ""
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
+#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882
msgid "Trivial Only specified but this is not a trivial operation."
msgstr ""
-#: cmdline/apt-get.cc:866
+#: cmdline/apt-get.cc:864
msgid "Yes, do as I say!"
msgstr "Da, uradi kako kažem!"
-#: cmdline/apt-get.cc:868
+#: cmdline/apt-get.cc:866
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
" ?] "
msgstr ""
-#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr "Odustani."
-#: cmdline/apt-get.cc:889
+#: cmdline/apt-get.cc:887
#, fuzzy
msgid "Do you want to continue [Y/n]? "
msgstr "Da li želite nastaviti? [Y/n]"
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1336 cmdline/apt-get.cc:1970
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
-#: cmdline/apt-get.cc:979
+#: cmdline/apt-get.cc:977
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:1979
msgid "Download complete and in download only mode"
msgstr ""
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:984
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
msgstr ""
-#: cmdline/apt-get.cc:990
+#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
msgstr ""
-#: cmdline/apt-get.cc:995
+#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
msgstr ""
-#: cmdline/apt-get.cc:996
+#: cmdline/apt-get.cc:994
msgid "Aborting install."
msgstr "Odustajem od instalacije."
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1028
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1040
+#: cmdline/apt-get.cc:1038
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
-#: cmdline/apt-get.cc:1058
+#: cmdline/apt-get.cc:1056
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr ""
-#: cmdline/apt-get.cc:1069
+#: cmdline/apt-get.cc:1067
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr ""
-#: cmdline/apt-get.cc:1081
+#: cmdline/apt-get.cc:1079
msgid " [Installed]"
msgstr "[Instalirano]"
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1084
msgid "You should explicitly select one to install."
msgstr ""
-#: cmdline/apt-get.cc:1091
+#: cmdline/apt-get.cc:1089
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
"is only available from another source\n"
msgstr ""
-#: cmdline/apt-get.cc:1110
+#: cmdline/apt-get.cc:1108
msgid "However the following packages replace it:"
msgstr "Međutim, slijedeći paketi ga zamjenjuju:"
-#: cmdline/apt-get.cc:1113
+#: cmdline/apt-get.cc:1111
#, c-format
msgid "Package %s has no installation candidate"
msgstr ""
-#: cmdline/apt-get.cc:1133
+#: cmdline/apt-get.cc:1131
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
-#: cmdline/apt-get.cc:1141
+#: cmdline/apt-get.cc:1139
#, c-format
msgid "%s is already the newest version.\n"
msgstr ""
-#: cmdline/apt-get.cc:1168
+#: cmdline/apt-get.cc:1166
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1176
+#: cmdline/apt-get.cc:1174
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1284
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1297 cmdline/apt-get.cc:1391
msgid "Unable to lock the list directory"
msgstr ""
-#: cmdline/apt-get.cc:1384
+#: cmdline/apt-get.cc:1355
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
msgstr ""
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1374
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1473 cmdline/apt-get.cc:1509
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1496
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1526
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1529
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
msgstr ""
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1541
msgid ""
"Some packages could not be installed. This may mean that you have\n"
"requested an impossible situation or if you are using the unstable\n"
"or been moved out of Incoming."
msgstr ""
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1549
msgid ""
"Since you only requested a single operation it is extremely likely that\n"
"the package is simply not installable and a bug report against\n"
"that package should be filed."
msgstr ""
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1554
msgid "The following information may help to resolve the situation:"
msgstr ""
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1557
msgid "Broken packages"
msgstr "Oštećeni paketi"
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1583
msgid "The following extra packages will be installed:"
msgstr "Slijedeći dodatni paketi će biti instalirani:"
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1654
msgid "Suggested packages:"
msgstr "Predloženi paketi:"
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1655
msgid "Recommended packages:"
msgstr "Preporučeni paketi:"
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1675
msgid "Calculating upgrade... "
msgstr "Računam nadogradnju..."
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1678 methods/ftp.cc:702 methods/connect.cc:101
msgid "Failed"
msgstr "Neuspješno"
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1683
msgid "Done"
msgstr "Urađeno"
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
msgid "Internal error, problem resolver broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1883 cmdline/apt-get.cc:2091
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:1959
-#, c-format
-msgid "Skiping already downloaded file '%s'\n"
-msgstr ""
-
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1930
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1935
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1938
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1944
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:1975
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2003
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2015
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2033
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2052
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2068
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2096
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2116
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2168
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2220
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"package %s can satisfy version requirements"
msgstr ""
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2255
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2280
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2294
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2298
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2330
msgid "Supported modules:"
msgstr "Podržani moduli:"
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2371
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
msgid "Failed to write file %s"
msgstr "Ne mogu ukloniti %s"
-#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
+#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgid "Failed to close file %s"
msgstr ""
msgstr ""
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
#, c-format
msgid "Unable to read %s"
msgstr "Ne mogu čitati %s"
msgstr ""
#. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
-#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
-#: apt-pkg/pkgcachegen.cc:840
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:748
+#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822
+#: apt-pkg/pkgcachegen.cc:945
msgid "Reading package lists"
msgstr "Čitam spiskove paketa"
msgstr "Datoteka nije pronađena"
#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
-#: methods/gzip.cc:142
+#: methods/gzip.cc:142 methods/rred.cc:234 methods/rred.cc:243
msgid "Failed to stat"
msgstr ""
#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+#: methods/rred.cc:240
msgid "Failed to set modification time"
msgstr ""
msgid "Unable to accept connection"
msgstr ""
-#: methods/ftp.cc:864 methods/http.cc:963 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:921 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr ""
msgid "Read error from %s process"
msgstr ""
-#: methods/http.cc:381
+#: methods/http.cc:345
msgid "Waiting for headers"
msgstr "Čekam na zaglavlja"
-#: methods/http.cc:527
+#: methods/http.cc:491
#, c-format
msgid "Got a single header line over %u chars"
msgstr ""
-#: methods/http.cc:535
+#: methods/http.cc:499
msgid "Bad header line"
msgstr ""
-#: methods/http.cc:554 methods/http.cc:561
+#: methods/http.cc:518 methods/http.cc:525
msgid "The HTTP server sent an invalid reply header"
msgstr ""
-#: methods/http.cc:590
+#: methods/http.cc:554
msgid "The HTTP server sent an invalid Content-Length header"
msgstr ""
-#: methods/http.cc:605
+#: methods/http.cc:569
msgid "The HTTP server sent an invalid Content-Range header"
msgstr ""
-#: methods/http.cc:607
+#: methods/http.cc:571
msgid "This HTTP server has broken range support"
msgstr ""
-#: methods/http.cc:631
+#: methods/http.cc:595
msgid "Unknown date format"
msgstr "Nepoznat oblik datuma"
-#: methods/http.cc:778
+#: methods/http.cc:742
msgid "Select failed"
msgstr ""
-#: methods/http.cc:783
+#: methods/http.cc:747
msgid "Connection timed out"
msgstr ""
-#: methods/http.cc:806
+#: methods/http.cc:770
msgid "Error writing to output file"
msgstr ""
-#: methods/http.cc:837
+#: methods/http.cc:798
msgid "Error writing to file"
msgstr ""
-#: methods/http.cc:865
+#: methods/http.cc:823
msgid "Error writing to the file"
msgstr ""
-#: methods/http.cc:879
+#: methods/http.cc:837
msgid "Error reading from server. Remote end closed connection"
msgstr ""
-#: methods/http.cc:881
+#: methods/http.cc:839
msgid "Error reading from server"
msgstr ""
-#: methods/http.cc:1112
+#: methods/http.cc:1070
msgid "Bad header data"
msgstr ""
-#: methods/http.cc:1129
+#: methods/http.cc:1087
msgid "Connection failed"
msgstr "Povezivanje neuspješno"
-#: methods/http.cc:1220
+#: methods/http.cc:1178
msgid "Internal error"
msgstr "Unutrašnja greška"
msgid "Couldn't make mmap of %lu bytes"
msgstr ""
-#: apt-pkg/contrib/strutl.cc:938
+#: apt-pkg/contrib/strutl.cc:984
#, c-format
msgid "Selection %s not found"
msgstr ""
msgid "Unable to stat the mount point %s"
msgstr ""
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
+#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44
#, c-format
msgid "Unable to change to %s"
msgstr ""
msgid "Problem syncing the file"
msgstr ""
-#: apt-pkg/pkgcache.cc:126
+#: apt-pkg/pkgcache.cc:135
msgid "Empty package cache"
msgstr ""
-#: apt-pkg/pkgcache.cc:132
+#: apt-pkg/pkgcache.cc:141
msgid "The package cache file is corrupted"
msgstr ""
-#: apt-pkg/pkgcache.cc:137
+#: apt-pkg/pkgcache.cc:146
msgid "The package cache file is an incompatible version"
msgstr ""
-#: apt-pkg/pkgcache.cc:142
+#: apt-pkg/pkgcache.cc:151
#, c-format
msgid "This APT does not support the versioning system '%s'"
msgstr ""
-#: apt-pkg/pkgcache.cc:147
+#: apt-pkg/pkgcache.cc:156
msgid "The package cache was built for a different architecture"
msgstr ""
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Depends"
msgstr "Zavisi"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "PreDepends"
msgstr "Unaprijed zavisi"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Suggests"
msgstr "Predlaže"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Recommends"
msgstr "Preporučuje"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
#, fuzzy
msgid "Conflicts"
msgstr "Sukobljava se sa"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Replaces"
msgstr "Zamjenjuje"
-#: apt-pkg/pkgcache.cc:220
+#: apt-pkg/pkgcache.cc:229
msgid "Obsoletes"
msgstr "Zastarijeva"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "important"
msgstr "važno"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "required"
msgstr "zahtijevano"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "standard"
msgstr "standardno"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "optional"
msgstr "opcionalno"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "extra"
msgstr "extra"
msgid "Unable to parse package file %s (2)"
msgstr ""
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:87
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr ""
-#: apt-pkg/sourcelist.cc:96
+#: apt-pkg/sourcelist.cc:89
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr ""
-#: apt-pkg/sourcelist.cc:99
+#: apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr ""
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr ""
-#: apt-pkg/sourcelist.cc:112
+#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr ""
-#: apt-pkg/sourcelist.cc:203
+#: apt-pkg/sourcelist.cc:156
#, c-format
msgid "Opening %s"
msgstr "Otvaram %s"
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:450
#, c-format
msgid "Line %u too long in source list %s."
msgstr ""
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:187
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr ""
-#: apt-pkg/sourcelist.cc:244
+#: apt-pkg/sourcelist.cc:191
#, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr ""
-#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr ""
msgid "Archive directory %spartial is missing."
msgstr ""
-#: apt-pkg/acquire.cc:821
+#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
msgstr ""
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr ""
-#: apt-pkg/init.cc:120
+#: apt-pkg/init.cc:122
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr ""
-#: apt-pkg/init.cc:136
+#: apt-pkg/init.cc:138
msgid "Unable to determine a suitable packaging system type"
msgstr ""
msgid "Error occurred while processing %s (NewPackage)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:129
+#: apt-pkg/pkgcachegen.cc:132
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:150
+#: apt-pkg/pkgcachegen.cc:155
+#, c-format
+msgid "Error occured while processing %s (NewFileDesc1)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:180
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:154
+#: apt-pkg/pkgcachegen.cc:184
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:184
+#: apt-pkg/pkgcachegen.cc:215
#, c-format
msgid "Error occurred while processing %s (NewVersion1)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:188
+#: apt-pkg/pkgcachegen.cc:219
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:192
+#: apt-pkg/pkgcachegen.cc:223
#, c-format
msgid "Error occurred while processing %s (NewVersion2)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:207
+#: apt-pkg/pkgcachegen.cc:247
+#, c-format
+msgid "Error occured while processing %s (NewFileDesc2)"
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:253
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:210
+#: apt-pkg/pkgcachegen.cc:256
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:213
+#: apt-pkg/pkgcachegen.cc:259
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+
+#: apt-pkg/pkgcachegen.cc:262
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:290
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:254
+#: apt-pkg/pkgcachegen.cc:303
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:260
+#: apt-pkg/pkgcachegen.cc:309
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:574
+#: apt-pkg/pkgcachegen.cc:679
#, c-format
msgid "Couldn't stat source package list %s"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:658
+#: apt-pkg/pkgcachegen.cc:763
msgid "Collecting File Provides"
msgstr ""
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897
msgid "IO Error saving source cache"
msgstr ""
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr ""
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:911
+#: apt-pkg/acquire-item.cc:391 apt-pkg/acquire-item.cc:635
+#: apt-pkg/acquire-item.cc:1336
msgid "MD5Sum mismatch"
msgstr ""
-#: apt-pkg/acquire-item.cc:719
+#: apt-pkg/acquire-item.cc:1150
#, 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:778
+#: apt-pkg/acquire-item.cc:1203
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"manually fix this package."
msgstr ""
-#: apt-pkg/acquire-item.cc:814
+#: apt-pkg/acquire-item.cc:1239
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
-#: apt-pkg/acquire-item.cc:901
+#: apt-pkg/acquire-item.cc:1326
msgid "Size mismatch"
msgstr ""
msgid "Vendor block %s contains no fingerprint"
msgstr ""
-#: apt-pkg/cdrom.cc:507
+#: apt-pkg/cdrom.cc:531
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Mounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
+#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622
msgid "Identifying.. "
msgstr ""
-#: apt-pkg/cdrom.cc:541
+#: apt-pkg/cdrom.cc:565
#, c-format
msgid "Stored label: %s \n"
msgstr ""
-#: apt-pkg/cdrom.cc:561
+#: apt-pkg/cdrom.cc:585
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr ""
-#: apt-pkg/cdrom.cc:579
+#: apt-pkg/cdrom.cc:603
msgid "Unmounting CD-ROM\n"
msgstr ""
-#: apt-pkg/cdrom.cc:583
+#: apt-pkg/cdrom.cc:607
#, fuzzy
msgid "Waiting for disc...\n"
msgstr "Čekam na zaglavlja"
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:591
+#: apt-pkg/cdrom.cc:615
msgid "Mounting CD-ROM...\n"
msgstr ""
-#: apt-pkg/cdrom.cc:609
+#: apt-pkg/cdrom.cc:633
msgid "Scanning disc for index files..\n"
msgstr ""
-#: apt-pkg/cdrom.cc:647
+#: apt-pkg/cdrom.cc:673
#, c-format
-msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+msgid ""
+"Found %i package indexes, %i source indexes, %i translation indexes and %i "
+"signatures\n"
msgstr ""
-#: apt-pkg/cdrom.cc:710
+#: apt-pkg/cdrom.cc:737
msgid "That is not a valid name, try again.\n"
msgstr ""
-#: apt-pkg/cdrom.cc:726
+#: apt-pkg/cdrom.cc:753
#, c-format
msgid ""
"This disc is called: \n"
"'%s'\n"
msgstr ""
-#: apt-pkg/cdrom.cc:730
+#: apt-pkg/cdrom.cc:757
#, fuzzy
msgid "Copying package lists..."
msgstr "Čitam spiskove paketa"
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:783
msgid "Writing new source list\n"
msgstr ""
-#: apt-pkg/cdrom.cc:763
+#: apt-pkg/cdrom.cc:792
msgid "Source list entries for this disc are:\n"
msgstr ""
-#: apt-pkg/cdrom.cc:803
+#: apt-pkg/cdrom.cc:832
msgid "Unmounting CD-ROM..."
msgstr ""
-#: apt-pkg/indexcopy.cc:261
+#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
#, c-format
msgid "Wrote %i records.\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:263
+#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:266
+#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr ""
-#: apt-pkg/indexcopy.cc:269
+#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
msgid "Removed with config %s"
msgstr ""
+#: methods/rred.cc:219
+msgid "Could not patch file"
+msgstr ""
+
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr ""
msgstr ""
"Project-Id-Version: apt 0.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:51+0100\n"
+"POT-Creation-Date: 2005-10-17 19:31+0200\n"
"PO-Revision-Date: 2005-07-19 01:31+0200\n"
"Last-Translator: Jordi Mallach <jordi@debian.org>\n"
"Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: cmdline/apt-cache.cc:135
+#: cmdline/apt-cache.cc:141
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr "El paquet %s versió %s té una dependència sense satisfer:\n"
-#: cmdline/apt-cache.cc:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615
-#: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357
-#: cmdline/apt-cache.cc:1508
+#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:638
+#: cmdline/apt-cache.cc:794 cmdline/apt-cache.cc:1012
+#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
#, c-format
msgid "Unable to locate package %s"
msgstr "No s'ha trobat el paquet %s"
-#: cmdline/apt-cache.cc:232
+#: cmdline/apt-cache.cc:245
msgid "Total package names : "
msgstr "Nombre total de paquets: "
-#: cmdline/apt-cache.cc:272
+#: cmdline/apt-cache.cc:285
msgid " Normal packages: "
msgstr " Paquets normals: "
-#: cmdline/apt-cache.cc:273
+#: cmdline/apt-cache.cc:286
msgid " Pure virtual packages: "
msgstr " Paquets virtuals purs: "
-#: cmdline/apt-cache.cc:274
+#: cmdline/apt-cache.cc:287
msgid " Single virtual packages: "
msgstr " Paquets virtuals únics: "
-#: cmdline/apt-cache.cc:275
+#: cmdline/apt-cache.cc:288
msgid " Mixed virtual packages: "
msgstr " Paquets virtuals mixtes: "
-#: cmdline/apt-cache.cc:276
+#: cmdline/apt-cache.cc:289
msgid " Missing: "
msgstr " Falten: "
-#: cmdline/apt-cache.cc:278
+#: cmdline/apt-cache.cc:291
msgid "Total distinct versions: "
msgstr "Total de versions diferents: "
-#: cmdline/apt-cache.cc:280
+#: cmdline/apt-cache.cc:293
+#, fuzzy
+msgid "Total Distinct Descriptions: "
+msgstr "Total de versions diferents: "
+
+#: cmdline/apt-cache.cc:295
msgid "Total dependencies: "
msgstr "Total de dependències: "
-#: cmdline/apt-cache.cc:283
+#: cmdline/apt-cache.cc:298
msgid "Total ver/file relations: "
msgstr "Total de relacions versió/fitxer: "
-#: cmdline/apt-cache.cc:285
+#: cmdline/apt-cache.cc:300
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Total de relacions versió/fitxer: "
+
+#: cmdline/apt-cache.cc:302
msgid "Total Provides mappings: "
msgstr "Total dels mapes aportats: "
-#: cmdline/apt-cache.cc:297
+#: cmdline/apt-cache.cc:314
msgid "Total globbed strings: "
msgstr "Total de cadenes globals: "
-#: cmdline/apt-cache.cc:311
+#: cmdline/apt-cache.cc:328
msgid "Total dependency version space: "
msgstr "Total de l'espai per a dependències de versió: "
-#: cmdline/apt-cache.cc:316
+#: cmdline/apt-cache.cc:333
msgid "Total slack space: "
msgstr "Total de l'espai desperdiciat: "
-#: cmdline/apt-cache.cc:324
+#: cmdline/apt-cache.cc:341
msgid "Total space accounted for: "
msgstr "Total de l'espai atribuit a: "
-#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
+#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1212
#, c-format
msgid "Package file %s is out of sync."
msgstr "El fitxer %s del paquet està desincronitzat."
-#: cmdline/apt-cache.cc:1231
+#: cmdline/apt-cache.cc:1293
msgid "You must give exactly one pattern"
msgstr "Heu de donar exactament un patró"
-#: cmdline/apt-cache.cc:1385
+#: cmdline/apt-cache.cc:1447
msgid "No packages found"
msgstr "No s'han trobat paquets"
-#: cmdline/apt-cache.cc:1462
+#: cmdline/apt-cache.cc:1524
msgid "Package files:"
msgstr "Fitxers de paquets:"
-#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
+#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
msgid "Cache is out of sync, can't x-ref a package file"
msgstr ""
"Memòria cau no sincronitzada, no es pot fer x-ref a un fitxer del paquet"
-#: cmdline/apt-cache.cc:1470
+#: cmdline/apt-cache.cc:1532
#, c-format
msgid "%4i %s\n"
msgstr "%4i %s\n"
#. Show any packages have explicit pins
-#: cmdline/apt-cache.cc:1482
+#: cmdline/apt-cache.cc:1544
msgid "Pinned packages:"
msgstr "Paquets etiquetats:"
-#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
+#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
msgid "(not found)"
msgstr "(no trobat)"
#. Installed version
-#: cmdline/apt-cache.cc:1515
+#: cmdline/apt-cache.cc:1577
msgid " Installed: "
msgstr " Instal·lat: "
-#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
+#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
msgid "(none)"
msgstr "(cap)"
#. Candidate Version
-#: cmdline/apt-cache.cc:1522
+#: cmdline/apt-cache.cc:1584
msgid " Candidate: "
msgstr " Candidat: "
-#: cmdline/apt-cache.cc:1532
+#: cmdline/apt-cache.cc:1594
msgid " Package pin: "
msgstr " Etiqueta del paquet: "
#. Show the priority tables
-#: cmdline/apt-cache.cc:1541
+#: cmdline/apt-cache.cc:1603
msgid " Version table:"
msgstr " Taula de versió:"
-#: cmdline/apt-cache.cc:1556
+#: cmdline/apt-cache.cc:1618
#, c-format
msgid " %4i %s\n"
msgstr " %4i %s\n"
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1713 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2325 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr "%s %s per a %s %s compilat el %s %s\n"
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1720
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
"Consulteu les pàgines del manual apt-cache(8) i apt.conf(5) per a més "
"informació.\n"
-#: cmdline/apt-cdrom.cc:78
-msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr ""
-
-#: cmdline/apt-cdrom.cc:93
-#, fuzzy
-msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-"El medi ha canviat: Si us plau, inseriu el disc amb l'etiqueta\n"
-" '%s'\n"
-"en la unitat de '%s' i premeu Intro\n"
-
-#: cmdline/apt-cdrom.cc:117
-msgid "Repeat this process for the rest of the CDs in your set."
-msgstr ""
-
#: cmdline/apt-config.cc:41
msgid "Arguments not in pairs"
msgstr "Els arguments no són en parells"
" -c=? Llegeix aquest fitxer de configuració\n"
" -o=? Estableix una opció de conf arbitrària, p.e. -o dir::cache=/tmp\n"
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:815
#, c-format
msgid "Unable to write to %s"
msgstr "No es pot escriure en %s"
msgid "Archive had no package field"
msgstr "Arxiu sense el camp paquet"
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
+#: ftparchive/writer.cc:394 ftparchive/writer.cc:602
#, c-format
msgid " %s has no override entry\n"
msgstr " %s no té una entrada dominant\n"
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
+#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
#, c-format
msgid " %s maintainer is %s not %s\n"
msgstr " el mantenidor de %s és %s, no %s\n"
msgid "Failed to rename %s to %s"
msgstr "No s'ha pogut canviar el nom de %s a %s"
-#: cmdline/apt-get.cc:120
+#: cmdline/apt-get.cc:118
msgid "Y"
msgstr "S"
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1486
#, c-format
msgid "Regex compilation error - %s"
msgstr "S'ha produït un error de compilació de l'expressió regular - %s"
-#: cmdline/apt-get.cc:237
+#: cmdline/apt-get.cc:235
msgid "The following packages have unmet dependencies:"
msgstr "Els següents paquets tenen dependències sense satisfer:"
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:325
#, c-format
msgid "but %s is installed"
msgstr "però està instal·lat %s"
-#: cmdline/apt-get.cc:329
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is to be installed"
msgstr "però s'instal·larà %s"
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:334
msgid "but it is not installable"
msgstr "però no és instal·lable"
-#: cmdline/apt-get.cc:338
+#: cmdline/apt-get.cc:336
msgid "but it is a virtual package"
msgstr "però és un paquet virtual"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not installed"
msgstr "però no està instal·lat"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not going to be installed"
msgstr "però no serà instal·lat"
-#: cmdline/apt-get.cc:346
+#: cmdline/apt-get.cc:344
msgid " or"
msgstr " o"
-#: cmdline/apt-get.cc:375
+#: cmdline/apt-get.cc:373
msgid "The following NEW packages will be installed:"
msgstr "S'instal·laran els següents paquets NOUS:"
-#: cmdline/apt-get.cc:401
+#: cmdline/apt-get.cc:399
msgid "The following packages will be REMOVED:"
msgstr "S'ELIMINARAN els següents paquets:"
-#: cmdline/apt-get.cc:423
+#: cmdline/apt-get.cc:421
msgid "The following packages have been kept back:"
msgstr "S'han mantingut els següents paquets:"
-#: cmdline/apt-get.cc:444
+#: cmdline/apt-get.cc:442
msgid "The following packages will be upgraded:"
msgstr "S'actualitzaran els següents paquets:"
-#: cmdline/apt-get.cc:465
+#: cmdline/apt-get.cc:463
msgid "The following packages will be DOWNGRADED:"
msgstr "Es DESACTUALITZARAN els següents paquets:"
-#: cmdline/apt-get.cc:485
+#: cmdline/apt-get.cc:483
msgid "The following held packages will be changed:"
msgstr "Es canviaran els següents paquets mantinguts:"
-#: cmdline/apt-get.cc:538
+#: cmdline/apt-get.cc:536
#, c-format
msgid "%s (due to %s) "
msgstr "%s (per %s) "
-#: cmdline/apt-get.cc:546
+#: cmdline/apt-get.cc:544
msgid ""
"WARNING: The following essential packages will be removed.\n"
"This should NOT be done unless you know exactly what you are doing!"
"AVÍS: Els següents paquets essencials seran eliminats.\n"
"Això NO s'ha de fer a menys que sapigueu exactament el que esteu fent!"
-#: cmdline/apt-get.cc:577
+#: cmdline/apt-get.cc:575
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr "%lu actualitzats, %lu nous a instal·lar, "
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:579
#, c-format
msgid "%lu reinstalled, "
msgstr "%lu reinstal·lats, "
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu downgraded, "
msgstr "%lu desactualitzats, "
-#: cmdline/apt-get.cc:585
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr "%lu a eliminar i %lu no actualitzats.\n"
-#: cmdline/apt-get.cc:589
+#: cmdline/apt-get.cc:587
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr "%lu no instal·lats o eliminats completament.\n"
-#: cmdline/apt-get.cc:649
+#: cmdline/apt-get.cc:647
msgid "Correcting dependencies..."
msgstr "S'estan corregint les dependències..."
-#: cmdline/apt-get.cc:652
+#: cmdline/apt-get.cc:650
msgid " failed."
msgstr " ha fallat."
-#: cmdline/apt-get.cc:655
+#: cmdline/apt-get.cc:653
msgid "Unable to correct dependencies"
msgstr "No es poden corregir les dependències"
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr "No es pot minimitzar el joc de versions revisades"
-#: cmdline/apt-get.cc:660
+#: cmdline/apt-get.cc:658
msgid " Done"
msgstr " Fet"
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:662
msgid "You might want to run `apt-get -f install' to correct these."
msgstr "Potser voldreu executar `apt-get -f install' per a corregir-ho."
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid "Unmet dependencies. Try using -f."
msgstr "Dependències sense satisfer. Proveu-ho usant -f."
-#: cmdline/apt-get.cc:689
+#: cmdline/apt-get.cc:687
msgid "WARNING: The following packages cannot be authenticated!"
msgstr "AVÍS: No es poden autenticar els següents paquets!"
-#: cmdline/apt-get.cc:693
+#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
msgstr "S'ha descartat l'avís d'autenticació.\n"
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr "Voleu instal·lar aquests paquets sense verificar-los [s/N]? "
-#: cmdline/apt-get.cc:702
+#: cmdline/apt-get.cc:700
msgid "Some packages could not be authenticated"
msgstr "No s'ha pogut autenticar alguns paquets"
-#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
+#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
msgid "There are problems and -y was used without --force-yes"
msgstr "Hi ha problemes i s'ha usat -y sense --force-yes"
-#: cmdline/apt-get.cc:755
+#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr ""
"S'ha produït un error intern, s'ha cridat a InstallPackages amb paquets "
"trencats!"
-#: cmdline/apt-get.cc:764
+#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr "Els paquets necessiten ser eliminats però Remove està inhabilitat."
-#: cmdline/apt-get.cc:775
+#: cmdline/apt-get.cc:773
msgid "Internal error, Ordering didn't finish"
msgstr "S'ha produït un error intern, l'ordenació no ha acabat"
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
msgstr "No és possible blocar el directori de descàrrega"
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:2073
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr "No s'ha pogut llegir la llista de les fonts."
-#: cmdline/apt-get.cc:816
+#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
"Què estrany... les mides no coincideixen, informeu a apt@packages.debian.org"
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:819
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr "Es necessita obtenir %sB/%sB d'arxius.\n"
-#: cmdline/apt-get.cc:824
+#: cmdline/apt-get.cc:822
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr "Es necessita obtenir %sB d'arxius.\n"
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr "Després de desempaquetar s'usaran %sB d'espai en disc addicional.\n"
-#: cmdline/apt-get.cc:832
+#: cmdline/apt-get.cc:830
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr "Després de desempaquetar s'alliberaran %sB d'espai en disc.\n"
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
#, c-format
msgid "Couldn't determine free space in %s"
msgstr "No s'ha pogut determinar l'espai lliure en %s"
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:847
#, c-format
msgid "You don't have enough free space in %s."
msgstr "No teniu prou espai lliure en %s."
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
+#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882
msgid "Trivial Only specified but this is not a trivial operation."
msgstr "Es va especificar Trivial Only però aquesta operació no és trivial."
-#: cmdline/apt-get.cc:866
+#: cmdline/apt-get.cc:864
msgid "Yes, do as I say!"
msgstr "Sí, fes el que et dic!"
-#: cmdline/apt-get.cc:868
+#: cmdline/apt-get.cc:866
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"Per a continuar escriviu la frase «%s»\n"
" ?] "
-#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr "Avortat."
-#: cmdline/apt-get.cc:889
+#: cmdline/apt-get.cc:887
msgid "Do you want to continue [Y/n]? "
msgstr "Voleu continuar [S/n]? "
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1336 cmdline/apt-get.cc:1970
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr "No s'ha pogut obtenir %s %s\n"
-#: cmdline/apt-get.cc:979
+#: cmdline/apt-get.cc:977
msgid "Some files failed to download"
msgstr "Alguns fitxers no s'han pogut descarregar"
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:1979
msgid "Download complete and in download only mode"
msgstr "Descàrrega completa i en mode de només descàrrega"
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:984
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
"No es poden descarregar alguns arxius, potser executant apt-get update o "
"intenteu-ho amb --fix-missing."
-#: cmdline/apt-get.cc:990
+#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
msgstr "--fix-missing i medi d'intercanvi actualment no estan suportats"
-#: cmdline/apt-get.cc:995
+#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
msgstr "No es poden corregir els paquets que falten."
-#: cmdline/apt-get.cc:996
+#: cmdline/apt-get.cc:994
msgid "Aborting install."
msgstr "S'està avortant la instal·lació."
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1028
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr "Nota: s'està seleccionant %s en comptes de %s\n"
-#: cmdline/apt-get.cc:1040
+#: cmdline/apt-get.cc:1038
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
"S'està ometent %s, ja està instal·lat i l'actualització no està establerta.\n"
-#: cmdline/apt-get.cc:1058
+#: cmdline/apt-get.cc:1056
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr "El paquet %s no està instal·lat, així que no s'eliminarà\n"
-#: cmdline/apt-get.cc:1069
+#: cmdline/apt-get.cc:1067
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr "El paquet %s és un paquet virtual proveït per:\n"
-#: cmdline/apt-get.cc:1081
+#: cmdline/apt-get.cc:1079
msgid " [Installed]"
msgstr " [Instal·lat]"
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1084
msgid "You should explicitly select one to install."
msgstr "Necessiteu seleccionar-ne un explícitament per a instal·lar-lo."
-#: cmdline/apt-get.cc:1091
+#: cmdline/apt-get.cc:1089
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
"en fa referència. Això normalment vol dir que el paquet falta,\n"
"s'ha tornat obsolet o només és disponible des d'una altra font.\n"
-#: cmdline/apt-get.cc:1110
+#: cmdline/apt-get.cc:1108
msgid "However the following packages replace it:"
msgstr "Tot i que els següents paquets el reemplacen:"
-#: cmdline/apt-get.cc:1113
+#: cmdline/apt-get.cc:1111
#, c-format
msgid "Package %s has no installation candidate"
msgstr "El paquet %s no té candidat d'instal·lació"
-#: cmdline/apt-get.cc:1133
+#: cmdline/apt-get.cc:1131
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
"No es possible la reinstal·lació del paquet %s, no es pot descarregar.\n"
-#: cmdline/apt-get.cc:1141
+#: cmdline/apt-get.cc:1139
#, c-format
msgid "%s is already the newest version.\n"
msgstr "%s ja es troba en la versió més recent.\n"
-#: cmdline/apt-get.cc:1168
+#: cmdline/apt-get.cc:1166
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr "No s'ha trobat la versió puntual «%s» per a «%s»"
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr "No s'ha trobat la versió «%s» per a «%s»"
-#: cmdline/apt-get.cc:1176
+#: cmdline/apt-get.cc:1174
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr "Versió seleccionada %s (%s) per a %s\n"
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1284
msgid "The update command takes no arguments"
msgstr "L'ordre update no pren arguments"
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1297 cmdline/apt-get.cc:1391
msgid "Unable to lock the list directory"
msgstr "No es pot blocar el directori de la llista"
-#: cmdline/apt-get.cc:1384
+#: cmdline/apt-get.cc:1355
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
"No es poden descarregar alguns fitxers índex, s'han ignorat o en el seu lloc "
"s'han usat els antics."
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1374
msgid "Internal error, AllUpgrade broke stuff"
msgstr "Error intern, AllUpgrade ha trencat coses"
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1473 cmdline/apt-get.cc:1509
#, c-format
msgid "Couldn't find package %s"
msgstr "No s'ha pogut trobar el paquet %s"
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1496
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr "Nota: s'està seleccionant %s per a l'expressió regular '%s'\n"
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1526
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr "Potser voldreu executar `apt-get -f install' per a corregir-ho:"
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1529
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
"Dependències insatisfetes. Intenteu 'apt-get -f install' sense paquets (o "
"especifiqueu una solució)."
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1541
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"
"unstable i alguns paquets requerits encara no han estat creats o bé\n"
"encara no els hi han afegit."
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1549
msgid ""
"Since you only requested a single operation it is extremely likely that\n"
"the package is simply not installable and a bug report against\n"
"probable que el paquet no sigui instal·lable i que s'hagi d'emetre\n"
"un informe d'error en contra d'aquest per a arxivar-lo."
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1554
msgid "The following information may help to resolve the situation:"
msgstr "La següent informació pot ajudar-vos a resoldre la situació:"
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1557
msgid "Broken packages"
msgstr "Paquets trencats"
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1583
msgid "The following extra packages will be installed:"
msgstr "S'instal·laran els següents paquets extres:"
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1654
msgid "Suggested packages:"
msgstr "Paquets suggerits:"
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1655
msgid "Recommended packages:"
msgstr "Paquets recomanats:"
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1675
msgid "Calculating upgrade... "
msgstr "S'està calculant l'actualització... "
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1678 methods/ftp.cc:702 methods/connect.cc:101
msgid "Failed"
msgstr "Ha fallat"
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1683
msgid "Done"
msgstr "Fet"
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
msgid "Internal error, problem resolver broke stuff"
msgstr ""
"S'ha produït un error intern, el solucionador de problemes ha trencat coses"
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
msgstr "Haureu d'especificar un paquet de codi font per a descarregar"
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1883 cmdline/apt-get.cc:2091
#, c-format
msgid "Unable to find a source package for %s"
msgstr "No es pot trobar un paquet de fonts per a %s"
-#: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
-msgid "Skiping already downloaded file '%s'\n"
-msgstr ""
-"S'està ometent el desempaquetament de les fonts que ja ho estan en %s\n"
-
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1930
#, c-format
msgid "You don't have enough free space in %s"
msgstr "No teniu prou espai lliure en %s"
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1935
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr "Es necessita descarregar %sB/%sB d'arxius font.\n"
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1938
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr "Es necessita descarregar %sB d'arxius font.\n"
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1944
#, c-format
msgid "Fetch source %s\n"
msgstr "Font descarregada %s\n"
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:1975
msgid "Failed to fetch some archives."
msgstr "No s'ha pogut descarregar alguns arxius."
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2003
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
"S'està ometent el desempaquetament de les fonts que ja ho estan en %s\n"
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2015
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr "L'ordre de desempaquetar «%s» ha fallat.\n"
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2033
#, c-format
msgid "Build command '%s' failed.\n"
msgstr "L'ordre de construir «%s» ha fallat.\n"
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2052
msgid "Child process failed"
msgstr "Ha fallat el procés fill"
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2068
msgid "Must specify at least one package to check builddeps for"
msgstr ""
"S'ha d'especificar un paquet per a verificar les dependències de construcció "
"per a"
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2096
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
"No es pot obtenir informació sobre les dependències de construcció per a %s"
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2116
#, c-format
msgid "%s has no build depends.\n"
msgstr "%s no té dependències de construcció.\n"
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2168
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"La dependència %s en %s no es pot satisfer per que no es pot trobar el "
"paquet %s"
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2220
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"La dependència %s per a %s no es pot satisfer per que cap versió del paquet %"
"s pot satisfer els requeriments de versions"
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2255
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
"No s'ha pogut satisfer la dependència %s per a %s: El paquet instal·lat %s "
"és massa nou"
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2280
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr "No s'ha pogut satisfer la dependència %s per a %s: %s"
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2294
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr "No s'han pogut satisfer les dependències de construcció per a %s"
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2298
msgid "Failed to process build dependencies"
msgstr "No es poden processar les dependències de construcció"
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2330
msgid "Supported modules:"
msgstr "Mòduls suportats:"
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2371
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
msgid "Failed to write file %s"
msgstr "No s'ha pogut escriure el fitxer %s"
-#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
+#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgid "Failed to close file %s"
msgstr "Ha fallat el tancament del fitxer %s"
msgstr "El fitxer %s/%s sobreescriu al que està en el paquet %s"
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
#, c-format
msgid "Unable to read %s"
msgstr "No es pot llegir %s"
"fitxers"
#. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
-#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
-#: apt-pkg/pkgcachegen.cc:840
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:748
+#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822
+#: apt-pkg/pkgcachegen.cc:945
msgid "Reading package lists"
msgstr "S'està llegint la llista de paquets"
msgstr "Fitxer no trobat"
#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
-#: methods/gzip.cc:142
+#: methods/gzip.cc:142 methods/rred.cc:234 methods/rred.cc:243
msgid "Failed to stat"
msgstr "L'estat ha fallat"
#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+#: methods/rred.cc:240
msgid "Failed to set modification time"
msgstr "No s'ha pogut establir el temps de modificació"
msgid "Unable to accept connection"
msgstr "No es pot acceptar la connexió"
-#: methods/ftp.cc:864 methods/http.cc:963 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:921 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr "Problema escollint el fitxer"
msgid "Read error from %s process"
msgstr "Error llegint des del procés %s"
-#: methods/http.cc:381
+#: methods/http.cc:345
msgid "Waiting for headers"
msgstr "S'estan esperant les capçaleres"
-#: methods/http.cc:527
+#: methods/http.cc:491
#, c-format
msgid "Got a single header line over %u chars"
msgstr "S'ha aconseguit una sola línia de capçalera més de %u caràcters"
-#: methods/http.cc:535
+#: methods/http.cc:499
msgid "Bad header line"
msgstr "Línia de capçalera incorrecta"
-#: methods/http.cc:554 methods/http.cc:561
+#: methods/http.cc:518 methods/http.cc:525
msgid "The HTTP server sent an invalid reply header"
msgstr "El servidor http ha enviat una capçalera de resposta no vàlida"
-#: methods/http.cc:590
+#: methods/http.cc:554
msgid "The HTTP server sent an invalid Content-Length header"
msgstr "El servidor http ha enviat una capçalera de Content-Length no vàlida"
-#: methods/http.cc:605
+#: methods/http.cc:569
msgid "The HTTP server sent an invalid Content-Range header"
msgstr "El servidor http ha enviat una capçalera de Content-Range no vàlida"
-#: methods/http.cc:607
+#: methods/http.cc:571
msgid "This HTTP server has broken range support"
msgstr "Aquest servidor http té el suport d'abast trencat"
-#: methods/http.cc:631
+#: methods/http.cc:595
msgid "Unknown date format"
msgstr "Format de la data desconegut"
-#: methods/http.cc:778
+#: methods/http.cc:742
msgid "Select failed"
msgstr "Ha fallat la selecció"
-#: methods/http.cc:783
+#: methods/http.cc:747
msgid "Connection timed out"
msgstr "Connexió finalitzada"
-#: methods/http.cc:806
+#: methods/http.cc:770
msgid "Error writing to output file"
msgstr "Error escrivint en el fitxer d'eixida"
-#: methods/http.cc:837
+#: methods/http.cc:798
msgid "Error writing to file"
msgstr "Error escrivint en el fitxer"
-#: methods/http.cc:865
+#: methods/http.cc:823
msgid "Error writing to the file"
msgstr "Error escrivint en el fitxer"
-#: methods/http.cc:879
+#: methods/http.cc:837
msgid "Error reading from server. Remote end closed connection"
msgstr "Error llegint, el servidor remot ha tancat la connexió"
-#: methods/http.cc:881
+#: methods/http.cc:839
msgid "Error reading from server"
msgstr "Error llegint des del servidor"
-#: methods/http.cc:1112
+#: methods/http.cc:1070
msgid "Bad header data"
msgstr "Capçalera de dades no vàlida"
-#: methods/http.cc:1129
+#: methods/http.cc:1087
msgid "Connection failed"
msgstr "Ha fallat la connexió"
-#: methods/http.cc:1220
+#: methods/http.cc:1178
msgid "Internal error"
msgstr "Error intern"
msgid "Couldn't make mmap of %lu bytes"
msgstr "No s'ha pogut crear un mapa de memòria de %lu octets"
-#: apt-pkg/contrib/strutl.cc:938
+#: apt-pkg/contrib/strutl.cc:984
#, c-format
msgid "Selection %s not found"
msgstr "No s'ha trobat la selecció %s"
msgid "Unable to stat the mount point %s"
msgstr "No es pot obtenir informació del punt de muntatge %s"
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
+#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44
#, c-format
msgid "Unable to change to %s"
msgstr "No es pot canviar a %s"
msgid "Problem syncing the file"
msgstr "Ha hagut un problema en sincronitzar el fitxer"
-#: apt-pkg/pkgcache.cc:126
+#: apt-pkg/pkgcache.cc:135
msgid "Empty package cache"
msgstr "Memòria cau de paquets és buida"
-#: apt-pkg/pkgcache.cc:132
+#: apt-pkg/pkgcache.cc:141
msgid "The package cache file is corrupted"
msgstr "El fitxer de memòria cau de paquets està corromput"
-#: apt-pkg/pkgcache.cc:137
+#: apt-pkg/pkgcache.cc:146
msgid "The package cache file is an incompatible version"
msgstr "El fitxer de memòria cau de paquets és una versió incompatible"
-#: apt-pkg/pkgcache.cc:142
+#: apt-pkg/pkgcache.cc:151
#, c-format
msgid "This APT does not support the versioning system '%s'"
msgstr "Aquest APT no suporta el sistema de versions '%s'"
-#: apt-pkg/pkgcache.cc:147
+#: apt-pkg/pkgcache.cc:156
msgid "The package cache was built for a different architecture"
msgstr "La memòria cau de paquets fou creada per a una arquitectura diferent"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Depends"
msgstr "Depén"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "PreDepends"
msgstr "Predepén"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Suggests"
msgstr "Suggereix"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Recommends"
msgstr "Recomana"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Conflicts"
msgstr "Entra en conflicte"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Replaces"
msgstr "Reemplaça"
-#: apt-pkg/pkgcache.cc:220
+#: apt-pkg/pkgcache.cc:229
msgid "Obsoletes"
msgstr "Fa obsolet"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "important"
msgstr "important"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "required"
msgstr "requerit"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "standard"
msgstr "estàndard"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "optional"
msgstr "opcional"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "extra"
msgstr "extra"
msgid "Unable to parse package file %s (2)"
msgstr "No es pot analitzar el fitxer del paquet %s (2)"
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:87
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr "Línia %lu malformada en la llista de fonts %s (URI)"
-#: apt-pkg/sourcelist.cc:96
+#: apt-pkg/sourcelist.cc:89
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr "Línia %lu malformada en la llista de fonts %s (dist)"
-#: apt-pkg/sourcelist.cc:99
+#: apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr "Línia %lu malformada en la llista de fonts %s (analitzant URI)"
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr "Línia %lu malformada en la llista de fonts %s (dist absoluta)"
-#: apt-pkg/sourcelist.cc:112
+#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr "Línia %lu malformada en la llista de fonts %s (analitzant dist)"
-#: apt-pkg/sourcelist.cc:203
+#: apt-pkg/sourcelist.cc:156
#, c-format
msgid "Opening %s"
msgstr "S'està obrint %s"
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:450
#, c-format
msgid "Line %u too long in source list %s."
msgstr "La línia %u és massa llarga en la llista de fonts %s."
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:187
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr "La línia %u és malformada en la llista de fonts %s (tipus)"
-#: apt-pkg/sourcelist.cc:244
+#: apt-pkg/sourcelist.cc:191
#, fuzzy, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr "El tipus «%s» no és conegut en la línia %u de la llista de fonts %s"
-#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr "La línia %u és malformada en la llista de fonts %s (id del proveïdor)"
msgid "Archive directory %spartial is missing."
msgstr "Falta el directori d'arxiu %spartial."
-#: apt-pkg/acquire.cc:821
+#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
msgstr ""
" '%s'\n"
"en la unitat de '%s' i premeu Intro\n"
-#: apt-pkg/init.cc:120
+#: apt-pkg/init.cc:122
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr "El sistema d'empaquetament '%s' no està suportat."
-#: apt-pkg/init.cc:136
+#: apt-pkg/init.cc:138
msgid "Unable to determine a suitable packaging system type"
msgstr "No es pot determinar un tipus de sistema d'empaquetament adequat."
msgid "Error occurred while processing %s (NewPackage)"
msgstr "S'ha produït un error durant el processament de %s (NewPackage)"
-#: apt-pkg/pkgcachegen.cc:129
+#: apt-pkg/pkgcachegen.cc:132
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr "S'ha produït un error durant el processament de %s (UsePackage1)"
-#: apt-pkg/pkgcachegen.cc:150
+#: apt-pkg/pkgcachegen.cc:155
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc1)"
+msgstr "S'ha produït un error durant el processament de %s (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:180
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr "S'ha produït un error durant el processament de %s (UsePackage2)"
-#: apt-pkg/pkgcachegen.cc:154
+#: apt-pkg/pkgcachegen.cc:184
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr "S'ha produït un error durant el processament de %s (NewFileVer1)"
-#: apt-pkg/pkgcachegen.cc:184
+#: apt-pkg/pkgcachegen.cc:215
#, c-format
msgid "Error occurred while processing %s (NewVersion1)"
msgstr "S'ha produït un error durant el processament de %s (NewVersion1)"
-#: apt-pkg/pkgcachegen.cc:188
+#: apt-pkg/pkgcachegen.cc:219
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr "S'ha produït un error durant el processament de %s (UsePackage3)"
-#: apt-pkg/pkgcachegen.cc:192
+#: apt-pkg/pkgcachegen.cc:223
#, c-format
msgid "Error occurred while processing %s (NewVersion2)"
msgstr "S'ha produït un error durant el processament de %s (NewVersion2)"
-#: apt-pkg/pkgcachegen.cc:207
+#: apt-pkg/pkgcachegen.cc:247
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc2)"
+msgstr "S'ha produït un error durant el processament de %s (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:253
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr "Uau, heu excedit el nombre de paquets dels que aquest APT és capaç."
-#: apt-pkg/pkgcachegen.cc:210
+#: apt-pkg/pkgcachegen.cc:256
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr ""
"Uau, heu excedit el nombre de versions de les que aquest APT és capaç. "
-#: apt-pkg/pkgcachegen.cc:213
+#: apt-pkg/pkgcachegen.cc:259
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Uau, heu excedit el nombre de versions de les que aquest APT és capaç. "
+
+#: apt-pkg/pkgcachegen.cc:262
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
"Uau, heu excedit el nombre de dependències de les que aquest APT és capaç."
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:290
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr "S'ha produït un error durant el processament de %s (FindPkg)"
-#: apt-pkg/pkgcachegen.cc:254
+#: apt-pkg/pkgcachegen.cc:303
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr ""
"S'ha produït un error durant el processament de %s (CollectFileProvides)"
-#: apt-pkg/pkgcachegen.cc:260
+#: apt-pkg/pkgcachegen.cc:309
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
"No s'ha trobat el paquet %s %s en processar les dependències del fitxer"
-#: apt-pkg/pkgcachegen.cc:574
+#: apt-pkg/pkgcachegen.cc:679
#, c-format
msgid "Couldn't stat source package list %s"
msgstr "No s'ha pogut llegir la llista de paquets font %s"
-#: apt-pkg/pkgcachegen.cc:658
+#: apt-pkg/pkgcachegen.cc:763
msgid "Collecting File Provides"
msgstr "S'estan recollint els fitxers que proveeixen"
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897
msgid "IO Error saving source cache"
msgstr "Error d'E/S en desar la memòria cau de la font"
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr "no s'ha pogut canviar el nom, %s (%s -> %s)."
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:911
+#: apt-pkg/acquire-item.cc:391 apt-pkg/acquire-item.cc:635
+#: apt-pkg/acquire-item.cc:1336
msgid "MD5Sum mismatch"
msgstr "Suma MD5 diferent"
-#: apt-pkg/acquire-item.cc:719
+#: apt-pkg/acquire-item.cc:1150
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"significar que haureu d'arreglar aquest paquet manualment (segons "
"arquitectura)."
-#: apt-pkg/acquire-item.cc:778
+#: apt-pkg/acquire-item.cc:1203
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"No ha estat possible localitzar un fitxer pel paquet %s. Això podria "
"significar que haureu d'arreglar aquest paquet manualment."
-#: apt-pkg/acquire-item.cc:814
+#: apt-pkg/acquire-item.cc:1239
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
"L'índex dels fitxers en el paquet està corromput. Fitxer no existent: camp "
"per al paquet %s."
-#: apt-pkg/acquire-item.cc:901
+#: apt-pkg/acquire-item.cc:1326
msgid "Size mismatch"
msgstr "Mida diferent"
msgid "Vendor block %s contains no fingerprint"
msgstr "El camp del proveïdor %s no té una empremta digital"
-#: apt-pkg/cdrom.cc:507
+#: apt-pkg/cdrom.cc:531
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"S'està utilitzant el punt de muntatge de CD-ROM %s\n"
"S'està muntant el CD-ROM\n"
-#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
+#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622
msgid "Identifying.. "
msgstr "S'està identificant..."
-#: apt-pkg/cdrom.cc:541
+#: apt-pkg/cdrom.cc:565
#, c-format
msgid "Stored label: %s \n"
msgstr "S'ha emmagatzemat l'etiqueta: %s\n"
-#: apt-pkg/cdrom.cc:561
+#: apt-pkg/cdrom.cc:585
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr "S'està utilitzant el punt de muntatge de CD-ROM %s\n"
-#: apt-pkg/cdrom.cc:579
+#: apt-pkg/cdrom.cc:603
msgid "Unmounting CD-ROM\n"
msgstr "S'està desmuntant el CD-ROM\n"
-#: apt-pkg/cdrom.cc:583
+#: apt-pkg/cdrom.cc:607
msgid "Waiting for disc...\n"
msgstr "S'està esperant al disc...\n"
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:591
+#: apt-pkg/cdrom.cc:615
msgid "Mounting CD-ROM...\n"
msgstr "S'està muntant el CD-ROM...\n"
-#: apt-pkg/cdrom.cc:609
+#: apt-pkg/cdrom.cc:633
msgid "Scanning disc for index files..\n"
msgstr "S'està analitzant el disc per a fitxers d'índex...\n"
-#: apt-pkg/cdrom.cc:647
-#, c-format
-msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+#: apt-pkg/cdrom.cc:673
+#, fuzzy, c-format
+msgid ""
+"Found %i package indexes, %i source indexes, %i translation indexes and %i "
+"signatures\n"
msgstr "S'han trobat %i índex de paquets, %i índex de fonts i %i signatures\n"
-#: apt-pkg/cdrom.cc:710
+#: apt-pkg/cdrom.cc:737
msgid "That is not a valid name, try again.\n"
msgstr "Aquest no és un nom vàlid, torneu-ho a provar.\n"
-#: apt-pkg/cdrom.cc:726
+#: apt-pkg/cdrom.cc:753
#, c-format
msgid ""
"This disc is called: \n"
"El disc es diu:\n"
"«%s»\n"
-#: apt-pkg/cdrom.cc:730
+#: apt-pkg/cdrom.cc:757
msgid "Copying package lists..."
msgstr "S'estan copiant les llistes de paquets..."
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:783
msgid "Writing new source list\n"
msgstr "S'està escrivint una nova llista de fonts\n"
-#: apt-pkg/cdrom.cc:763
+#: apt-pkg/cdrom.cc:792
msgid "Source list entries for this disc are:\n"
msgstr "Les entrades de la llista de fonts per a aquest disc són:\n"
-#: apt-pkg/cdrom.cc:803
+#: apt-pkg/cdrom.cc:832
msgid "Unmounting CD-ROM..."
msgstr "S'esta desmuntant el CD-ROM..."
-#: apt-pkg/indexcopy.cc:261
+#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
#, c-format
msgid "Wrote %i records.\n"
msgstr "S'han escrit %i registres.\n"
-#: apt-pkg/indexcopy.cc:263
+#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr "S'han escrit %i registres, on falten %i fitxers.\n"
-#: apt-pkg/indexcopy.cc:266
+#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr "S'han escrit %i registres, on hi ha %i fitxers no coincidents\n"
-#: apt-pkg/indexcopy.cc:269
+#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
msgid "Removed with config %s"
msgstr ""
+#: methods/rred.cc:219
+#, fuzzy
+msgid "Could not patch file"
+msgstr "No s'ha pogut obrir el fitxer %s"
+
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr "La connexió s'ha tancat prematurament"
+#, fuzzy
+#~ msgid "Please insert a Disc in the drive and press enter"
+#~ msgstr ""
+#~ "El medi ha canviat: Si us plau, inseriu el disc amb l'etiqueta\n"
+#~ " '%s'\n"
+#~ "en la unitat de '%s' i premeu Intro\n"
+
+#, fuzzy
+#~ msgid "Skiping already downloaded file '%s'\n"
+#~ msgstr ""
+#~ "S'està ometent el desempaquetament de les fonts que ja ho estan en %s\n"
+
#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
#~ msgstr ""
#~ "ID del proveïdor '%s' desconeguda en la línia %u de la llista de fonts %s"
msgstr ""
"Project-Id-Version: apt\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:51+0100\n"
+"POT-Creation-Date: 2005-10-17 19:31+0200\n"
"PO-Revision-Date: 2005-12-30 15:44+0100\n"
"Last-Translator: Miroslav Kure <kurem@debian.cz>\n"
"Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: cmdline/apt-cache.cc:135
+#: cmdline/apt-cache.cc:141
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr "Balík %s verze %s má nesplněné závislosti:\n"
-#: cmdline/apt-cache.cc:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615
-#: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357
-#: cmdline/apt-cache.cc:1508
+#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:638
+#: cmdline/apt-cache.cc:794 cmdline/apt-cache.cc:1012
+#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
#, c-format
msgid "Unable to locate package %s"
msgstr "Nemohu najít balík %s"
-#: cmdline/apt-cache.cc:232
+#: cmdline/apt-cache.cc:245
msgid "Total package names : "
msgstr "Celkem názvů balíků: "
-#: cmdline/apt-cache.cc:272
+#: cmdline/apt-cache.cc:285
msgid " Normal packages: "
msgstr " Normálních balíků: "
-#: cmdline/apt-cache.cc:273
+#: cmdline/apt-cache.cc:286
msgid " Pure virtual packages: "
msgstr " Čistě virtuálních balíků: "
-#: cmdline/apt-cache.cc:274
+#: cmdline/apt-cache.cc:287
msgid " Single virtual packages: "
msgstr " Jednoduchých virtuálních balíků: "
-#: cmdline/apt-cache.cc:275
+#: cmdline/apt-cache.cc:288
msgid " Mixed virtual packages: "
msgstr " Smíšených virtuálních balíků: "
-#: cmdline/apt-cache.cc:276
+#: cmdline/apt-cache.cc:289
msgid " Missing: "
msgstr " Chybějících: "
-#: cmdline/apt-cache.cc:278
+#: cmdline/apt-cache.cc:291
msgid "Total distinct versions: "
msgstr "Celkem různých verzí: "
-#: cmdline/apt-cache.cc:280
+#: cmdline/apt-cache.cc:293
+#, fuzzy
+msgid "Total Distinct Descriptions: "
+msgstr "Celkem různých verzí: "
+
+#: cmdline/apt-cache.cc:295
msgid "Total dependencies: "
msgstr "Celkem závislostí: "
-#: cmdline/apt-cache.cc:283
+#: cmdline/apt-cache.cc:298
msgid "Total ver/file relations: "
msgstr "Celkem vztahů ver/soubor: "
-#: cmdline/apt-cache.cc:285
+#: cmdline/apt-cache.cc:300
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Celkem vztahů ver/soubor: "
+
+#: cmdline/apt-cache.cc:302
msgid "Total Provides mappings: "
msgstr "Celkem poskytnutých mapování: "
-#: cmdline/apt-cache.cc:297
+#: cmdline/apt-cache.cc:314
msgid "Total globbed strings: "
msgstr "Celkem globovaných řetězců: "
-#: cmdline/apt-cache.cc:311
+#: cmdline/apt-cache.cc:328
msgid "Total dependency version space: "
msgstr "Celkem místa závislých verzí: "
-#: cmdline/apt-cache.cc:316
+#: cmdline/apt-cache.cc:333
msgid "Total slack space: "
msgstr "Celkem jalového místa: "
-#: cmdline/apt-cache.cc:324
+#: cmdline/apt-cache.cc:341
msgid "Total space accounted for: "
msgstr "Celkem přiřazeného místa: "
-#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
+#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1212
#, c-format
msgid "Package file %s is out of sync."
msgstr "Soubor balíku %s je špatně synchronizovaný."
-#: cmdline/apt-cache.cc:1231
+#: cmdline/apt-cache.cc:1293
msgid "You must give exactly one pattern"
msgstr "Musíte zadat právě jeden vzor"
-#: cmdline/apt-cache.cc:1385
+#: cmdline/apt-cache.cc:1447
msgid "No packages found"
msgstr "Nebyly nalezeny žádné balíky"
-#: cmdline/apt-cache.cc:1462
+#: cmdline/apt-cache.cc:1524
msgid "Package files:"
msgstr "Soubory balíku:"
-#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
+#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
msgid "Cache is out of sync, can't x-ref a package file"
msgstr "Cache není synchronizovaná, nemohu se odkázat na soubor balíku"
-#: cmdline/apt-cache.cc:1470
+#: cmdline/apt-cache.cc:1532
#, c-format
msgid "%4i %s\n"
msgstr "%4i %s\n"
#. Show any packages have explicit pins
-#: cmdline/apt-cache.cc:1482
+#: cmdline/apt-cache.cc:1544
msgid "Pinned packages:"
msgstr "Vypíchnuté balíky:"
-#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
+#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
msgid "(not found)"
msgstr "(nenalezeno)"
#. Installed version
-#: cmdline/apt-cache.cc:1515
+#: cmdline/apt-cache.cc:1577
msgid " Installed: "
msgstr " Instalovaná verze: "
-#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
+#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
msgid "(none)"
msgstr "(žádná)"
#. Candidate Version
-#: cmdline/apt-cache.cc:1522
+#: cmdline/apt-cache.cc:1584
msgid " Candidate: "
msgstr " Kandidát: "
-#: cmdline/apt-cache.cc:1532
+#: cmdline/apt-cache.cc:1594
msgid " Package pin: "
msgstr " Vypíchnutý balík: "
#. Show the priority tables
-#: cmdline/apt-cache.cc:1541
+#: cmdline/apt-cache.cc:1603
msgid " Version table:"
msgstr " Tabulka verzí:"
-#: cmdline/apt-cache.cc:1556
+#: cmdline/apt-cache.cc:1618
#, c-format
msgid " %4i %s\n"
msgstr " %4i %s\n"
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1713 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2325 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr "%s %s pro %s %s zkompilován na %s %s\n"
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1720
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
" -o=? Nastaví libovolnou volbu, např. -o dir::cache=/tmp\n"
"Více informací viz manuálové stránky apt-cache(8) a apt.conf(5).\n"
-#: cmdline/apt-cdrom.cc:78
-msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr "Zadejte prosím název tohoto média, např. 'Debian 2.1r1 Disk 1'"
-
-#: cmdline/apt-cdrom.cc:93
-msgid "Please insert a Disc in the drive and press enter"
-msgstr "Vložte prosím médium do mechaniky a stiskněte enter"
-
-#: cmdline/apt-cdrom.cc:117
-msgid "Repeat this process for the rest of the CDs in your set."
-msgstr "Tento proces opakujte pro všechna zbývající média."
-
#: cmdline/apt-config.cc:41
msgid "Arguments not in pairs"
msgstr "Argumenty nejsou v párech"
" -c=? Načte tento konfigurační soubor\n"
" -o=? Nastaví libovolnou volbu, např. -o dir::cache=/tmp\n"
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:815
#, c-format
msgid "Unable to write to %s"
msgstr "Nemohu zapsat do %s"
msgid "Archive had no package field"
msgstr "Archiv nemá pole Package"
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
+#: ftparchive/writer.cc:394 ftparchive/writer.cc:602
#, c-format
msgid " %s has no override entry\n"
msgstr " %s nemá žádnou položku pro override\n"
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
+#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
#, c-format
msgid " %s maintainer is %s not %s\n"
msgstr " správce %s je %s, ne %s\n"
msgid "Failed to rename %s to %s"
msgstr "Selhalo přejmenování %s na %s"
-#: cmdline/apt-get.cc:120
+#: cmdline/apt-get.cc:118
msgid "Y"
msgstr "Y"
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1486
#, c-format
msgid "Regex compilation error - %s"
msgstr "Chyba při kompilaci regulárního výrazu - %s"
-#: cmdline/apt-get.cc:237
+#: cmdline/apt-get.cc:235
msgid "The following packages have unmet dependencies:"
msgstr "Následující balíky mají nesplněné závislosti:"
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:325
#, c-format
msgid "but %s is installed"
msgstr "ale %s je nainstalován"
-#: cmdline/apt-get.cc:329
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is to be installed"
msgstr "ale %s se bude instalovat"
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:334
msgid "but it is not installable"
msgstr "ale nedá se nainstalovat"
-#: cmdline/apt-get.cc:338
+#: cmdline/apt-get.cc:336
msgid "but it is a virtual package"
msgstr "ale je to virtuální balík"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not installed"
msgstr "ale není nainstalovaný"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not going to be installed"
msgstr "ale nebude se instalovat"
-#: cmdline/apt-get.cc:346
+#: cmdline/apt-get.cc:344
msgid " or"
msgstr " nebo"
-#: cmdline/apt-get.cc:375
+#: cmdline/apt-get.cc:373
msgid "The following NEW packages will be installed:"
msgstr "Následující NOVÉ balíky budou nainstalovány:"
-#: cmdline/apt-get.cc:401
+#: cmdline/apt-get.cc:399
msgid "The following packages will be REMOVED:"
msgstr "Následující balíky budou ODSTRANĚNY:"
-#: cmdline/apt-get.cc:423
+#: cmdline/apt-get.cc:421
msgid "The following packages have been kept back:"
msgstr "Následující balíky jsou podrženy v aktuální verzi:"
-#: cmdline/apt-get.cc:444
+#: cmdline/apt-get.cc:442
msgid "The following packages will be upgraded:"
msgstr "Následující balíky budou aktualizovány:"
-#: cmdline/apt-get.cc:465
+#: cmdline/apt-get.cc:463
msgid "The following packages will be DOWNGRADED:"
msgstr "Následující balíky budou DEGRADOVÁNY:"
-#: cmdline/apt-get.cc:485
+#: cmdline/apt-get.cc:483
msgid "The following held packages will be changed:"
msgstr "Následující podržené balíky budou změněny:"
-#: cmdline/apt-get.cc:538
+#: cmdline/apt-get.cc:536
#, c-format
msgid "%s (due to %s) "
msgstr "%s (kvůli %s) "
-#: cmdline/apt-get.cc:546
+#: cmdline/apt-get.cc:544
msgid ""
"WARNING: The following essential packages will be removed.\n"
"This should NOT be done unless you know exactly what you are doing!"
"VAROVÁNÍ: Následující nezbytné balíky budou odstraněny.\n"
"Pokud přesně nevíte, co děláte, NEDĚLEJTE to!"
-#: cmdline/apt-get.cc:577
+#: cmdline/apt-get.cc:575
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr "%lu aktualizováno, %lu nově instalováno, "
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:579
#, c-format
msgid "%lu reinstalled, "
msgstr "%lu reinstalováno, "
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu downgraded, "
msgstr "%lu degradováno, "
-#: cmdline/apt-get.cc:585
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr "%lu k odstranění a %lu neaktualizováno.\n"
-#: cmdline/apt-get.cc:589
+#: cmdline/apt-get.cc:587
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr "%lu instalováno nebo odstraněno pouze částečně.\n"
-#: cmdline/apt-get.cc:649
+#: cmdline/apt-get.cc:647
msgid "Correcting dependencies..."
msgstr "Opravuji závislosti..."
-#: cmdline/apt-get.cc:652
+#: cmdline/apt-get.cc:650
msgid " failed."
msgstr " selhalo."
-#: cmdline/apt-get.cc:655
+#: cmdline/apt-get.cc:653
msgid "Unable to correct dependencies"
msgstr "Nemohu opravit závislosti"
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr "Nemohu minimalizovat sadu pro aktualizaci"
-#: cmdline/apt-get.cc:660
+#: cmdline/apt-get.cc:658
msgid " Done"
msgstr " Hotovo"
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:662
msgid "You might want to run `apt-get -f install' to correct these."
msgstr "Pro opravení můžete spustit `apt-get -f install'."
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid "Unmet dependencies. Try using -f."
msgstr "Nesplněné závislosti. Zkuste použít -f."
-#: cmdline/apt-get.cc:689
+#: cmdline/apt-get.cc:687
msgid "WARNING: The following packages cannot be authenticated!"
msgstr "VAROVÁNÍ: Následující balíky nemohou být autentizovány!"
-#: cmdline/apt-get.cc:693
+#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
msgstr "Autentizační varování potlačeno.\n"
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr "Instalovat tyto balíky bez ověření [y/N]? "
-#: cmdline/apt-get.cc:702
+#: cmdline/apt-get.cc:700
msgid "Some packages could not be authenticated"
msgstr "Některé balíky nemohly být autentizovány"
-#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
+#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
msgid "There are problems and -y was used without --force-yes"
msgstr "Vyskytly se problémy a -y bylo použito bez --force-yes"
-#: cmdline/apt-get.cc:755
+#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr "Vnitřní chyba, InstallPackages byl zavolán s porušenými balíky!"
-#: cmdline/apt-get.cc:764
+#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr "Balík je potřeba odstranit ale funkce Odstranit je vypnuta."
-#: cmdline/apt-get.cc:775
+#: cmdline/apt-get.cc:773
msgid "Internal error, Ordering didn't finish"
msgstr "Vnitřní chyba, třídění nedoběhlo do konce"
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
msgstr "Nemohu zamknout adresář pro stahování"
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:2073
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr "Nelze přečíst seznam zdrojů."
-#: cmdline/apt-get.cc:816
+#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
"Jak podivné... velikosti nesouhlasí, ohlaste to na apt@packages.debian.org"
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:819
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr "Potřebuji stáhnout %sB/%sB archivů.\n"
-#: cmdline/apt-get.cc:824
+#: cmdline/apt-get.cc:822
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr "Potřebuji stáhnout %sB archivů.\n"
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr "Po rozbalení bude na disku použito dalších %sB.\n"
-#: cmdline/apt-get.cc:832
+#: cmdline/apt-get.cc:830
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr "Po rozbalení bude na disku uvolněno %sB.\n"
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
#, c-format
msgid "Couldn't determine free space in %s"
msgstr "Nemohu určit volné místo v %s"
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:847
#, c-format
msgid "You don't have enough free space in %s."
msgstr "V %s nemáte dostatek volného místa."
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
+#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882
msgid "Trivial Only specified but this is not a trivial operation."
msgstr "Udáno 'pouze triviální', ovšem toto není triviální operace."
-#: cmdline/apt-get.cc:866
+#: cmdline/apt-get.cc:864
msgid "Yes, do as I say!"
msgstr "Ano, udělej to tak, jak říkám!"
-#: cmdline/apt-get.cc:868
+#: cmdline/apt-get.cc:866
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"Pro pokračování opište frázi '%s'\n"
" ?] "
-#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr "Přerušeno."
-#: cmdline/apt-get.cc:889
+#: cmdline/apt-get.cc:887
msgid "Do you want to continue [Y/n]? "
msgstr "Chcete pokračovat [Y/n]? "
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1336 cmdline/apt-get.cc:1970
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr "Selhalo stažení %s %s\n"
-#: cmdline/apt-get.cc:979
+#: cmdline/apt-get.cc:977
msgid "Some files failed to download"
msgstr "Některé soubory nemohly být staženy"
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:1979
msgid "Download complete and in download only mode"
msgstr "Stahování dokončeno v režimu pouze stáhnout"
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:984
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
"Nemohu stáhnout některé archivy. Možná spusťte apt-get update nebo zkuste --"
"fix-missing?"
-#: cmdline/apt-get.cc:990
+#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
msgstr "--fix-missing a výměna média nejsou momentálně podporovány"
-#: cmdline/apt-get.cc:995
+#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
msgstr "Nemohu opravit chybějící balíky."
-#: cmdline/apt-get.cc:996
+#: cmdline/apt-get.cc:994
msgid "Aborting install."
msgstr "Přerušuji instalaci."
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1028
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr "Pozn: Vybírám %s místo %s\n"
-#: cmdline/apt-get.cc:1040
+#: cmdline/apt-get.cc:1038
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr "Přeskakuji %s, protože je již nainstalován.\n"
-#: cmdline/apt-get.cc:1058
+#: cmdline/apt-get.cc:1056
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr "Balík %s není nainstalován, nelze tedy odstranit\n"
-#: cmdline/apt-get.cc:1069
+#: cmdline/apt-get.cc:1067
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr "Balík %s je virtuální balík poskytovaný:\n"
-#: cmdline/apt-get.cc:1081
+#: cmdline/apt-get.cc:1079
msgid " [Installed]"
msgstr "[Instalovaný]"
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1084
msgid "You should explicitly select one to install."
msgstr "Měli byste explicitně vybrat jeden k instalaci."
-#: cmdline/apt-get.cc:1091
+#: cmdline/apt-get.cc:1089
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
"To může znamenat že balík chybí, byl zastarán, nebo je dostupný\n"
"pouze z jiného zdroje\n"
-#: cmdline/apt-get.cc:1110
+#: cmdline/apt-get.cc:1108
msgid "However the following packages replace it:"
msgstr "Nicméně následující balíky jej nahrazují:"
-#: cmdline/apt-get.cc:1113
+#: cmdline/apt-get.cc:1111
#, c-format
msgid "Package %s has no installation candidate"
msgstr "Balík %s nemá kandidáta pro instalaci"
-#: cmdline/apt-get.cc:1133
+#: cmdline/apt-get.cc:1131
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr "Reinstalace %s není možná, protože nelze stáhnout.\n"
-#: cmdline/apt-get.cc:1141
+#: cmdline/apt-get.cc:1139
#, c-format
msgid "%s is already the newest version.\n"
msgstr "%s je již nejnovější verze.\n"
-#: cmdline/apt-get.cc:1168
+#: cmdline/apt-get.cc:1166
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr "Vydání '%s' pro '%s' nebylo nalezeno"
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr "Verze '%s' pro '%s' nebyla nalezena"
-#: cmdline/apt-get.cc:1176
+#: cmdline/apt-get.cc:1174
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr "Vybraná verze %s (%s) pro %s\n"
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1284
msgid "The update command takes no arguments"
msgstr "Příkaz update neakceptuje žádné argumenty"
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1297 cmdline/apt-get.cc:1391
msgid "Unable to lock the list directory"
msgstr "Nemohu uzamknout list adresář"
-#: cmdline/apt-get.cc:1384
+#: cmdline/apt-get.cc:1355
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
"Některé indexové soubory se nepodařilo stáhnout, jsou ignorovány, nebo jsou "
"použity starší verze."
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1374
msgid "Internal error, AllUpgrade broke stuff"
msgstr "Vnitřní chyba, AllUpgrade pokazil věci"
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1473 cmdline/apt-get.cc:1509
#, c-format
msgid "Couldn't find package %s"
msgstr "Nemohu najít balík %s"
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1496
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr "Pozn: vybírám %s pro regulární výraz '%s'\n"
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1526
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr "Pro opravení následujících můžete spustit `apt-get -f install':"
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1529
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
"Nesplněné závislosti. Zkuste spustit 'apt-get -f install' bez balíků (nebo "
"navrhněte řešení)."
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1541
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"
"nemožnou situaci, nebo, pokud používáte nestabilní distribuci, že\n"
"vyžadované balíky ještě nebyly vytvořeny nebo přesunuty z Příchozí fronty."
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1549
msgid ""
"Since you only requested a single operation it is extremely likely that\n"
"the package is simply not installable and a bug report against\n"
"balík není instalovatelný a měl byste o tom zaslat hlášení o chybě\n"
"(bug report)."
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1554
msgid "The following information may help to resolve the situation:"
msgstr "Následující informace vám mohou pomoci vyřešit tuto situaci:"
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1557
msgid "Broken packages"
msgstr "Poškozené balíky"
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1583
msgid "The following extra packages will be installed:"
msgstr "Následující extra balíky budou instalovány:"
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1654
msgid "Suggested packages:"
msgstr "Navrhované balíky:"
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1655
msgid "Recommended packages:"
msgstr "Doporučované balíky:"
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1675
msgid "Calculating upgrade... "
msgstr "Propočítávám aktualizaci... "
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1678 methods/ftp.cc:702 methods/connect.cc:101
msgid "Failed"
msgstr "Selhalo"
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1683
msgid "Done"
msgstr "Hotovo"
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
msgid "Internal error, problem resolver broke stuff"
msgstr "Vnitřní chyba, řešitel problémů pokazil věci"
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
msgstr "Musíte zadat aspoň jeden balík, pro který se stáhnou zdrojové texty"
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1883 cmdline/apt-get.cc:2091
#, c-format
msgid "Unable to find a source package for %s"
msgstr "Nemohu najít zdrojový balík pro %s"
-#: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
-msgid "Skiping already downloaded file '%s'\n"
-msgstr "Přeskakuji rozbalení již rozbaleného zdroje v %s\n"
-
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1930
#, c-format
msgid "You don't have enough free space in %s"
msgstr "Na %s nemáte dostatek volného místa"
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1935
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr "Potřebuji stáhnout %sB/%sB zdrojových archivů.\n"
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1938
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr "Potřebuji stáhnout %sB zdrojových archivů.\n"
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1944
#, c-format
msgid "Fetch source %s\n"
msgstr "Stáhnout zdroj %s\n"
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:1975
msgid "Failed to fetch some archives."
msgstr "Stažení některých archivů selhalo."
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2003
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr "Přeskakuji rozbalení již rozbaleného zdroje v %s\n"
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2015
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr "Příkaz pro rozbalení '%s' selhal.\n"
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr "Zkontrolujte, zda je nainstalován balíček 'dpkg-dev'.\n"
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2033
#, c-format
msgid "Build command '%s' failed.\n"
msgstr "Příkaz pro sestavení '%s' selhal.\n"
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2052
msgid "Child process failed"
msgstr "Synovský proces selhal"
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2068
msgid "Must specify at least one package to check builddeps for"
msgstr ""
"Musíte zadat alespoň jeden balík, pro který budou kontrolovány závislosti "
"pro sestavení"
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2096
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr "Nemohu získat závislosti pro sestavení %s"
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2116
#, c-format
msgid "%s has no build depends.\n"
msgstr "%s nemá žádné závislosti pro sestavení.\n"
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2168
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr "%s závislost pro %s nemůže být splněna, protože balík %s nebyl nalezen"
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2220
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"%s závislost pro %s nemůže být splněna protože není k dispozici verze balíku "
"%s, která odpovídá požadavku na verzi"
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2255
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
"Selhalo splnění %s závislosti pro %s: Instalovaný balík %s je příliš nový"
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2280
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr "Selhalo splnění %s závislosti pro %s: %s"
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2294
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr "Závislosti pro sestavení %s nemohly být splněny."
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2298
msgid "Failed to process build dependencies"
msgstr "Chyba při zpracování závislostí pro sestavení"
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2330
msgid "Supported modules:"
msgstr "Podporované moduly:"
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2371
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
msgid "Failed to write file %s"
msgstr "Selhal zápis souboru %s"
-#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
+#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgid "Failed to close file %s"
msgstr "Selhalo zavření souboru %s"
msgstr "Soubor %s/%s přepisuje ten z balíku %s"
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
#, c-format
msgid "Unable to read %s"
msgstr "Nemohu číst %s"
msgstr "Adresáře info a temp musí být na stejném souborovém systému"
#. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
-#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
-#: apt-pkg/pkgcachegen.cc:840
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:748
+#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822
+#: apt-pkg/pkgcachegen.cc:945
msgid "Reading package lists"
msgstr "Čtu seznamy balíků"
msgstr "Soubor nebyl nalezen"
#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
-#: methods/gzip.cc:142
+#: methods/gzip.cc:142 methods/rred.cc:234 methods/rred.cc:243
msgid "Failed to stat"
msgstr "Selhalo vyhodnocení"
#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+#: methods/rred.cc:240
msgid "Failed to set modification time"
msgstr "Nelze nastavit čas modifikace"
msgid "Unable to accept connection"
msgstr "Nemohu přijmout spojení"
-#: methods/ftp.cc:864 methods/http.cc:963 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:921 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr "Problém s hashováním souboru"
msgid "Read error from %s process"
msgstr "Chyba čtení z procesu %s"
-#: methods/http.cc:381
+#: methods/http.cc:345
msgid "Waiting for headers"
msgstr "Čekám na hlavičky"
-#: methods/http.cc:527
+#: methods/http.cc:491
#, c-format
msgid "Got a single header line over %u chars"
msgstr "Získal jsem jednu řádku hlavičky přes %u znaků"
-#: methods/http.cc:535
+#: methods/http.cc:499
msgid "Bad header line"
msgstr "Chybná hlavička"
-#: methods/http.cc:554 methods/http.cc:561
+#: methods/http.cc:518 methods/http.cc:525
msgid "The HTTP server sent an invalid reply header"
msgstr "Http server poslal neplatnou hlavičku odpovědi"
-#: methods/http.cc:590
+#: methods/http.cc:554
msgid "The HTTP server sent an invalid Content-Length header"
msgstr "Http server poslal neplatnou hlavičku Content-Length"
-#: methods/http.cc:605
+#: methods/http.cc:569
msgid "The HTTP server sent an invalid Content-Range header"
msgstr "Http server poslal neplatnou hlavičku Content-Range"
-#: methods/http.cc:607
+#: methods/http.cc:571
msgid "This HTTP server has broken range support"
msgstr "Tento HTTP server má porouchanou podporu rozsahů"
-#: methods/http.cc:631
+#: methods/http.cc:595
msgid "Unknown date format"
msgstr "Neznámý formát data"
-#: methods/http.cc:778
+#: methods/http.cc:742
msgid "Select failed"
msgstr "Výběr selhal"
-#: methods/http.cc:783
+#: methods/http.cc:747
msgid "Connection timed out"
msgstr "Čas spojení vypršel"
-#: methods/http.cc:806
+#: methods/http.cc:770
msgid "Error writing to output file"
msgstr "Chyba zápisu do výstupního souboru"
-#: methods/http.cc:837
+#: methods/http.cc:798
msgid "Error writing to file"
msgstr "Chyba zápisu do souboru"
-#: methods/http.cc:865
+#: methods/http.cc:823
msgid "Error writing to the file"
msgstr "Chyba zápisu do souboru"
-#: methods/http.cc:879
+#: methods/http.cc:837
msgid "Error reading from server. Remote end closed connection"
msgstr "Chyba čtení ze serveru. Druhá strana zavřela spojení"
-#: methods/http.cc:881
+#: methods/http.cc:839
msgid "Error reading from server"
msgstr "Chyba čtení ze serveru"
-#: methods/http.cc:1112
+#: methods/http.cc:1070
msgid "Bad header data"
msgstr "Špatné datové záhlaví"
-#: methods/http.cc:1129
+#: methods/http.cc:1087
msgid "Connection failed"
msgstr "Spojení selhalo"
-#: methods/http.cc:1220
+#: methods/http.cc:1178
msgid "Internal error"
msgstr "Vnitřní chyba"
msgid "Couldn't make mmap of %lu bytes"
msgstr "Nešlo mmapovat %lu bajtů"
-#: apt-pkg/contrib/strutl.cc:938
+#: apt-pkg/contrib/strutl.cc:984
#, c-format
msgid "Selection %s not found"
msgstr "Výběr %s nenalezen"
msgid "Unable to stat the mount point %s"
msgstr "Nelze vyhodnotit přípojný bod %s"
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
+#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44
#, c-format
msgid "Unable to change to %s"
msgstr "Nemohu přejít do %s"
msgid "Problem syncing the file"
msgstr "Problém při synchronizování souboru"
-#: apt-pkg/pkgcache.cc:126
+#: apt-pkg/pkgcache.cc:135
msgid "Empty package cache"
msgstr "Cache balíků je prázdná"
-#: apt-pkg/pkgcache.cc:132
+#: apt-pkg/pkgcache.cc:141
msgid "The package cache file is corrupted"
msgstr "Cache soubor balíků je poškozen"
-#: apt-pkg/pkgcache.cc:137
+#: apt-pkg/pkgcache.cc:146
msgid "The package cache file is an incompatible version"
msgstr "Cache soubor balíků je v nekompatibilní verzi"
-#: apt-pkg/pkgcache.cc:142
+#: apt-pkg/pkgcache.cc:151
#, c-format
msgid "This APT does not support the versioning system '%s'"
msgstr "Tento APT nepodporuje systém pro správu verzí '%s'"
-#: apt-pkg/pkgcache.cc:147
+#: apt-pkg/pkgcache.cc:156
msgid "The package cache was built for a different architecture"
msgstr "Cache balíků byla vytvořena pro jinou architekturu"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Depends"
msgstr "Závisí na"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "PreDepends"
msgstr "Předzávisí na"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Suggests"
msgstr "Navrhuje"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Recommends"
msgstr "Doporučuje"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Conflicts"
msgstr "Koliduje s"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Replaces"
msgstr "Nahrazuje"
-#: apt-pkg/pkgcache.cc:220
+#: apt-pkg/pkgcache.cc:229
msgid "Obsoletes"
msgstr "Zastarává"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "important"
msgstr "důležitý"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "required"
msgstr "vyžadovaný"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "standard"
msgstr "standardní"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "optional"
msgstr "volitelný"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "extra"
msgstr "extra"
msgid "Unable to parse package file %s (2)"
msgstr "Nelze zpracovat soubor %s (2)"
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:87
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (URI)"
-#: apt-pkg/sourcelist.cc:96
+#: apt-pkg/sourcelist.cc:89
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (dist)"
-#: apt-pkg/sourcelist.cc:99
+#: apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (zpracování URI)"
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (Absolutní dist)"
-#: apt-pkg/sourcelist.cc:112
+#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr "Zkomolený řádek %lu v seznamu zdrojů %s (zpracování dist)"
-#: apt-pkg/sourcelist.cc:203
+#: apt-pkg/sourcelist.cc:156
#, c-format
msgid "Opening %s"
msgstr "Otevírám %s"
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:450
#, c-format
msgid "Line %u too long in source list %s."
msgstr "Řádek %u v seznamu zdrojů %s je příliš dlouhý."
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:187
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr "Zkomolený řádek %u v seznamu zdrojů %s (typ)"
-#: apt-pkg/sourcelist.cc:244
+#: apt-pkg/sourcelist.cc:191
#, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr "Typ '%s' na řádce %u v seznamu zdrojů %s není známý"
-#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr "Zkomolený řádek %u v seznamu zdrojů %s (id výrobce)"
msgid "Archive directory %spartial is missing."
msgstr "Archivní adresář %spartial chybí."
-#: apt-pkg/acquire.cc:821
+#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
msgstr "Stahuji soubor %li z %li (%s zbývá)"
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr "Vložte prosím disk nazvaný '%s' do mechaniky '%s' a stiskněte enter."
-#: apt-pkg/init.cc:120
+#: apt-pkg/init.cc:122
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr "Balíčkovací systém '%s' není podporován"
-#: apt-pkg/init.cc:136
+#: apt-pkg/init.cc:138
msgid "Unable to determine a suitable packaging system type"
msgstr "Nebylo možno určit vhodný typ balíčkovacího systému"
msgid "Error occurred while processing %s (NewPackage)"
msgstr "Při zpracování %s se objevila chyba (NewPackage)"
-#: apt-pkg/pkgcachegen.cc:129
+#: apt-pkg/pkgcachegen.cc:132
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr "Při zpracování %s se objevila chyba (UsePackage1)"
-#: apt-pkg/pkgcachegen.cc:150
+#: apt-pkg/pkgcachegen.cc:155
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc1)"
+msgstr "Při zpracování %s se objevila chyba (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:180
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr "Při zpracování %s se objevila chyba (UsePackage2)"
-#: apt-pkg/pkgcachegen.cc:154
+#: apt-pkg/pkgcachegen.cc:184
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr "Při zpracování %s se objevila chyba (NewFileVer1)"
-#: apt-pkg/pkgcachegen.cc:184
+#: apt-pkg/pkgcachegen.cc:215
#, c-format
msgid "Error occurred while processing %s (NewVersion1)"
msgstr "Při zpracování %s se objevila chyba (NewVersion1)"
-#: apt-pkg/pkgcachegen.cc:188
+#: apt-pkg/pkgcachegen.cc:219
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr "Při zpracování %s se objevila chyba (UsePackage3)"
-#: apt-pkg/pkgcachegen.cc:192
+#: apt-pkg/pkgcachegen.cc:223
#, c-format
msgid "Error occurred while processing %s (NewVersion2)"
msgstr "Při zpracování %s se objevila chyba (NewVersion2)"
-#: apt-pkg/pkgcachegen.cc:207
+#: apt-pkg/pkgcachegen.cc:247
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc2)"
+msgstr "Při zpracování %s se objevila chyba (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:253
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
"Wow, překročili jste počet jmen balíků, které tato APT zvládá zpracovat."
-#: apt-pkg/pkgcachegen.cc:210
+#: apt-pkg/pkgcachegen.cc:256
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr "Wow, překročili jste počet verzí, které tato APT zvládá zpracovat."
-#: apt-pkg/pkgcachegen.cc:213
+#: apt-pkg/pkgcachegen.cc:259
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Wow, překročili jste počet verzí, které tato APT zvládá zpracovat."
+
+#: apt-pkg/pkgcachegen.cc:262
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
"Wow, překročili jste počet závislostí, které tato APT zvládá zpracovat."
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:290
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr "Chyba při zpracování %s (FindPkg)"
-#: apt-pkg/pkgcachegen.cc:254
+#: apt-pkg/pkgcachegen.cc:303
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr "Při zpracování %s se objevila chyba (CollectFileProvides)"
-#: apt-pkg/pkgcachegen.cc:260
+#: apt-pkg/pkgcachegen.cc:309
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr "Při zpracování závislostí nebyl nalezen balík %s %s"
-#: apt-pkg/pkgcachegen.cc:574
+#: apt-pkg/pkgcachegen.cc:679
#, c-format
msgid "Couldn't stat source package list %s"
msgstr "Nešlo vyhodnotit seznam zdrojových balíků %s"
-#: apt-pkg/pkgcachegen.cc:658
+#: apt-pkg/pkgcachegen.cc:763
msgid "Collecting File Provides"
msgstr "Collecting File poskytuje"
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897
msgid "IO Error saving source cache"
msgstr "Chyba IO při ukládání zdrojové cache"
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr "přejmenování selhalo, %s (%s -> %s)."
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:911
+#: apt-pkg/acquire-item.cc:391 apt-pkg/acquire-item.cc:635
+#: apt-pkg/acquire-item.cc:1336
msgid "MD5Sum mismatch"
msgstr "Neshoda MD5 součtů"
-#: apt-pkg/acquire-item.cc:719
+#: apt-pkg/acquire-item.cc:1150
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"Nebyl jsem schopen nalézt soubor s balíkem %s. To by mohlo znamenat, že "
"tento balík je třeba opravit ručně (kvůli chybějící architektuře)"
-#: apt-pkg/acquire-item.cc:778
+#: apt-pkg/acquire-item.cc:1203
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"Nebyl jsem schopen nalézt soubor s balíkem %s. Asi budete muset tento balík "
"opravit ručně."
-#: apt-pkg/acquire-item.cc:814
+#: apt-pkg/acquire-item.cc:1239
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
"Indexové soubory balíku jsou narušeny. Chybí pole Filename: u balíku %s."
-#: apt-pkg/acquire-item.cc:901
+#: apt-pkg/acquire-item.cc:1326
msgid "Size mismatch"
msgstr "Velikosti nesouhlasí"
msgid "Vendor block %s contains no fingerprint"
msgstr "Blok výrobce %s neobsahuje otisk klíče"
-#: apt-pkg/cdrom.cc:507
+#: apt-pkg/cdrom.cc:531
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Používám přípojný bod %s\n"
"Připojuji CD-ROM\n"
-#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
+#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622
msgid "Identifying.. "
msgstr "Rozpoznávám... "
-#: apt-pkg/cdrom.cc:541
+#: apt-pkg/cdrom.cc:565
#, c-format
msgid "Stored label: %s \n"
msgstr "Uložený název: %s \n"
-#: apt-pkg/cdrom.cc:561
+#: apt-pkg/cdrom.cc:585
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr "Používám přípojný bod %s\n"
-#: apt-pkg/cdrom.cc:579
+#: apt-pkg/cdrom.cc:603
msgid "Unmounting CD-ROM\n"
msgstr "Odpojuji CD-ROM\n"
-#: apt-pkg/cdrom.cc:583
+#: apt-pkg/cdrom.cc:607
msgid "Waiting for disc...\n"
msgstr "Čekám na disk...\n"
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:591
+#: apt-pkg/cdrom.cc:615
msgid "Mounting CD-ROM...\n"
msgstr "Připojuji CD-ROM...\n"
-#: apt-pkg/cdrom.cc:609
+#: apt-pkg/cdrom.cc:633
msgid "Scanning disc for index files..\n"
msgstr "Hledám na disku indexové soubory...\n"
-#: apt-pkg/cdrom.cc:647
-#, c-format
-msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+#: apt-pkg/cdrom.cc:673
+#, fuzzy, c-format
+msgid ""
+"Found %i package indexes, %i source indexes, %i translation indexes and %i "
+"signatures\n"
msgstr "Nalezl jsem indexy balíků (%i), indexy zdrojů (%i) a podpisy (%i)\n"
-#: apt-pkg/cdrom.cc:710
+#: apt-pkg/cdrom.cc:737
msgid "That is not a valid name, try again.\n"
msgstr "Nejedná se o platné jméno, zkuste to znovu.\n"
-#: apt-pkg/cdrom.cc:726
+#: apt-pkg/cdrom.cc:753
#, c-format
msgid ""
"This disc is called: \n"
"Tento disk se nazývá: \n"
"'%s'\n"
-#: apt-pkg/cdrom.cc:730
+#: apt-pkg/cdrom.cc:757
msgid "Copying package lists..."
msgstr "Kopíruji seznamy balíků..."
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:783
msgid "Writing new source list\n"
msgstr "Zapisuji nový seznam balíků\n"
-#: apt-pkg/cdrom.cc:763
+#: apt-pkg/cdrom.cc:792
msgid "Source list entries for this disc are:\n"
msgstr "Seznamy zdrojů na tomto disku jsou:\n"
-#: apt-pkg/cdrom.cc:803
+#: apt-pkg/cdrom.cc:832
msgid "Unmounting CD-ROM..."
msgstr "Odpojuji CD-ROM..."
-#: apt-pkg/indexcopy.cc:261
+#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
#, c-format
msgid "Wrote %i records.\n"
msgstr "Zapsal jsem %i záznamů.\n"
-#: apt-pkg/indexcopy.cc:263
+#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr "Zapsal jsem %i záznamů s chybějícími soubory (%i).\n"
-#: apt-pkg/indexcopy.cc:266
+#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr "Zapsal jsem %i záznamů s nesouhlasícími soubory (%i).\n"
-#: apt-pkg/indexcopy.cc:269
+#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
msgid "Removed with config %s"
msgstr "Odstraněn %s včetně konfiguračního souboru"
+#: methods/rred.cc:219
+#, fuzzy
+msgid "Could not patch file"
+msgstr "Nemohu otevřít soubor %s"
+
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr "Spojení bylo předčasně ukončeno"
+
+#~ msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
+#~ msgstr "Zadejte prosím název tohoto média, např. 'Debian 2.1r1 Disk 1'"
+
+#~ msgid "Please insert a Disc in the drive and press enter"
+#~ msgstr "Vložte prosím médium do mechaniky a stiskněte enter"
+
+#~ msgid "Repeat this process for the rest of the CDs in your set."
+#~ msgstr "Tento proces opakujte pro všechna zbývající média."
+
+#, fuzzy
+#~ msgid "Skiping already downloaded file '%s'\n"
+#~ msgstr "Přeskakuji rozbalení již rozbaleného zdroje v %s\n"
msgstr ""
"Project-Id-Version: apt-da\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:51+0100\n"
+"POT-Creation-Date: 2005-10-17 19:31+0200\n"
"PO-Revision-Date: 2005-11-07 15:28+0100\n"
"Last-Translator: Claus Hindsgaul <claus_h@image.dk>\n"
"Language-Team: Danish <dansk@klid.dk>\n"
"X-Generator: KBabel 1.10.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: cmdline/apt-cache.cc:135
+#: cmdline/apt-cache.cc:141
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr "Pakken %s version %s har en uopfyldt afhængighed:\n"
-#: cmdline/apt-cache.cc:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615
-#: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357
-#: cmdline/apt-cache.cc:1508
+#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:638
+#: cmdline/apt-cache.cc:794 cmdline/apt-cache.cc:1012
+#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
#, c-format
msgid "Unable to locate package %s"
msgstr "Kunne ikke lokalisere pakken %s"
-#: cmdline/apt-cache.cc:232
+#: cmdline/apt-cache.cc:245
msgid "Total package names : "
msgstr "Totale pakkenavne : "
-#: cmdline/apt-cache.cc:272
+#: cmdline/apt-cache.cc:285
msgid " Normal packages: "
msgstr " Normale pakker: "
-#: cmdline/apt-cache.cc:273
+#: cmdline/apt-cache.cc:286
msgid " Pure virtual packages: "
msgstr " Rene virtuelle pakker: "
-#: cmdline/apt-cache.cc:274
+#: cmdline/apt-cache.cc:287
msgid " Single virtual packages: "
msgstr " Enkelte virtuelle pakker: "
-#: cmdline/apt-cache.cc:275
+#: cmdline/apt-cache.cc:288
msgid " Mixed virtual packages: "
msgstr " Blandede virtuelle pakker: "
-#: cmdline/apt-cache.cc:276
+#: cmdline/apt-cache.cc:289
msgid " Missing: "
msgstr " Manglende: "
-#: cmdline/apt-cache.cc:278
+#: cmdline/apt-cache.cc:291
msgid "Total distinct versions: "
msgstr "Totale forskellige versioner: "
-#: cmdline/apt-cache.cc:280
+#: cmdline/apt-cache.cc:293
+#, fuzzy
+msgid "Total Distinct Descriptions: "
+msgstr "Totale forskellige versioner: "
+
+#: cmdline/apt-cache.cc:295
msgid "Total dependencies: "
msgstr "Totale afhængigheder: "
-#: cmdline/apt-cache.cc:283
+#: cmdline/apt-cache.cc:298
msgid "Total ver/file relations: "
msgstr "Totale version/fil-relationer: "
-#: cmdline/apt-cache.cc:285
+#: cmdline/apt-cache.cc:300
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Totale version/fil-relationer: "
+
+#: cmdline/apt-cache.cc:302
msgid "Total Provides mappings: "
msgstr "Totale 'tilbyder'-markeringer: "
-#: cmdline/apt-cache.cc:297
+#: cmdline/apt-cache.cc:314
msgid "Total globbed strings: "
msgstr "Totalle søgemønsterstrenge: "
-#: cmdline/apt-cache.cc:311
+#: cmdline/apt-cache.cc:328
msgid "Total dependency version space: "
msgstr "Total afhængighedsversions-plads: "
-#: cmdline/apt-cache.cc:316
+#: cmdline/apt-cache.cc:333
msgid "Total slack space: "
msgstr "Total 'Slack'-plads: "
-#: cmdline/apt-cache.cc:324
+#: cmdline/apt-cache.cc:341
msgid "Total space accounted for: "
msgstr "Total plads, der kan gøres rede for: "
-#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
+#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1212
#, c-format
msgid "Package file %s is out of sync."
msgstr "Pakkefilen %s er ude af trit."
-#: cmdline/apt-cache.cc:1231
+#: cmdline/apt-cache.cc:1293
msgid "You must give exactly one pattern"
msgstr "Du skal angive nøjagtig ét mønster"
-#: cmdline/apt-cache.cc:1385
+#: cmdline/apt-cache.cc:1447
msgid "No packages found"
msgstr "Fandt ingen pakker"
# Overskriften til apt-cache policy,
# forkorter "Package" væk. CH
-#: cmdline/apt-cache.cc:1462
+#: cmdline/apt-cache.cc:1524
msgid "Package files:"
msgstr "Pakkefiler:"
-#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
+#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
msgid "Cache is out of sync, can't x-ref a package file"
msgstr "Mellemlageret er ude af trit, kan ikke krydsreferere en pakkefil"
-#: cmdline/apt-cache.cc:1470
+#: cmdline/apt-cache.cc:1532
#, c-format
msgid "%4i %s\n"
msgstr "%4i %s\n"
#. Show any packages have explicit pins
-#: cmdline/apt-cache.cc:1482
+#: cmdline/apt-cache.cc:1544
msgid "Pinned packages:"
msgstr "'Pinned' pakker:"
-#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
+#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
msgid "(not found)"
msgstr "(ikke fundet)"
#. Installed version
-#: cmdline/apt-cache.cc:1515
+#: cmdline/apt-cache.cc:1577
msgid " Installed: "
msgstr " Installeret: "
-#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
+#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
msgid "(none)"
msgstr "(ingen)"
#. Candidate Version
-#: cmdline/apt-cache.cc:1522
+#: cmdline/apt-cache.cc:1584
msgid " Candidate: "
msgstr " Kandidat: "
-#: cmdline/apt-cache.cc:1532
+#: cmdline/apt-cache.cc:1594
msgid " Package pin: "
msgstr " Pakke-pin: "
#. Show the priority tables
-#: cmdline/apt-cache.cc:1541
+#: cmdline/apt-cache.cc:1603
msgid " Version table:"
msgstr " Versionstabel:"
-#: cmdline/apt-cache.cc:1556
+#: cmdline/apt-cache.cc:1618
#, c-format
msgid " %4i %s\n"
msgstr " %4i %s\n"
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1713 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2325 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr "%s %s for %s %s oversat på %s %s\n"
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1720
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
" -o=? Angiv et opsætningstilvalg. F.eks. -o dir::cache=/tmp\n"
"Se manualsiderne for apt-cache(8) og apt.conf(5) for flere oplysninger.\n"
-#: cmdline/apt-cdrom.cc:78
-msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr "Angiv et navn for denne disk, som f.eks. 'Debian 2.1r1 Disk 1'"
-
-#: cmdline/apt-cdrom.cc:93
-msgid "Please insert a Disc in the drive and press enter"
-msgstr "Indsæt en disk i drevet og tryk retur"
-
-#: cmdline/apt-cdrom.cc:117
-msgid "Repeat this process for the rest of the CDs in your set."
-msgstr "Gentag processen for resten af cd'erne i dit sæt."
-
#: cmdline/apt-config.cc:41
msgid "Arguments not in pairs"
msgstr "Parametre ikke angivet i par"
" -c=? Læs denne opsætningsfil\n"
" -o=? Angiv et opsætningstilvalg. F.eks. -o dir::cache=/tmp\n"
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:815
#, c-format
msgid "Unable to write to %s"
msgstr "Kunne ikke skrive til %s"
msgid "Archive had no package field"
msgstr "Arkivet havde intet package-felt"
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
+#: ftparchive/writer.cc:394 ftparchive/writer.cc:602
#, c-format
msgid " %s has no override entry\n"
msgstr " %s har ingen tvangs-post\n"
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
+#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
#, c-format
msgid " %s maintainer is %s not %s\n"
msgstr " pakkeansvarlig for %s er %s, ikke %s\n"
msgid "Failed to rename %s to %s"
msgstr "Kunne ikke omdøbe %s til %s"
-#: cmdline/apt-get.cc:120
+#: cmdline/apt-get.cc:118
msgid "Y"
msgstr "J"
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1486
#, c-format
msgid "Regex compilation error - %s"
msgstr "Fejl ved tolkning af regulært udtryk - %s"
-#: cmdline/apt-get.cc:237
+#: cmdline/apt-get.cc:235
msgid "The following packages have unmet dependencies:"
msgstr "Følgende pakker har uopfyldte afhængigheder:"
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:325
#, c-format
msgid "but %s is installed"
msgstr "men %s er installeret"
-#: cmdline/apt-get.cc:329
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is to be installed"
msgstr "men %s forventes installeret"
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:334
msgid "but it is not installable"
msgstr "men den kan ikke installeres"
-#: cmdline/apt-get.cc:338
+#: cmdline/apt-get.cc:336
msgid "but it is a virtual package"
msgstr "men det er en virtuel pakke"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not installed"
msgstr "men den er ikke installeret"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not going to be installed"
msgstr "men den bliver ikke installeret"
-#: cmdline/apt-get.cc:346
+#: cmdline/apt-get.cc:344
msgid " or"
msgstr " eller"
-#: cmdline/apt-get.cc:375
+#: cmdline/apt-get.cc:373
msgid "The following NEW packages will be installed:"
msgstr "Følgende NYE pakker vil blive installeret:"
-#: cmdline/apt-get.cc:401
+#: cmdline/apt-get.cc:399
msgid "The following packages will be REMOVED:"
msgstr "Følgende pakker vil blive AFINSTALLERET:"
-#: cmdline/apt-get.cc:423
+#: cmdline/apt-get.cc:421
msgid "The following packages have been kept back:"
msgstr "Følgende pakker er blevet holdt tilbage:"
-#: cmdline/apt-get.cc:444
+#: cmdline/apt-get.cc:442
msgid "The following packages will be upgraded:"
msgstr "Følgende pakker vil blive opgraderet:"
-#: cmdline/apt-get.cc:465
+#: cmdline/apt-get.cc:463
msgid "The following packages will be DOWNGRADED:"
msgstr "Følgende pakker vil blive NEDGRADERET:"
-#: cmdline/apt-get.cc:485
+#: cmdline/apt-get.cc:483
msgid "The following held packages will be changed:"
msgstr "Følgende tilbageholdte pakker vil blive ændret:"
-#: cmdline/apt-get.cc:538
+#: cmdline/apt-get.cc:536
#, c-format
msgid "%s (due to %s) "
msgstr "%s (grundet %s) "
-#: cmdline/apt-get.cc:546
+#: cmdline/apt-get.cc:544
msgid ""
"WARNING: The following essential packages will be removed.\n"
"This should NOT be done unless you know exactly what you are doing!"
"ADVARSEL: Følgende essentielle pakker vil blive afinstalleret\n"
"Dette bør IKKE ske medmindre du er helt klar over, hvad du laver!"
-#: cmdline/apt-get.cc:577
+#: cmdline/apt-get.cc:575
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr "%lu opgraderes, %lu nyinstalleres, "
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:579
#, c-format
msgid "%lu reinstalled, "
msgstr "%lu geninstalleres, "
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu downgraded, "
msgstr "%lu nedgraderes, "
-#: cmdline/apt-get.cc:585
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr "%lu afinstalleres og %lu opgraderes ikke.\n"
-#: cmdline/apt-get.cc:589
+#: cmdline/apt-get.cc:587
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr "%lu ikke fuldstændigt installerede eller afinstallerede.\n"
-#: cmdline/apt-get.cc:649
+#: cmdline/apt-get.cc:647
msgid "Correcting dependencies..."
msgstr "Retter afhængigheder..."
-#: cmdline/apt-get.cc:652
+#: cmdline/apt-get.cc:650
msgid " failed."
msgstr " mislykkedes."
-#: cmdline/apt-get.cc:655
+#: cmdline/apt-get.cc:653
msgid "Unable to correct dependencies"
msgstr "Kunne ikke rette afhængigheder"
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr "Kunne ikke minimere opgraderingssættet"
-#: cmdline/apt-get.cc:660
+#: cmdline/apt-get.cc:658
msgid " Done"
msgstr " Færdig"
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:662
msgid "You might want to run `apt-get -f install' to correct these."
msgstr "Du kan muligvis rette dette ved at køre 'apt-get -f install'."
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid "Unmet dependencies. Try using -f."
msgstr "Uopfyldte afhængigheder. Prøv med -f."
-#: cmdline/apt-get.cc:689
+#: cmdline/apt-get.cc:687
msgid "WARNING: The following packages cannot be authenticated!"
msgstr "ADVARSEL: Følgende pakkers autensitet kunne ikke verificeres!"
-#: cmdline/apt-get.cc:693
+#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
msgstr "Autentifikationsadvarsel tilsidesat.\n"
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr "Installér disse pakker uden verifikation (y/N)? "
-#: cmdline/apt-get.cc:702
+#: cmdline/apt-get.cc:700
msgid "Some packages could not be authenticated"
msgstr "Nogle pakker kunne ikke autentificeres"
-#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
+#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
msgid "There are problems and -y was used without --force-yes"
msgstr "Der er problemer og -y blev brugt uden --force-yes"
-#: cmdline/apt-get.cc:755
+#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr "Intern fejl. InstallPackages blev kaldt med ødelagte pakker!"
-#: cmdline/apt-get.cc:764
+#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr "Pakker skal afinstalleres, men Remove er deaktiveret."
-#: cmdline/apt-get.cc:775
+#: cmdline/apt-get.cc:773
msgid "Internal error, Ordering didn't finish"
msgstr "Intern fejl. Sortering blev ikke fuldført"
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
msgstr "Kunne ikke låse nedhentningsmappen"
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:2073
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr "Listen med kilder kunne ikke læses."
-#: cmdline/apt-get.cc:816
+#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr "Mystisk.. Størrelserne passede ikke, skriv til apt@packages.debian.org"
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:819
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr "%sB/%sB skal hentes fra arkiverne.\n"
-#: cmdline/apt-get.cc:824
+#: cmdline/apt-get.cc:822
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr "%sB skal hentes fra arkiverne.\n"
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr "Efter udpakning vil %sB yderligere diskplads være brugt.\n"
-#: cmdline/apt-get.cc:832
+#: cmdline/apt-get.cc:830
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr "Efter udpakning vil %sB diskplads blive frigjort.\n"
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
#, c-format
msgid "Couldn't determine free space in %s"
msgstr "Kunne ikke bestemme ledig plads i %s"
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:847
#, c-format
msgid "You don't have enough free space in %s."
msgstr "Du har ikke nok ledig plads i %s."
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
+#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882
msgid "Trivial Only specified but this is not a trivial operation."
msgstr "'Trivial Only' angivet, men dette er ikke en triviel handling."
-#: cmdline/apt-get.cc:866
+#: cmdline/apt-get.cc:864
msgid "Yes, do as I say!"
msgstr "Ja, gør som jeg siger!"
-#: cmdline/apt-get.cc:868
+#: cmdline/apt-get.cc:866
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"For at fortsætte, skal du skrive '%s'\n"
" ?] "
-#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr "Afbryder."
-#: cmdline/apt-get.cc:889
+#: cmdline/apt-get.cc:887
msgid "Do you want to continue [Y/n]? "
msgstr "Vil du fortsætte [J/n]? "
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1336 cmdline/apt-get.cc:1970
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr "Kunne ikke hente %s %s\n"
-#: cmdline/apt-get.cc:979
+#: cmdline/apt-get.cc:977
msgid "Some files failed to download"
msgstr "Nedhentningen af filer mislykkedes"
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:1979
msgid "Download complete and in download only mode"
msgstr "Nedhentning afsluttet i 'hent-kun'-tilstand"
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:984
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
"Kunne ikke hente nogle af arkiverne. Prøv evt. at køre 'apt-get update' "
"eller prøv med --fix-missing."
-#: cmdline/apt-get.cc:990
+#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
msgstr "--fix-missing og medieskift understøttes endnu ikke"
-#: cmdline/apt-get.cc:995
+#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
msgstr "Kunne ikke rette manglende pakker."
-#: cmdline/apt-get.cc:996
+#: cmdline/apt-get.cc:994
msgid "Aborting install."
msgstr "Afbryder installationen."
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1028
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr "Bemærk, at %s vælges fremfor %s\n"
-#: cmdline/apt-get.cc:1040
+#: cmdline/apt-get.cc:1038
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
"Overspringer %s, da den allerede er installeret og opgradering er "
"deaktiveret.\n"
-#: cmdline/apt-get.cc:1058
+#: cmdline/apt-get.cc:1056
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr "Pakken %s er ikke installeret, så den afinstalleres ikke\n"
-#: cmdline/apt-get.cc:1069
+#: cmdline/apt-get.cc:1067
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr "Pakken %s er en virtuel pakke, der kan leveres af:\n"
-#: cmdline/apt-get.cc:1081
+#: cmdline/apt-get.cc:1079
msgid " [Installed]"
msgstr " [Installeret]"
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1084
msgid "You should explicitly select one to install."
msgstr "Du bør eksplicit vælge en at installere."
-#: cmdline/apt-get.cc:1091
+#: cmdline/apt-get.cc:1089
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
"anden pakke. Det kan betyde at denne pakke blevet overflødiggjort eller \n"
"kun kan hentes fra andre kilder\n"
-#: cmdline/apt-get.cc:1110
+#: cmdline/apt-get.cc:1108
msgid "However the following packages replace it:"
msgstr "Dog kan følgende pakker erstatte den:"
-#: cmdline/apt-get.cc:1113
+#: cmdline/apt-get.cc:1111
#, c-format
msgid "Package %s has no installation candidate"
msgstr "Pakken %s har ingen installationskandidat"
-#: cmdline/apt-get.cc:1133
+#: cmdline/apt-get.cc:1131
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr "Geninstallering af %s er ikke mulig, da den ikke kan hentes.\n"
-#: cmdline/apt-get.cc:1141
+#: cmdline/apt-get.cc:1139
#, c-format
msgid "%s is already the newest version.\n"
msgstr "%s er i forvejen den nyeste version.\n"
-#: cmdline/apt-get.cc:1168
+#: cmdline/apt-get.cc:1166
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr "Udgaven '%s' for '%s' blev ikke fundet"
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr "Versionen '%s' for '%s' blev ikke fundet"
-#: cmdline/apt-get.cc:1176
+#: cmdline/apt-get.cc:1174
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr "Valgte version %s (%s) af %s\n"
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1284
msgid "The update command takes no arguments"
msgstr "'update'-kommandoen benytter ingen parametre"
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1297 cmdline/apt-get.cc:1391
msgid "Unable to lock the list directory"
msgstr "Kunne ikke låse listemappen"
-#: cmdline/apt-get.cc:1384
+#: cmdline/apt-get.cc:1355
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
"Nogle indeksfiler kunne ikke hentes, de er blevet ignoreret eller de gamle "
"bruges i stedet."
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1374
msgid "Internal error, AllUpgrade broke stuff"
msgstr "Intern fejl, AllUpgrade ødelagde noget"
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1473 cmdline/apt-get.cc:1509
#, c-format
msgid "Couldn't find package %s"
msgstr "Kunne ikke finde pakken %s"
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1496
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr "Bemærk, vælger %s som regulært udtryk '%s'\n"
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1526
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr "Du kan muligvis rette det ved at køre 'apt-get -f install':"
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1529
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
"Uopfyldte afhængigheder. Prøv 'apt-get -f install' uden pakker (eller angiv "
"en løsning)."
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1541
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"
"en umulig situation eller bruger den ustabile distribution, hvor enkelte\n"
"pakker endnu ikke er lavet eller gjort tilgængelige."
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1549
msgid ""
"Since you only requested a single operation it is extremely likely that\n"
"the package is simply not installable and a bug report against\n"
"Siden du kan bad om en enkelt handling, kan pakken højst sandsynligt slet\n"
"ikke installeres og du bør indsende en fejlrapport for denne pakke."
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1554
msgid "The following information may help to resolve the situation:"
msgstr "Følgende oplysninger kan hjælpe dig med at klare situationen:"
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1557
msgid "Broken packages"
msgstr "Ødelagte pakker"
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1583
msgid "The following extra packages will be installed:"
msgstr "Følgende yderligere pakker vil blive installeret:"
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1654
msgid "Suggested packages:"
msgstr "Foreslåede pakker:"
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1655
msgid "Recommended packages:"
msgstr "Anbefalede pakker:"
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1675
msgid "Calculating upgrade... "
msgstr "Beregner opgraderingen... "
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1678 methods/ftp.cc:702 methods/connect.cc:101
msgid "Failed"
msgstr "Mislykkedes"
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1683
msgid "Done"
msgstr "Færdig"
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
msgid "Internal error, problem resolver broke stuff"
msgstr "Intern fejl. Problemløseren ødelagde noget"
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
msgstr "Du skal angive mindst én pakke at hente kildeteksten til"
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1883 cmdline/apt-get.cc:2091
#, c-format
msgid "Unable to find a source package for %s"
msgstr "Kunne ikke finde kildetekstpakken for %s"
-#: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
-msgid "Skiping already downloaded file '%s'\n"
-msgstr "Overspringer udpakning af allerede udpakket kildetekst i %s\n"
-
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1930
#, c-format
msgid "You don't have enough free space in %s"
msgstr "Du har ikke nok ledig plads i %s"
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1935
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr "%sB/%sB skal hentes fra kildetekst-arkiverne.\n"
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1938
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr "%sB skal hentes fra kildetekst-arkiverne.\n"
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1944
#, c-format
msgid "Fetch source %s\n"
msgstr "Henter kildetekst %s\n"
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:1975
msgid "Failed to fetch some archives."
msgstr "Nogle arkiver kunne ikke hentes."
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2003
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr "Overspringer udpakning af allerede udpakket kildetekst i %s\n"
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2015
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr "Udpakningskommandoen '%s' fejlede.\n"
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr "Tjek om pakken 'dpkg-dev' er installeret.\n"
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2033
#, c-format
msgid "Build command '%s' failed.\n"
msgstr "Opbygningskommandoen '%s' fejlede.\n"
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2052
msgid "Child process failed"
msgstr "Barneprocessen fejlede"
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2068
msgid "Must specify at least one package to check builddeps for"
msgstr "Skal angive mindst én pakke at tjekke opbygningsafhængigheder for"
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2096
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr "Kunne ikke hente oplysninger om opbygningsafhængigheder for %s"
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2116
#, c-format
msgid "%s has no build depends.\n"
msgstr "%s har ingen opbygningsafhængigheder.\n"
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2168
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
msgstr ""
"%s-afhængigheden for %s kan ikke opfyldes, da pakken %s ikke blev fundet"
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2220
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"%s-afhængigheden for %s kan ikke opfyldes, da ingen af de tilgængelige "
"udgaver af pakken %s kan tilfredsstille versions-kravene"
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2255
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
"Kunne ikke opfylde %s-afhængigheden for %s: Den installerede pakke %s er for "
"ny"
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2280
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr "Kunne ikke opfylde %s-afhængigheden for %s: %s"
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2294
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr "Opbygningsafhængigheden for %s kunne ikke opfyldes."
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2298
msgid "Failed to process build dependencies"
msgstr "Kunne ikke behandler opbygningsafhængighederne"
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2330
msgid "Supported modules:"
msgstr "Understøttede moduler:"
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2371
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
msgid "Failed to write file %s"
msgstr "Kunne ikke skrive filen %s"
-#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
+#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgid "Failed to close file %s"
msgstr "Kunne ikke lukke filen %s"
msgstr "File %s/%s overskriver filen i pakken %s"
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
#, c-format
msgid "Unable to read %s"
msgstr "Kunne ikke læse %s"
msgstr "Mapperne info og temp skal ligge i samme filsystem"
#. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
-#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
-#: apt-pkg/pkgcachegen.cc:840
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:748
+#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822
+#: apt-pkg/pkgcachegen.cc:945
msgid "Reading package lists"
msgstr "Indlæser pakkelisterne"
msgstr "Fil blev ikke fundet"
#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
-#: methods/gzip.cc:142
+#: methods/gzip.cc:142 methods/rred.cc:234 methods/rred.cc:243
msgid "Failed to stat"
msgstr "Kunne ikke finde"
#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+#: methods/rred.cc:240
msgid "Failed to set modification time"
msgstr "Kunne ikke angive ændringstidspunkt"
msgid "Unable to accept connection"
msgstr "Kunne ikke acceptere forbindelse"
-#: methods/ftp.cc:864 methods/http.cc:963 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:921 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr "Problem ved \"hashing\" af fil"
msgid "Read error from %s process"
msgstr "Læsefejl fra %s-process"
-#: methods/http.cc:381
+#: methods/http.cc:345
msgid "Waiting for headers"
msgstr "Afventer hoveder"
-#: methods/http.cc:527
+#: methods/http.cc:491
#, c-format
msgid "Got a single header line over %u chars"
msgstr "Fandt en enkelt linje i hovedet på over %u tegn"
-#: methods/http.cc:535
+#: methods/http.cc:499
msgid "Bad header line"
msgstr "Ugyldig linje i hovedet"
-#: methods/http.cc:554 methods/http.cc:561
+#: methods/http.cc:518 methods/http.cc:525
msgid "The HTTP server sent an invalid reply header"
msgstr "http-serveren sendte et ugyldigt svarhovede"
-#: methods/http.cc:590
+#: methods/http.cc:554
msgid "The HTTP server sent an invalid Content-Length header"
msgstr "http-serveren sendte et ugyldigt Content-Length-hovede"
-#: methods/http.cc:605
+#: methods/http.cc:569
msgid "The HTTP server sent an invalid Content-Range header"
msgstr "http-serveren sendte et ugyldigt Content-Range-hovede"
-#: methods/http.cc:607
+#: methods/http.cc:571
msgid "This HTTP server has broken range support"
msgstr ""
"Denne http-servere har fejlagtig understøttelse af intervaller ('ranges')"
-#: methods/http.cc:631
+#: methods/http.cc:595
msgid "Unknown date format"
msgstr "Ukendt datoformat"
-#: methods/http.cc:778
+#: methods/http.cc:742
msgid "Select failed"
msgstr "Valg mislykkedes"
-#: methods/http.cc:783
+#: methods/http.cc:747
msgid "Connection timed out"
msgstr "Tidsudløb på forbindelsen"
-#: methods/http.cc:806
+#: methods/http.cc:770
msgid "Error writing to output file"
msgstr "Fejl ved skrivning af uddatafil"
-#: methods/http.cc:837
+#: methods/http.cc:798
msgid "Error writing to file"
msgstr "Fejl ved skrivning til fil"
-#: methods/http.cc:865
+#: methods/http.cc:823
msgid "Error writing to the file"
msgstr "Fejl ved skrivning til filen"
-#: methods/http.cc:879
+#: methods/http.cc:837
msgid "Error reading from server. Remote end closed connection"
msgstr "Fejl ved læsning fra serveren. Den fjerne ende lukkede forbindelsen"
-#: methods/http.cc:881
+#: methods/http.cc:839
msgid "Error reading from server"
msgstr "Fejl ved læsning fra server"
-#: methods/http.cc:1112
+#: methods/http.cc:1070
msgid "Bad header data"
msgstr "Ugyldige hoved-data"
-#: methods/http.cc:1129
+#: methods/http.cc:1087
msgid "Connection failed"
msgstr "Forbindelsen mislykkedes"
-#: methods/http.cc:1220
+#: methods/http.cc:1178
msgid "Internal error"
msgstr "Intern fejl"
msgid "Couldn't make mmap of %lu bytes"
msgstr "Kunne ikke udføre mmap for %lu byte"
-#: apt-pkg/contrib/strutl.cc:938
+#: apt-pkg/contrib/strutl.cc:984
#, c-format
msgid "Selection %s not found"
msgstr "Det valgte %s blev ikke fundet"
msgid "Unable to stat the mount point %s"
msgstr "Kunne ikke finde monteringspunktet %s"
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
+#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44
#, c-format
msgid "Unable to change to %s"
msgstr "Kunne ikke skifte til %s"
msgid "Problem syncing the file"
msgstr "Problem under synkronisering af fil"
-#: apt-pkg/pkgcache.cc:126
+#: apt-pkg/pkgcache.cc:135
msgid "Empty package cache"
msgstr "Tomt pakke-mellemlager"
-#: apt-pkg/pkgcache.cc:132
+#: apt-pkg/pkgcache.cc:141
msgid "The package cache file is corrupted"
msgstr "Pakke-mellemlagerets fil er ødelagt"
-#: apt-pkg/pkgcache.cc:137
+#: apt-pkg/pkgcache.cc:146
msgid "The package cache file is an incompatible version"
msgstr "Pakke-mellemlagerets fil er af en inkompatibel version"
-#: apt-pkg/pkgcache.cc:142
+#: apt-pkg/pkgcache.cc:151
#, c-format
msgid "This APT does not support the versioning system '%s'"
msgstr "Denne APT understøtter ikke versionssystemet '%s'"
-#: apt-pkg/pkgcache.cc:147
+#: apt-pkg/pkgcache.cc:156
msgid "The package cache was built for a different architecture"
msgstr "Pakke-mellemlageret er lavet til en anden arkitektur"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Depends"
msgstr "Afhængigheder"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "PreDepends"
msgstr "Præ-afhængigheder"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Suggests"
msgstr "Foreslåede"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Recommends"
msgstr "Anbefalede"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Conflicts"
msgstr "Konflikter"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Replaces"
msgstr "Erstatter"
-#: apt-pkg/pkgcache.cc:220
+#: apt-pkg/pkgcache.cc:229
msgid "Obsoletes"
msgstr "Overflødiggør"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "important"
msgstr "vigtig"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "required"
msgstr "krævet"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "standard"
msgstr "standard"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "optional"
msgstr "frivillig"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "extra"
msgstr "ekstra"
msgid "Unable to parse package file %s (2)"
msgstr "Kunne ikke tolke pakkefilen %s (2)"
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:87
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr "Ugyldig linje %lu i kildelisten %s (URI)"
-#: apt-pkg/sourcelist.cc:96
+#: apt-pkg/sourcelist.cc:89
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr "Ugyldig linje %lu i kildelisten %s (dist)"
-#: apt-pkg/sourcelist.cc:99
+#: apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr "Ugyldig linje %lu i kildelisten %s (tolkning af URI)"
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr "Ugyldig linje %lu i kildelisten %s (absolut dist)"
-#: apt-pkg/sourcelist.cc:112
+#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr "Ugyldig linje %lu i kildelisten %s (tolkning af dist)"
-#: apt-pkg/sourcelist.cc:203
+#: apt-pkg/sourcelist.cc:156
#, c-format
msgid "Opening %s"
msgstr "Åbner %s"
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:450
#, c-format
msgid "Line %u too long in source list %s."
msgstr "Linjen %u er for lang i kildelisten %s."
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:187
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr "Ugyldig linje %u i kildelisten %s (type)"
-#: apt-pkg/sourcelist.cc:244
+#: apt-pkg/sourcelist.cc:191
#, fuzzy, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr "Typen '%s' er ukendt på linje %u i kildelisten %s"
-#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr "Ugyldig linje %u i kildelisten %s (producent-id)"
msgid "Archive directory %spartial is missing."
msgstr "Arkivmappen %spartial mangler."
-#: apt-pkg/acquire.cc:821
+#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
msgstr "Henter fil %li ud af %li (%s tilbage)"
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr "Indsæt disken med navnet: '%s' i drevet '%s' og tryk retur."
-#: apt-pkg/init.cc:120
+#: apt-pkg/init.cc:122
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr "Pakkesystemet '%s' understøttes ikke"
-#: apt-pkg/init.cc:136
+#: apt-pkg/init.cc:138
msgid "Unable to determine a suitable packaging system type"
msgstr "Kunne ikke bestemme en passende pakkesystemtype"
msgid "Error occurred while processing %s (NewPackage)"
msgstr "Der skete en fejl under behandlingen af %s (NewPackage)"
-#: apt-pkg/pkgcachegen.cc:129
+#: apt-pkg/pkgcachegen.cc:132
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr "Der skete en fejl under behandlingen af %s (UsePackage1)"
-#: apt-pkg/pkgcachegen.cc:150
+#: apt-pkg/pkgcachegen.cc:155
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc1)"
+msgstr "Der skete en fejl under behandlingen af %s (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:180
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr "Der skete en fejl under behandlingen af %s (UsePackage2)"
-#: apt-pkg/pkgcachegen.cc:154
+#: apt-pkg/pkgcachegen.cc:184
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr "Der skete en fejl under behandlingen af %s (NewFileVer1)"
-#: apt-pkg/pkgcachegen.cc:184
+#: apt-pkg/pkgcachegen.cc:215
#, c-format
msgid "Error occurred while processing %s (NewVersion1)"
msgstr "Der skete en fejl under behandlingen af %s (NewVersion1)"
-#: apt-pkg/pkgcachegen.cc:188
+#: apt-pkg/pkgcachegen.cc:219
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr "Der skete en fejl under behandlingen af %s (UsePackage3)"
-#: apt-pkg/pkgcachegen.cc:192
+#: apt-pkg/pkgcachegen.cc:223
#, c-format
msgid "Error occurred while processing %s (NewVersion2)"
msgstr "Der skete en fejl under behandlingen af %s (NewVersion2)"
-#: apt-pkg/pkgcachegen.cc:207
+#: apt-pkg/pkgcachegen.cc:247
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc2)"
+msgstr "Der skete en fejl under behandlingen af %s (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:253
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
"Hold da op! Du nåede over det antal pakkenavne, denne APT kan håndtere."
-#: apt-pkg/pkgcachegen.cc:210
+#: apt-pkg/pkgcachegen.cc:256
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr "Hold da op! Du nåede over det antal versioner, denne APT kan håndtere."
-#: apt-pkg/pkgcachegen.cc:213
+#: apt-pkg/pkgcachegen.cc:259
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr "Hold da op! Du nåede over det antal versioner, denne APT kan håndtere."
+
+#: apt-pkg/pkgcachegen.cc:262
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
"Hold da op! Du nåede over det antal afhængigheder, denne APT kan håndtere."
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:290
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr "Der skete en fejl under behandlingen af %s (FindPkg)"
-#: apt-pkg/pkgcachegen.cc:254
+#: apt-pkg/pkgcachegen.cc:303
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr "Der skete en fejl under behandlingen af %s (CollectfileProvides)"
-#: apt-pkg/pkgcachegen.cc:260
+#: apt-pkg/pkgcachegen.cc:309
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr "Pakken %s %s blev ikke fundet under behandlingen af filafhængigheder"
-#: apt-pkg/pkgcachegen.cc:574
+#: apt-pkg/pkgcachegen.cc:679
#, c-format
msgid "Couldn't stat source package list %s"
msgstr "Kunne ikke finde kildepakkelisten %s"
-#: apt-pkg/pkgcachegen.cc:658
+#: apt-pkg/pkgcachegen.cc:763
msgid "Collecting File Provides"
msgstr "Samler filudbud"
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897
msgid "IO Error saving source cache"
msgstr "IO-fejl ved gemning af kilde-mellemlageret"
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr "omdøbning mislykkedes, %s (%s -> %s)."
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:911
+#: apt-pkg/acquire-item.cc:391 apt-pkg/acquire-item.cc:635
+#: apt-pkg/acquire-item.cc:1336
msgid "MD5Sum mismatch"
msgstr "MD5Sum stemmer ikke"
-#: apt-pkg/acquire-item.cc:719
+#: apt-pkg/acquire-item.cc:1150
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"Jeg kunne ikke lokalisere filen til %s-pakken. Det betyder muligvis at du er "
"nødt til manuelt at reparere denne pakke. (grundet manglende arch)"
-#: apt-pkg/acquire-item.cc:778
+#: apt-pkg/acquire-item.cc:1203
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"Jeg kunne ikke lokalisere filen til %s-pakken. Det betyder muligvis at du er "
"nødt til manuelt at reparere denne pakke."
-#: apt-pkg/acquire-item.cc:814
+#: apt-pkg/acquire-item.cc:1239
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr "Pakkeindeksfilerne er i stykker. Intet 'Filename:'-felt for pakken %s."
-#: apt-pkg/acquire-item.cc:901
+#: apt-pkg/acquire-item.cc:1326
msgid "Size mismatch"
msgstr "Størrelsen stemmer ikke"
msgid "Vendor block %s contains no fingerprint"
msgstr "Leverandørblok %s inderholder intet fingeraftryk"
-#: apt-pkg/cdrom.cc:507
+#: apt-pkg/cdrom.cc:531
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Bruger cdrom-monteringspunktet %s\n"
"Monterer cdrom\n"
-#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
+#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622
msgid "Identifying.. "
msgstr "Identificerer.. "
-#: apt-pkg/cdrom.cc:541
+#: apt-pkg/cdrom.cc:565
#, c-format
msgid "Stored label: %s \n"
msgstr "Gemt mærkat: %s \n"
-#: apt-pkg/cdrom.cc:561
+#: apt-pkg/cdrom.cc:585
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr "Bruger cdrom-monteringspunktet %s\n"
-#: apt-pkg/cdrom.cc:579
+#: apt-pkg/cdrom.cc:603
msgid "Unmounting CD-ROM\n"
msgstr "Afmonterer cdrom\n"
-#: apt-pkg/cdrom.cc:583
+#: apt-pkg/cdrom.cc:607
msgid "Waiting for disc...\n"
msgstr "Venter på disken...\n"
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:591
+#: apt-pkg/cdrom.cc:615
msgid "Mounting CD-ROM...\n"
msgstr "Monterer cdrom...\n"
-#: apt-pkg/cdrom.cc:609
+#: apt-pkg/cdrom.cc:633
msgid "Scanning disc for index files..\n"
msgstr "Skanner disken for indeksfiler..\n"
-#: apt-pkg/cdrom.cc:647
-#, c-format
-msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+#: apt-pkg/cdrom.cc:673
+#, fuzzy, c-format
+msgid ""
+"Found %i package indexes, %i source indexes, %i translation indexes and %i "
+"signatures\n"
msgstr "Fandt %i pakkeindekser, %i kildeindekser og %i signaturer\n"
-#: apt-pkg/cdrom.cc:710
+#: apt-pkg/cdrom.cc:737
msgid "That is not a valid name, try again.\n"
msgstr "Det er ikke et gyldigt navn, prøv igen.\n"
-#: apt-pkg/cdrom.cc:726
+#: apt-pkg/cdrom.cc:753
#, c-format
msgid ""
"This disc is called: \n"
"Denne disk hedder: \n"
" %s \n"
-#: apt-pkg/cdrom.cc:730
+#: apt-pkg/cdrom.cc:757
msgid "Copying package lists..."
msgstr "Kopierer pakkelisterne..."
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:783
msgid "Writing new source list\n"
msgstr "Skriver ny kildeliste\n"
-#: apt-pkg/cdrom.cc:763
+#: apt-pkg/cdrom.cc:792
msgid "Source list entries for this disc are:\n"
msgstr "Denne disk har følgende kildeliste-indgange:\n"
-#: apt-pkg/cdrom.cc:803
+#: apt-pkg/cdrom.cc:832
msgid "Unmounting CD-ROM..."
msgstr "Afmonterer cdrom..."
-#: apt-pkg/indexcopy.cc:261
+#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
#, c-format
msgid "Wrote %i records.\n"
msgstr "Skrev %i poster.\n"
-#: apt-pkg/indexcopy.cc:263
+#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr "Skrev %i poster med %i manglende filer.\n"
-#: apt-pkg/indexcopy.cc:266
+#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr "Skrev %i poster med %i ikke-trufne filer\n"
-#: apt-pkg/indexcopy.cc:269
+#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr "Skrev %i poster med %i manglende filer og %i ikke-trufne filer\n"
msgid "Removed with config %s"
msgstr "Fjernede %s inklusive opsætning"
+#: methods/rred.cc:219
+#, fuzzy
+msgid "Could not patch file"
+msgstr "Kunne ikke åbne filen %s"
+
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr "Forbindelsen lukkedes for hurtigt"
+#~ msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
+#~ msgstr "Angiv et navn for denne disk, som f.eks. 'Debian 2.1r1 Disk 1'"
+
+#~ msgid "Please insert a Disc in the drive and press enter"
+#~ msgstr "Indsæt en disk i drevet og tryk retur"
+
+#~ msgid "Repeat this process for the rest of the CDs in your set."
+#~ msgstr "Gentag processen for resten af cd'erne i dit sæt."
+
+#, fuzzy
+#~ msgid "Skiping already downloaded file '%s'\n"
+#~ msgstr "Overspringer udpakning af allerede udpakket kildetekst i %s\n"
+
#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
#~ msgstr "Ukendt leverandør-ID '%s' på linje %u i kildelisten %s"
msgstr ""
"Project-Id-Version: apt 0.5.26\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-01-04 18:51+0100\n"
+"POT-Creation-Date: 2005-10-17 19:31+0200\n"
"PO-Revision-Date: 2005-06-15 18:22+0200\n"
"Last-Translator: Michael Piefel <piefel@debian.org>\n"
"Language-Team: <de@li.org>\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: cmdline/apt-cache.cc:135
+#: cmdline/apt-cache.cc:141
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr "Paket %s Version %s hat eine nichterfüllte Abhängigkeit:\n"
-#: cmdline/apt-cache.cc:175 cmdline/apt-cache.cc:527 cmdline/apt-cache.cc:615
-#: cmdline/apt-cache.cc:771 cmdline/apt-cache.cc:989 cmdline/apt-cache.cc:1357
-#: cmdline/apt-cache.cc:1508
+#: cmdline/apt-cache.cc:181 cmdline/apt-cache.cc:550 cmdline/apt-cache.cc:638
+#: cmdline/apt-cache.cc:794 cmdline/apt-cache.cc:1012
+#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
#, c-format
msgid "Unable to locate package %s"
msgstr "Kann Paket %s nicht finden"
-#: cmdline/apt-cache.cc:232
+#: cmdline/apt-cache.cc:245
msgid "Total package names : "
msgstr "Gesamtzahl an Paketnamen: "
-#: cmdline/apt-cache.cc:272
+#: cmdline/apt-cache.cc:285
msgid " Normal packages: "
msgstr " davon gewöhnliche Pakete: "
-#: cmdline/apt-cache.cc:273
+#: cmdline/apt-cache.cc:286
msgid " Pure virtual packages: "
msgstr " davon rein virtuelle Pakete: "
-#: cmdline/apt-cache.cc:274
+#: cmdline/apt-cache.cc:287
msgid " Single virtual packages: "
msgstr " davon einzelne virtuelle Pakete: "
-#: cmdline/apt-cache.cc:275
+#: cmdline/apt-cache.cc:288
msgid " Mixed virtual packages: "
msgstr " davon gemischte virtuelle Pakete: "
-#: cmdline/apt-cache.cc:276
+#: cmdline/apt-cache.cc:289
msgid " Missing: "
msgstr " davon fehlend: "
-#: cmdline/apt-cache.cc:278
+#: cmdline/apt-cache.cc:291
msgid "Total distinct versions: "
msgstr "Gesamtzahl an unterschiedlichen Versionen: "
-#: cmdline/apt-cache.cc:280
+#: cmdline/apt-cache.cc:293
+#, fuzzy
+msgid "Total Distinct Descriptions: "
+msgstr "Gesamtzahl an unterschiedlichen Versionen: "
+
+#: cmdline/apt-cache.cc:295
msgid "Total dependencies: "
msgstr "Gesamtzahl an Abhängigkeiten: "
-#: cmdline/apt-cache.cc:283
+#: cmdline/apt-cache.cc:298
msgid "Total ver/file relations: "
msgstr "Gesamtzahl an Version/Datei-Beziehungen: "
-#: cmdline/apt-cache.cc:285
+#: cmdline/apt-cache.cc:300
+#, fuzzy
+msgid "Total Desc/File relations: "
+msgstr "Gesamtzahl an Version/Datei-Beziehungen: "
+
+#: cmdline/apt-cache.cc:302
msgid "Total Provides mappings: "
msgstr "Gesamtzahl an Bereitstellungen: "
-#: cmdline/apt-cache.cc:297
+#: cmdline/apt-cache.cc:314
msgid "Total globbed strings: "
msgstr "Gesamtzahl an Mustern: "
-#: cmdline/apt-cache.cc:311
+#: cmdline/apt-cache.cc:328
msgid "Total dependency version space: "
msgstr "Gesamtmenge an Abhängigkeits/Versionsspeicher: "
-#: cmdline/apt-cache.cc:316
+#: cmdline/apt-cache.cc:333
msgid "Total slack space: "
msgstr "Gesamtmenge an Slack: "
-#: cmdline/apt-cache.cc:324
+#: cmdline/apt-cache.cc:341
msgid "Total space accounted for: "
msgstr "Gesamtmenge an Speicher: "
-#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
+#: cmdline/apt-cache.cc:469 cmdline/apt-cache.cc:1212
#, c-format
msgid "Package file %s is out of sync."
msgstr "Paketdatei %s ist nicht synchronisiert."
-#: cmdline/apt-cache.cc:1231
+#: cmdline/apt-cache.cc:1293
msgid "You must give exactly one pattern"
msgstr "Sie müssen genau ein Muster angeben"
-#: cmdline/apt-cache.cc:1385
+#: cmdline/apt-cache.cc:1447
msgid "No packages found"
msgstr "Keine Pakete gefunden"
-#: cmdline/apt-cache.cc:1462
+#: cmdline/apt-cache.cc:1524
msgid "Package files:"
msgstr "Paketdateien:"
-#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
+#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
msgid "Cache is out of sync, can't x-ref a package file"
msgstr "Cache ist nicht sychron, kann eine Paketdatei nicht querverweisen"
-#: cmdline/apt-cache.cc:1470
+#: cmdline/apt-cache.cc:1532
#, c-format
msgid "%4i %s\n"
msgstr "%4i %s\n"
#. Show any packages have explicit pins
-#: cmdline/apt-cache.cc:1482
+#: cmdline/apt-cache.cc:1544
msgid "Pinned packages:"
msgstr "Festgehaltene Pakete (»Pin«):"
-#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
+#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
msgid "(not found)"
msgstr "(nicht gefunden)"
#. Installed version
-#: cmdline/apt-cache.cc:1515
+#: cmdline/apt-cache.cc:1577
msgid " Installed: "
msgstr " Installiert:"
-#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
+#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
msgid "(none)"
msgstr "(keine)"
#. Candidate Version
-#: cmdline/apt-cache.cc:1522
+#: cmdline/apt-cache.cc:1584
msgid " Candidate: "
msgstr " Mögliche Pakete:"
-#: cmdline/apt-cache.cc:1532
+#: cmdline/apt-cache.cc:1594
msgid " Package pin: "
msgstr " Paketstecknadel: "
#. Show the priority tables
-#: cmdline/apt-cache.cc:1541
+#: cmdline/apt-cache.cc:1603
msgid " Version table:"
msgstr " Versions-Tabelle:"
-#: cmdline/apt-cache.cc:1556
+#: cmdline/apt-cache.cc:1618
#, c-format
msgid " %4i %s\n"
msgstr " %4i %s\n"
-#: cmdline/apt-cache.cc:1651 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-cache.cc:1713 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
-#: cmdline/apt-get.cc:2378 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-get.cc:2325 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr "%s %s für %s %s kompiliert am %s %s\n"
-#: cmdline/apt-cache.cc:1658
+#: cmdline/apt-cache.cc:1720
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
"tmp\n"
"Siehe auch apt-cache(8) und apt.conf(5) für weitere Informationen.\n"
-#: cmdline/apt-cdrom.cc:78
-msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
-msgstr ""
-"Bitte geben Sie einen Namen für die CD an, wie zum Beispiel »Debian 2.2r1 "
-"Disk 1«"
-
-#: cmdline/apt-cdrom.cc:93
-msgid "Please insert a Disc in the drive and press enter"
-msgstr ""
-"Bitte legen Sie ein Medium ins Laufwerk und drücken Sie die Eingabetaste"
-
-#: cmdline/apt-cdrom.cc:117
-msgid "Repeat this process for the rest of the CDs in your set."
-msgstr "Wiederholen Sie dieses Prozedere für Ihre restlichen CDs diese Reihe."
-
#: cmdline/apt-config.cc:41
msgid "Arguments not in pairs"
msgstr "Argumente nicht paarweise"
" -o=? Eine beliebige Konfigurationsoption setzen, z. B. -o dir::cache=/"
"tmp\n"
-#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:710
+#: cmdline/apt-extracttemplates.cc:267 apt-pkg/pkgcachegen.cc:815
#, c-format
msgid "Unable to write to %s"
msgstr "Kann nicht nach %s schreiben"
msgid "Archive had no package field"
msgstr "Archiv hatte kein Paket-Feld"
-#: ftparchive/writer.cc:394 ftparchive/writer.cc:603
+#: ftparchive/writer.cc:394 ftparchive/writer.cc:602
#, c-format
msgid " %s has no override entry\n"
msgstr " %s hat keinen Eintrag in der Override-Liste.\n"
-#: ftparchive/writer.cc:437 ftparchive/writer.cc:689
+#: ftparchive/writer.cc:437 ftparchive/writer.cc:688
#, c-format
msgid " %s maintainer is %s not %s\n"
msgstr " %s-Maintainer ist %s und nicht %s\n"
msgid "Failed to rename %s to %s"
msgstr "Konnte %s nicht in %s umbenennen"
-#: cmdline/apt-get.cc:120
+#: cmdline/apt-get.cc:118
msgid "Y"
msgstr "J"
-#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1515
+#: cmdline/apt-get.cc:140 cmdline/apt-get.cc:1486
#, c-format
msgid "Regex compilation error - %s"
msgstr "Fehler beim Kompilieren eines regulären Ausdrucks - %s"
-#: cmdline/apt-get.cc:237
+#: cmdline/apt-get.cc:235
msgid "The following packages have unmet dependencies:"
msgstr "Die folgenden Pakete haben nichterfüllte Abhängigkeiten:"
-#: cmdline/apt-get.cc:327
+#: cmdline/apt-get.cc:325
#, c-format
msgid "but %s is installed"
msgstr "aber %s ist installiert"
-#: cmdline/apt-get.cc:329
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is to be installed"
msgstr "aber %s soll installiert werden"
-#: cmdline/apt-get.cc:336
+#: cmdline/apt-get.cc:334
msgid "but it is not installable"
msgstr "ist aber nicht installierbar"
-#: cmdline/apt-get.cc:338
+#: cmdline/apt-get.cc:336
msgid "but it is a virtual package"
msgstr "ist aber ein virtuelles Paket"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not installed"
msgstr "ist aber nicht installiert"
-#: cmdline/apt-get.cc:341
+#: cmdline/apt-get.cc:339
msgid "but it is not going to be installed"
msgstr "soll aber nicht installiert werden"
-#: cmdline/apt-get.cc:346
+#: cmdline/apt-get.cc:344
msgid " or"
msgstr " oder "
-#: cmdline/apt-get.cc:375
+#: cmdline/apt-get.cc:373
msgid "The following NEW packages will be installed:"
msgstr "Die folgenden NEUEN Pakete werden installiert:"
-#: cmdline/apt-get.cc:401
+#: cmdline/apt-get.cc:399
msgid "The following packages will be REMOVED:"
msgstr "Die folgenden Pakete werden ENTFERNT:"
-#: cmdline/apt-get.cc:423
+#: cmdline/apt-get.cc:421
msgid "The following packages have been kept back:"
msgstr "Die folgenden Pakete sind zurückgehalten worden:"
-#: cmdline/apt-get.cc:444
+#: cmdline/apt-get.cc:442
msgid "The following packages will be upgraded:"
msgstr "Die folgenden Pakete werden aktualisiert:"
-#: cmdline/apt-get.cc:465
+#: cmdline/apt-get.cc:463
msgid "The following packages will be DOWNGRADED:"
msgstr "Die folgenden Pakete werden DEAKTUALISIERT:"
-#: cmdline/apt-get.cc:485
+#: cmdline/apt-get.cc:483
msgid "The following held packages will be changed:"
msgstr "Die folgenden gehaltenen Pakete werden verändert:"
-#: cmdline/apt-get.cc:538
+#: cmdline/apt-get.cc:536
#, c-format
msgid "%s (due to %s) "
msgstr "%s (wegen %s) "
-#: cmdline/apt-get.cc:546
+#: cmdline/apt-get.cc:544
#, fuzzy
msgid ""
"WARNING: The following essential packages will be removed.\n"
"WARNUNG: Die folgenden essentiellen Pakete werden entfernt.\n"
"Dies sollte NICHT geschehen, wenn Sie nicht genau wissen, was Sie tun!"
-#: cmdline/apt-get.cc:577
+#: cmdline/apt-get.cc:575
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr "%lu aktualisiert, %lu neu installiert, "
-#: cmdline/apt-get.cc:581
+#: cmdline/apt-get.cc:579
#, c-format
msgid "%lu reinstalled, "
msgstr "%lu erneut installiert, "
-#: cmdline/apt-get.cc:583
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu downgraded, "
msgstr "%lu deaktualisiert, "
-#: cmdline/apt-get.cc:585
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr "%lu zu entfernen und %lu nicht aktualisiert.\n"
-#: cmdline/apt-get.cc:589
+#: cmdline/apt-get.cc:587
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr "%lu nicht vollständig installiert oder entfernt.\n"
-#: cmdline/apt-get.cc:649
+#: cmdline/apt-get.cc:647
msgid "Correcting dependencies..."
msgstr "Abhängigkeit werden korrigiert..."
-#: cmdline/apt-get.cc:652
+#: cmdline/apt-get.cc:650
msgid " failed."
msgstr " fehlgeschlagen."
-#: cmdline/apt-get.cc:655
+#: cmdline/apt-get.cc:653
msgid "Unable to correct dependencies"
msgstr "Kann Abhängigkeiten nicht korrigieren"
-#: cmdline/apt-get.cc:658
+#: cmdline/apt-get.cc:656
msgid "Unable to minimize the upgrade set"
msgstr "Kann die Menge zu erneuernder Pakete nicht minimieren"
-#: cmdline/apt-get.cc:660
+#: cmdline/apt-get.cc:658
msgid " Done"
msgstr " Fertig"
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:662
msgid "You might want to run `apt-get -f install' to correct these."
msgstr ""
"Sie möchten wahrscheinlich »apt-get -f install« aufrufen, um dies zu "
"korrigieren."
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:665
msgid "Unmet dependencies. Try using -f."
msgstr "Nichterfüllte Abhängigkeiten. Versuchen Sie, -f zu benutzen."
-#: cmdline/apt-get.cc:689
+#: cmdline/apt-get.cc:687
msgid "WARNING: The following packages cannot be authenticated!"
msgstr "WARNUNG: Die folgenden Pakete können nicht authentifiziert werden!"
-#: cmdline/apt-get.cc:693
+#: cmdline/apt-get.cc:691
msgid "Authentication warning overridden.\n"
msgstr ""
-#: cmdline/apt-get.cc:700
+#: cmdline/apt-get.cc:698
msgid "Install these packages without verification [y/N]? "
msgstr "Diese Pakete ohne Überprüfung installieren [j/N]? "
-#: cmdline/apt-get.cc:702
+#: cmdline/apt-get.cc:700
msgid "Some packages could not be authenticated"
msgstr "Einige Pakete konnten nicht authentifiziert werden"
-#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
+#: cmdline/apt-get.cc:709 cmdline/apt-get.cc:856
msgid "There are problems and -y was used without --force-yes"
msgstr "Es gab Probleme und -y wurde ohne --force-yes verwendet"
-#: cmdline/apt-get.cc:755
+#: cmdline/apt-get.cc:753
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr "Interner Fehler, InstallPackages mit kaputten Pakete aufgerufen!"
-#: cmdline/apt-get.cc:764
+#: cmdline/apt-get.cc:762
msgid "Packages need to be removed but remove is disabled."
msgstr "Pakete müssen entfernt werden, aber Entfernen ist abgeschaltet."
-#: cmdline/apt-get.cc:775
+#: cmdline/apt-get.cc:773
msgid "Internal error, Ordering didn't finish"
msgstr "Interner Fehler, Anordnung beendete nicht"
-#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1809 cmdline/apt-get.cc:1842
+#: cmdline/apt-get.cc:789 cmdline/apt-get.cc:1780 cmdline/apt-get.cc:1813
msgid "Unable to lock the download directory"
msgstr "Kann kein Lock für das Downloadverzeichnis erhalten."
-#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1890 cmdline/apt-get.cc:2126
+#: cmdline/apt-get.cc:799 cmdline/apt-get.cc:1861 cmdline/apt-get.cc:2073
#: apt-pkg/cachefile.cc:67
msgid "The list of sources could not be read."
msgstr "Die Liste der Quellen konnte nicht gelesen werden."
-#: cmdline/apt-get.cc:816
+#: cmdline/apt-get.cc:814
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
"Wie merkwürdig... Die Größen haben nicht übereingestimmt, schreiben Sie an "
"apt@packages.debian.org"
-#: cmdline/apt-get.cc:821
+#: cmdline/apt-get.cc:819
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr "Es müssen noch %sB von %sB Archiven geholt werden.\n"
-#: cmdline/apt-get.cc:824
+#: cmdline/apt-get.cc:822
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr "Es müssen %sB Archive geholt werden.\n"
-#: cmdline/apt-get.cc:829
+#: cmdline/apt-get.cc:827
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr "Nach dem Auspacken werden %sB Plattenplatz zusätzlich benutzt.\n"
-#: cmdline/apt-get.cc:832
+#: cmdline/apt-get.cc:830
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr "Nach dem Auspacken werden %sB Plattenplatz freigegeben worden sein.\n"
-#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1980
+#: cmdline/apt-get.cc:844 cmdline/apt-get.cc:1927
#, c-format
msgid "Couldn't determine free space in %s"
msgstr "Konnte freien Platz in %s nicht bestimmen"
-#: cmdline/apt-get.cc:849
+#: cmdline/apt-get.cc:847
#, c-format
msgid "You don't have enough free space in %s."
msgstr "Sie haben nicht genug Platz in %s."
-#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
+#: cmdline/apt-get.cc:862 cmdline/apt-get.cc:882
msgid "Trivial Only specified but this is not a trivial operation."
msgstr "»Nur triviale« angegeben, aber das ist keine triviale Operation."
-#: cmdline/apt-get.cc:866
+#: cmdline/apt-get.cc:864
msgid "Yes, do as I say!"
msgstr "Ja, tu was ich sage!"
-#: cmdline/apt-get.cc:868
+#: cmdline/apt-get.cc:866
#, fuzzy, c-format
msgid ""
"You are about to do something potentially harmful.\n"
"Zum Fortfahren geben Sie bitte »%s« ein.\n"
" ?] "
-#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
+#: cmdline/apt-get.cc:872 cmdline/apt-get.cc:891
msgid "Abort."
msgstr "Abbruch."
-#: cmdline/apt-get.cc:889
+#: cmdline/apt-get.cc:887
msgid "Do you want to continue [Y/n]? "
msgstr "Möchten Sie fortfahren [J/n]? "
-#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2023
+#: cmdline/apt-get.cc:959 cmdline/apt-get.cc:1336 cmdline/apt-get.cc:1970
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr "Konnte %s nicht holen %s\n"
-#: cmdline/apt-get.cc:979
+#: cmdline/apt-get.cc:977
msgid "Some files failed to download"
msgstr "Einige Dateien konnten nicht heruntergeladen werden"
-#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:978 cmdline/apt-get.cc:1979
msgid "Download complete and in download only mode"
msgstr "Herunterladen abgeschlossen und im Nur-Herunterladen-Modus"
-#: cmdline/apt-get.cc:986
+#: cmdline/apt-get.cc:984
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
"Konnte einige Archive nicht herunterladen, vielleicht »apt-get update« oder "
"mit »--fix-missing« probieren?"
-#: cmdline/apt-get.cc:990
+#: cmdline/apt-get.cc:988
msgid "--fix-missing and media swapping is not currently supported"
msgstr "--fix-missing und Wechselmedien werden zurzeit nicht unterstützt"
-#: cmdline/apt-get.cc:995
+#: cmdline/apt-get.cc:993
msgid "Unable to correct missing packages."
msgstr "Konnte fehlende Pakete nicht korrigieren."
-#: cmdline/apt-get.cc:996
+#: cmdline/apt-get.cc:994
msgid "Aborting install."
msgstr "Installation abgebrochen."
-#: cmdline/apt-get.cc:1030
+#: cmdline/apt-get.cc:1028
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr "Achtung, wähle %s an Stelle von %s\n"
-#: cmdline/apt-get.cc:1040
+#: cmdline/apt-get.cc:1038
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
"Überspringe %s, es ist schon installiert und »upgrade« ist nicht gesetzt.\n"
-#: cmdline/apt-get.cc:1058
+#: cmdline/apt-get.cc:1056
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr "Paket %s ist nicht installiert, wird also auch nicht entfernt\n"
-#: cmdline/apt-get.cc:1069
+#: cmdline/apt-get.cc:1067
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr "Pakete %s ist ein virtuelles Pakete, das bereitgestellt wird von:\n"
-#: cmdline/apt-get.cc:1081
+#: cmdline/apt-get.cc:1079
msgid " [Installed]"
msgstr " [Installiert]"
-#: cmdline/apt-get.cc:1086
+#: cmdline/apt-get.cc:1084
msgid "You should explicitly select one to install."
msgstr "Sie sollten eines explizit zum Installieren auswählen."
-#: cmdline/apt-get.cc:1091
+#: cmdline/apt-get.cc:1089
#, c-format
msgid ""
"Package %s is not available, but is referred to by another package.\n"
"Paket referenziert. Das kann heißen, dass das Paket fehlt, dass es veraltet\n"
"ist oder nur aus einer anderen Quelle verfügbar ist.\n"
-#: cmdline/apt-get.cc:1110
+#: cmdline/apt-get.cc:1108
msgid "However the following packages replace it:"
msgstr "Doch die folgenden Pakete ersetzen es:"
-#: cmdline/apt-get.cc:1113
+#: cmdline/apt-get.cc:1111
#, c-format
msgid "Package %s has no installation candidate"
msgstr "Paket %s hat keinen Installationskandidaten"
-#: cmdline/apt-get.cc:1133
+#: cmdline/apt-get.cc:1131
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
"Re-Installation von %s ist nicht möglich,\n"
"es kann nicht heruntergeladen werden.\n"
-#: cmdline/apt-get.cc:1141
+#: cmdline/apt-get.cc:1139
#, c-format
msgid "%s is already the newest version.\n"
msgstr "%s ist schon die neueste Version.\n"
-#: cmdline/apt-get.cc:1168
+#: cmdline/apt-get.cc:1166
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr "Release »%s« für »%s« konnte nicht gefunden werden"
-#: cmdline/apt-get.cc:1170
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr "Version »%s« für »%s« konnte nicht gefunden werden"
-#: cmdline/apt-get.cc:1176
+#: cmdline/apt-get.cc:1174
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr "Gewählte Version %s (%s) für %s\n"
-#: cmdline/apt-get.cc:1313
+#: cmdline/apt-get.cc:1284
msgid "The update command takes no arguments"
msgstr "Der Befehl »update« nimmt keine Argumente"
-#: cmdline/apt-get.cc:1326 cmdline/apt-get.cc:1420
+#: cmdline/apt-get.cc:1297 cmdline/apt-get.cc:1391
msgid "Unable to lock the list directory"
msgstr "Kann kein Lock auf das Listenverzeichnis bekommen"
-#: cmdline/apt-get.cc:1384
+#: cmdline/apt-get.cc:1355
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
"Einige Indexdateien konnten nicht heruntergeladen werden, sie wurden "
"ignoriert oder alte an ihrer Stelle benutzt."
-#: cmdline/apt-get.cc:1403
+#: cmdline/apt-get.cc:1374
msgid "Internal error, AllUpgrade broke stuff"
msgstr "Interner Fehler, AllUpgrade hat was kaputt gemacht"
-#: cmdline/apt-get.cc:1502 cmdline/apt-get.cc:1538
+#: cmdline/apt-get.cc:1473 cmdline/apt-get.cc:1509
#, c-format
msgid "Couldn't find package %s"
msgstr "Konnte Paket %s nicht finden"
-#: cmdline/apt-get.cc:1525
+#: cmdline/apt-get.cc:1496
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr "Achtung, wähle %s für reg. Ausdruck »%s«\n"
-#: cmdline/apt-get.cc:1555
+#: cmdline/apt-get.cc:1526
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
"Sie möchten wahrscheinlich »apt-get -f install« aufrufen, um dies zu "
"korrigieren:"
-#: cmdline/apt-get.cc:1558
+#: cmdline/apt-get.cc:1529
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
"Nichterfüllte Abhängigkeiten. Versuchen Sie »apt-get -f install« ohne "
"jeglich Pakete (oder geben Sie eine Lösung an)."
-#: cmdline/apt-get.cc:1570
+#: cmdline/apt-get.cc:1541
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"
"instabile Distribution verwenden, einige erforderliche Pakete noch nicht\n"
"kreiert oder aus Incoming herausbewegt wurden."
-#: cmdline/apt-get.cc:1578
+#: cmdline/apt-get.cc:1549
msgid ""
"Since you only requested a single operation it is extremely likely that\n"
"the package is simply not installable and a bug report against\n"
"dass das Paket einfach nicht installierbar ist und eine Fehlermeldung über\n"
"dieses Paket erfolgen sollte."
-#: cmdline/apt-get.cc:1583
+#: cmdline/apt-get.cc:1554
msgid "The following information may help to resolve the situation:"
msgstr ""
"Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:"
-#: cmdline/apt-get.cc:1586
+#: cmdline/apt-get.cc:1557
msgid "Broken packages"
msgstr "Kaputte Pakete"
-#: cmdline/apt-get.cc:1612
+#: cmdline/apt-get.cc:1583
msgid "The following extra packages will be installed:"
msgstr "Die folgenden zusätzlichen Pakete werden installiert:"
-#: cmdline/apt-get.cc:1683
+#: cmdline/apt-get.cc:1654
msgid "Suggested packages:"
msgstr "Vorgeschlagene Pakete:"
-#: cmdline/apt-get.cc:1684
+#: cmdline/apt-get.cc:1655
msgid "Recommended packages:"
msgstr "Empfohlene Pakete:"
-#: cmdline/apt-get.cc:1704
+#: cmdline/apt-get.cc:1675
msgid "Calculating upgrade... "
msgstr "Berechne Upgrade..."
-#: cmdline/apt-get.cc:1707 methods/ftp.cc:702 methods/connect.cc:101
+#: cmdline/apt-get.cc:1678 methods/ftp.cc:702 methods/connect.cc:101
msgid "Failed"
msgstr "Fehlgeschlagen"
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1683
msgid "Done"
msgstr "Fertig"
-#: cmdline/apt-get.cc:1777 cmdline/apt-get.cc:1785
+#: cmdline/apt-get.cc:1748 cmdline/apt-get.cc:1756
msgid "Internal error, problem resolver broke stuff"
msgstr "Interner Fehler, der Problem-Löser hat was kaputt gemacht"
-#: cmdline/apt-get.cc:1885
+#: cmdline/apt-get.cc:1856
msgid "Must specify at least one package to fetch source for"
msgstr ""
"Es muss mindesten ein Paket angegeben werden, dessen Quellen geholt werden "
"sollen"
-#: cmdline/apt-get.cc:1915 cmdline/apt-get.cc:2144
+#: cmdline/apt-get.cc:1883 cmdline/apt-get.cc:2091
#, c-format
msgid "Unable to find a source package for %s"
msgstr "Kann Quellpaket für %s nicht finden"
-#: cmdline/apt-get.cc:1959
-#, fuzzy, c-format
-msgid "Skiping already downloaded file '%s'\n"
-msgstr "Überspringe Entpacken der schon entpackten Quelle in %s\n"
-
-#: cmdline/apt-get.cc:1983
+#: cmdline/apt-get.cc:1930
#, c-format
msgid "You don't have enough free space in %s"
msgstr "Sie haben nicht genug freien Platz in %s"
-#: cmdline/apt-get.cc:1988
+#: cmdline/apt-get.cc:1935
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr "Es müssen noch %sB/%sB der Quellarchive geholt werden.\n"
-#: cmdline/apt-get.cc:1991
+#: cmdline/apt-get.cc:1938
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr "Es müssen %sB der Quellarchive geholt werden.\n"
-#: cmdline/apt-get.cc:1997
+#: cmdline/apt-get.cc:1944
#, c-format
msgid "Fetch source %s\n"
msgstr "Hole Quelle %s\n"
-#: cmdline/apt-get.cc:2028
+#: cmdline/apt-get.cc:1975
msgid "Failed to fetch some archives."
msgstr "Konnte einige Archive nicht holen."
-#: cmdline/apt-get.cc:2056
+#: cmdline/apt-get.cc:2003
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr "Überspringe Entpacken der schon entpackten Quelle in %s\n"
-#: cmdline/apt-get.cc:2068
+#: cmdline/apt-get.cc:2015
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr "Entpack-Befehl »%s« fehlgeschlagen.\n"
-#: cmdline/apt-get.cc:2069
+#: cmdline/apt-get.cc:2016
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2086
+#: cmdline/apt-get.cc:2033
#, c-format
msgid "Build command '%s' failed.\n"
msgstr "Build-Befehl »%s« fehlgeschlagen.\n"
-#: cmdline/apt-get.cc:2105
+#: cmdline/apt-get.cc:2052
msgid "Child process failed"
msgstr "Kindprozess fehlgeschlagen"
-#: cmdline/apt-get.cc:2121
+#: cmdline/apt-get.cc:2068
msgid "Must specify at least one package to check builddeps for"
msgstr ""
"Es muss zumindest ein Paket angegeben werden, dessen Build-Dependencies\n"
"überprüft werden sollen."
-#: cmdline/apt-get.cc:2149
+#: cmdline/apt-get.cc:2096
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr "Information zu Build-Dependencies für %s konnte nicht gefunden werden."
-#: cmdline/apt-get.cc:2169
+#: cmdline/apt-get.cc:2116
#, c-format
msgid "%s has no build depends.\n"
msgstr "%s hat keine Build-Dependencies.\n"
-#: cmdline/apt-get.cc:2221
+#: cmdline/apt-get.cc:2168
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"%s Abhängigkeit für %s kann nicht befriedigt werden, da Paket %s nicht "
"gefunden werden kann."
-#: cmdline/apt-get.cc:2273
+#: cmdline/apt-get.cc:2220
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"%s Abhängigkeit für %s kann nicht befriedigt werden, da keine verfügbare "
"Version von Paket %s die Versionsanforderungen erfüllen kann."
-#: cmdline/apt-get.cc:2308
+#: cmdline/apt-get.cc:2255
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
"Konnte die %s-Abhängigkeit für %s nicht erfüllen: Installiertes Paket %s ist "
"zu neu."
-#: cmdline/apt-get.cc:2333
+#: cmdline/apt-get.cc:2280
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr "Konnte die %s-Abhängigkeit für %s nicht erfüllen: %s"
-#: cmdline/apt-get.cc:2347
+#: cmdline/apt-get.cc:2294
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr "Build-Abhängigkeit für %s konnte nicht erfüllt werden."
-#: cmdline/apt-get.cc:2351
+#: cmdline/apt-get.cc:2298
msgid "Failed to process build dependencies"
msgstr "Verarbeitung der Build-Dependencies fehlgeschlagen"
-#: cmdline/apt-get.cc:2383
+#: cmdline/apt-get.cc:2330
msgid "Supported modules:"
msgstr "Unterstützte Module:"
-#: cmdline/apt-get.cc:2424
+#: cmdline/apt-get.cc:2371
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
msgid "Failed to write file %s"
msgstr "Konnte nicht in Datei %s schreiben"
-#: apt-inst/dirstream.cc:96 apt-inst/dirstream.cc:104
+#: apt-inst/dirstream.cc:80 apt-inst/dirstream.cc:88
#, c-format
msgid "Failed to close file %s"
msgstr "Konnte Datei %s nicht schließen"
msgstr "Datei %s/%s überschreibt die Datei in Paket %s"
#: apt-inst/extract.cc:467 apt-pkg/contrib/configuration.cc:750
-#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/sourcelist.cc:324
-#: apt-pkg/acquire.cc:421 apt-pkg/clean.cc:38
+#: apt-pkg/contrib/cdromutl.cc:153 apt-pkg/acquire.cc:417 apt-pkg/clean.cc:38
#, c-format
msgid "Unable to read %s"
msgstr "Kann %s nicht lesen"
"Die »info«- und »temp«-Verzeichnisse müssen im selben Dateisystem liegen"
#. Build the status cache
-#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:643
-#: apt-pkg/pkgcachegen.cc:712 apt-pkg/pkgcachegen.cc:717
-#: apt-pkg/pkgcachegen.cc:840
+#: apt-inst/deb/dpkgdb.cc:139 apt-pkg/pkgcachegen.cc:748
+#: apt-pkg/pkgcachegen.cc:817 apt-pkg/pkgcachegen.cc:822
+#: apt-pkg/pkgcachegen.cc:945
msgid "Reading package lists"
msgstr "Paketlisten werden gelesen"
# looks like someone hardcoded English grammar\r
#: methods/copy.cc:42 methods/gpgv.cc:265 methods/gzip.cc:133
-#: methods/gzip.cc:142
+#: methods/gzip.cc:142 methods/rred.cc:234 methods/rred.cc:243
msgid "Failed to stat"
msgstr "Kann nicht zugreifen."
#: methods/copy.cc:79 methods/gpgv.cc:262 methods/gzip.cc:139
+#: methods/rred.cc:240
msgid "Failed to set modification time"
msgstr "Kann Änderungszeitpunkt nicht setzen"
msgid "Unable to accept connection"
msgstr "Kann Verbindung nicht annehmen"
-#: methods/ftp.cc:864 methods/http.cc:963 methods/rsh.cc:303
+#: methods/ftp.cc:864 methods/http.cc:921 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr "Bei Bestimmung des Hashwertes einer Datei trat ein Problem auf"
msgid "Read error from %s process"
msgstr "Lesefehler von Prozess %s"
-#: methods/http.cc:381
+#: methods/http.cc:345
msgid "Waiting for headers"
msgstr "Warte auf Kopfzeilen (header)"
-#: methods/http.cc:527
+#: methods/http.cc:491
#, c-format
msgid "Got a single header line over %u chars"
msgstr "Erhielt einzelne Kopfzeile aus %u Zeichen"
-#: methods/http.cc:535
+#: methods/http.cc:499
msgid "Bad header line"
msgstr "Schlechte Kopfzeile"
-#: methods/http.cc:554 methods/http.cc:561
+#: methods/http.cc:518 methods/http.cc:525
msgid "The HTTP server sent an invalid reply header"
msgstr "Der http-Server sandte eine ungültige Antwort-Kopfzeile"
-#: methods/http.cc:590
+#: methods/http.cc:554
msgid "The HTTP server sent an invalid Content-Length header"
msgstr "Der http-Server sandte eine ungültige »Content-Length«-Kopfzeile"
-#: methods/http.cc:605
+#: methods/http.cc:569
msgid "The HTTP server sent an invalid Content-Range header"
msgstr "Der http-Server sandte eine ungültige »Content-Range«-Kopfzeile"
-#: methods/http.cc:607
+#: methods/http.cc:571
msgid "This HTTP server has broken range support"
msgstr "Der http-Server unterstützt Dateiteilübertragung nur fehlerhaft."
-#: methods/http.cc:631
+#: methods/http.cc:595
msgid "Unknown date format"
msgstr "Unbekanntes Datumsformat"
-#: methods/http.cc:778
+#: methods/http.cc:742
msgid "Select failed"
msgstr "Auswahl fehlgeschlagen"
-#: methods/http.cc:783
+#: methods/http.cc:747
msgid "Connection timed out"
msgstr "Verbindung erlitt Zeitüberschreitung"
-#: methods/http.cc:806
+#: methods/http.cc:770
msgid "Error writing to output file"
msgstr "Fehler beim Schreiben einer Ausgabedatei"
-#: methods/http.cc:837
+#: methods/http.cc:798
msgid "Error writing to file"
msgstr "Fehler beim Schreiben einer Datei"
-#: methods/http.cc:865
+#: methods/http.cc:823
msgid "Error writing to the file"
msgstr "Fehler beim Schreiben der Datei"
-#: methods/http.cc:879
+#: methods/http.cc:837
msgid "Error reading from server. Remote end closed connection"
msgstr ""
"Fehler beim Lesen vom Server: Das entfernte Ende hat die Verbindung "
"geschlossen"
-#: methods/http.cc:881
+#: methods/http.cc:839
msgid "Error reading from server"
msgstr "Fehler beim Lesen vom Server"
-#: methods/http.cc:1112
+#: methods/http.cc:1070
msgid "Bad header data"
msgstr "Fehlerhafte Kopfzeilendaten"
-#: methods/http.cc:1129
+#: methods/http.cc:1087
msgid "Connection failed"
msgstr "Verbindung fehlgeschlagen"
-#: methods/http.cc:1220
+#: methods/http.cc:1178
msgid "Internal error"
msgstr "Interner Fehler"
msgid "Couldn't make mmap of %lu bytes"
msgstr "Konnte kein mmap von %lu Bytes durchführen"
-#: apt-pkg/contrib/strutl.cc:938
+#: apt-pkg/contrib/strutl.cc:984
#, c-format
msgid "Selection %s not found"
msgstr "Auswahl %s nicht gefunden"
msgid "Unable to stat the mount point %s"
msgstr "Kann auf den Einhängepunkt %s nicht zugreifen."
-#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:427 apt-pkg/clean.cc:44
+#: apt-pkg/contrib/cdromutl.cc:149 apt-pkg/acquire.cc:423 apt-pkg/clean.cc:44
#, c-format
msgid "Unable to change to %s"
msgstr "Kann nicht nach %s wechseln"
msgid "Problem syncing the file"
msgstr "Beim Synchronisieren einer Datei trat ein Problem auf"
-#: apt-pkg/pkgcache.cc:126
+#: apt-pkg/pkgcache.cc:135
msgid "Empty package cache"
msgstr "Leerer Paketcache"
-#: apt-pkg/pkgcache.cc:132
+#: apt-pkg/pkgcache.cc:141
msgid "The package cache file is corrupted"
msgstr "Die Paketcachedatei ist korrumpiert"
-#: apt-pkg/pkgcache.cc:137
+#: apt-pkg/pkgcache.cc:146
msgid "The package cache file is an incompatible version"
msgstr "Die Paketcachedatei ist in einer inkompatiblen Version"
-#: apt-pkg/pkgcache.cc:142
+#: apt-pkg/pkgcache.cc:151
#, c-format
msgid "This APT does not support the versioning system '%s'"
msgstr "Dieses APT unterstützt das Versionssystem »%s« nicht"
-#: apt-pkg/pkgcache.cc:147
+#: apt-pkg/pkgcache.cc:156
msgid "The package cache was built for a different architecture"
msgstr "Der Paketcache wurde für eine andere Architektur aufgebaut"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Depends"
msgstr "Hängt ab"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "PreDepends"
msgstr "Hängt ab (vorher)"
-#: apt-pkg/pkgcache.cc:218
+#: apt-pkg/pkgcache.cc:227
msgid "Suggests"
msgstr "Schlägt vor"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Recommends"
msgstr "Empfiehlt"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Conflicts"
msgstr "Kollidiert"
-#: apt-pkg/pkgcache.cc:219
+#: apt-pkg/pkgcache.cc:228
msgid "Replaces"
msgstr "Ersetzt"
-#: apt-pkg/pkgcache.cc:220
+#: apt-pkg/pkgcache.cc:229
msgid "Obsoletes"
msgstr "Veraltet"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "important"
msgstr "wichtig"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "required"
msgstr "erforderlich"
-#: apt-pkg/pkgcache.cc:231
+#: apt-pkg/pkgcache.cc:240
msgid "standard"
msgstr "standard"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "optional"
msgstr "optional"
-#: apt-pkg/pkgcache.cc:232
+#: apt-pkg/pkgcache.cc:241
msgid "extra"
msgstr "extra"
msgid "Unable to parse package file %s (2)"
msgstr "Kann Paketdatei %s nicht parsen (2)"
-#: apt-pkg/sourcelist.cc:94
+#: apt-pkg/sourcelist.cc:87
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr "Missgestaltete Zeile %lu in Quellliste %s (»URI«)"
-#: apt-pkg/sourcelist.cc:96
+#: apt-pkg/sourcelist.cc:89
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr "Missgestaltete Zeile %lu in Quellliste %s (»dist«)"
-#: apt-pkg/sourcelist.cc:99
+#: apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr "Missgestaltete Zeile %lu in Quellliste %s (»URI parse«)"
-#: apt-pkg/sourcelist.cc:105
+#: apt-pkg/sourcelist.cc:98
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr "Missgestaltete Zeile %lu in Quellliste %s (»absolute dist«)"
-#: apt-pkg/sourcelist.cc:112
+#: apt-pkg/sourcelist.cc:105
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr "Missgestaltete Zeile %lu in Quellliste %s (»dist parse«)"
-#: apt-pkg/sourcelist.cc:203
+#: apt-pkg/sourcelist.cc:156
#, c-format
msgid "Opening %s"
msgstr "%s wird geöffnet"
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
+#: apt-pkg/sourcelist.cc:170 apt-pkg/cdrom.cc:450
#, c-format
msgid "Line %u too long in source list %s."
msgstr "Zeile %u zu lang in der Quellliste %s."
-#: apt-pkg/sourcelist.cc:240
+#: apt-pkg/sourcelist.cc:187
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr "Missgestaltete Zeile %u in Quellliste %s (»type«)"
-#: apt-pkg/sourcelist.cc:244
+#: apt-pkg/sourcelist.cc:191
#, fuzzy, c-format
msgid "Type '%s' is not known on line %u in source list %s"
msgstr "Typ »%s« ist unbekannt in Zeile %u der Quellliste %s"
-#: apt-pkg/sourcelist.cc:252 apt-pkg/sourcelist.cc:255
+#: apt-pkg/sourcelist.cc:199 apt-pkg/sourcelist.cc:202
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr "Missgestaltete Zeile %u in Quellliste %s (»vendor id«)"
msgid "Archive directory %spartial is missing."
msgstr "Archivverzeichnis %spartial fehlt."
-#: apt-pkg/acquire.cc:821
+#: apt-pkg/acquire.cc:817
#, c-format
msgid "Downloading file %li of %li (%s remaining)"
msgstr ""
" »%s«\n"
"in Laufwerk »%s« und drücken Sie die Eingabetaste.\n"
-#: apt-pkg/init.cc:120
+#: apt-pkg/init.cc:122
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr "Paketierungssystem »%s« wird nicht unterstützt"
-#: apt-pkg/init.cc:136
+#: apt-pkg/init.cc:138
msgid "Unable to determine a suitable packaging system type"
msgstr "Kann keinen passenden Paketierungssystem-Typ bestimmen"
msgid "Error occurred while processing %s (NewPackage)"
msgstr "Ein Fehler trat beim Bearbeiten von %s auf (NewPackage)"
-#: apt-pkg/pkgcachegen.cc:129
+#: apt-pkg/pkgcachegen.cc:132
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr "Ein Fehler trat beim Bearbeiten von %s auf (UsePackage1)"
-#: apt-pkg/pkgcachegen.cc:150
+#: apt-pkg/pkgcachegen.cc:155
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc1)"
+msgstr "Ein Fehler trat beim Bearbeiten von %s auf (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:180
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr "Ein Fehler trat beim Bearbeiten von %s auf (UsePackage2)"
-#: apt-pkg/pkgcachegen.cc:154
+#: apt-pkg/pkgcachegen.cc:184
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr "Ein Fehler trat beim Bearbeiten von %s auf (NewFileVer1)"
-#: apt-pkg/pkgcachegen.cc:184
+#: apt-pkg/pkgcachegen.cc:215
#, c-format
msgid "Error occurred while processing %s (NewVersion1)"
msgstr "Ein Fehler trat beim Bearbeiten von %s auf (NewVersion1)"
-#: apt-pkg/pkgcachegen.cc:188
+#: apt-pkg/pkgcachegen.cc:219
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr "Ein Fehler trat beim Bearbeiten von %s auf (UsePackage3)"
-#: apt-pkg/pkgcachegen.cc:192
+#: apt-pkg/pkgcachegen.cc:223
#, c-format
msgid "Error occurred while processing %s (NewVersion2)"
msgstr "Ein Fehler trat beim Bearbeiten von %s auf (NewVersion2)"
-#: apt-pkg/pkgcachegen.cc:207
+#: apt-pkg/pkgcachegen.cc:247
+#, fuzzy, c-format
+msgid "Error occured while processing %s (NewFileDesc2)"
+msgstr "Ein Fehler trat beim Bearbeiten von %s auf (NewFileVer1)"
+
+#: apt-pkg/pkgcachegen.cc:253
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
"Toll, Sie haben die Anzahl an Paketen überschritten, die APT handhaben kann."
-#: apt-pkg/pkgcachegen.cc:210
+#: apt-pkg/pkgcachegen.cc:256
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr ""
"Toll, Sie haben die Anzahl an Versionen überschritten, die APT handhaben "
"kann."
-#: apt-pkg/pkgcachegen.cc:213
+#: apt-pkg/pkgcachegen.cc:259
+#, fuzzy
+msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+msgstr ""
+"Toll, Sie haben die Anzahl an Versionen überschritten, die APT handhaben "
+"kann."
+
+#: apt-pkg/pkgcachegen.cc:262
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
"Toll, Sie haben die Anzahl an Abhängigkeiten überschritten, die APT "
"handhaben kann."
-#: apt-pkg/pkgcachegen.cc:241
+#: apt-pkg/pkgcachegen.cc:290
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr "Fehler trat beim Bearbeiten von %s auf (FindPkg)"
-#: apt-pkg/pkgcachegen.cc:254
+#: apt-pkg/pkgcachegen.cc:303
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr "Fehler trat beim Bearbeiten von %s auf (CollectFileProvides)"
-#: apt-pkg/pkgcachegen.cc:260
+#: apt-pkg/pkgcachegen.cc:309
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
"Paket %s %s wurde nicht gefunden beim Verarbeiten der Dateiabhängigkeiten"
-#: apt-pkg/pkgcachegen.cc:574
+#: apt-pkg/pkgcachegen.cc:679
#, c-format
msgid "Couldn't stat source package list %s"
msgstr "Kann nicht auf die Liste %s der Quellpakete zugreifen."
-#: apt-pkg/pkgcachegen.cc:658
+#: apt-pkg/pkgcachegen.cc:763
msgid "Collecting File Provides"
msgstr "Sammle Datei-Empfehlungen ein"
-#: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+#: apt-pkg/pkgcachegen.cc:890 apt-pkg/pkgcachegen.cc:897
msgid "IO Error saving source cache"
msgstr "E/A-Fehler beim Sichern des Quellcaches"
-#: apt-pkg/acquire-item.cc:126
+#: apt-pkg/acquire-item.cc:129
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr "Umbenennen fehlgeschlagen, %s (%s -> %s)."
-#: apt-pkg/acquire-item.cc:236 apt-pkg/acquire-item.cc:911
+#: apt-pkg/acquire-item.cc:391 apt-pkg/acquire-item.cc:635
+#: apt-pkg/acquire-item.cc:1336
msgid "MD5Sum mismatch"
msgstr "MD5-Summe stimmt nicht"
-#: apt-pkg/acquire-item.cc:719
+#: apt-pkg/acquire-item.cc:1150
#, c-format
msgid ""
"I wasn't able to locate a file for the %s package. This might mean you need "
"Ich konnte keine Datei für Paket %s finden. Das könnte heißen, dass Sie "
"dieses Paket von Hand korrigieren müssen (aufgrund fehlender Architektur)."
-#: apt-pkg/acquire-item.cc:778
+#: apt-pkg/acquire-item.cc:1203
#, c-format
msgid ""
"I wasn't able to locate file for the %s package. This might mean you need to "
"Ich konnte keine Datei für Paket %s finden. Das könnte heißen, dass Sie "
"dieses Paket von Hand korrigieren müssen."
-#: apt-pkg/acquire-item.cc:814
+#: apt-pkg/acquire-item.cc:1239
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
"Die Paketindexdateien sind korrumpiert: Kein Filename:-Feld für Paket %s."
-#: apt-pkg/acquire-item.cc:901
+#: apt-pkg/acquire-item.cc:1326
msgid "Size mismatch"
msgstr "Größe stimmt nicht"
msgid "Vendor block %s contains no fingerprint"
msgstr "Herstellerblock %s enthält keinen Fingerabdruck"
-#: apt-pkg/cdrom.cc:507
+#: apt-pkg/cdrom.cc:531
#, c-format
msgid ""
"Using CD-ROM mount point %s\n"
"Benutze CD-ROM-Einhängpunkt %s\n"
"Hänge CD ein\n"
-#: apt-pkg/cdrom.cc:516 apt-pkg/cdrom.cc:598
+#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622
msgid "Identifying.. "
msgstr "Identifiziere... "
-#: apt-pkg/cdrom.cc:541
+#: apt-pkg/cdrom.cc:565
#, c-format
msgid "Stored label: %s \n"
msgstr "Gespeicherte Kennzeichnung: %s \n"
-#: apt-pkg/cdrom.cc:561
+#: apt-pkg/cdrom.cc:585
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr "Benutze CD-ROM-Einhängpunkt %s\n"
-#: apt-pkg/cdrom.cc:579
+#: apt-pkg/cdrom.cc:603
msgid "Unmounting CD-ROM\n"
msgstr "Hänge CD-ROM aus\n"
-#: apt-pkg/cdrom.cc:583
+#: apt-pkg/cdrom.cc:607
msgid "Waiting for disc...\n"
msgstr "Warte auf CD...\n"
#. Mount the new CDROM
-#: apt-pkg/cdrom.cc:591
+#: apt-pkg/cdrom.cc:615
msgid "Mounting CD-ROM...\n"
msgstr "Hänge CD-ROM ein...\n"
-#: apt-pkg/cdrom.cc:609
+#: apt-pkg/cdrom.cc:633
msgid "Scanning disc for index files..\n"
msgstr "Suche auf CD nach Index-Dateien...\n"
-#: apt-pkg/cdrom.cc:647
-#, c-format
-msgid "Found %i package indexes, %i source indexes and %i signatures\n"
+#: apt-pkg/cdrom.cc:673
+#, fuzzy, c-format
+msgid ""
+"Found %i package indexes, %i source indexes, %i translation indexes and %i "
+"signatures\n"
msgstr "Fand %i Paketindexe, %i Quellenindexe und %i Signaturen\n"
-#: apt-pkg/cdrom.cc:710
+#: apt-pkg/cdrom.cc:737
msgid "That is not a valid name, try again.\n"
msgstr "Dies ist kein gültiger Name, versuchen Sie es erneut.\n"
-#: apt-pkg/cdrom.cc:726
+#: apt-pkg/cdrom.cc:753
#, c-format
msgid ""
"This disc is called: \n"
"Diese CD heißt jetzt: \n"
"»%s«\n"
-#: apt-pkg/cdrom.cc:730
+#: apt-pkg/cdrom.cc:757
msgid "Copying package lists..."
msgstr "Kopiere Paketlisten..."
-#: apt-pkg/cdrom.cc:754
+#: apt-pkg/cdrom.cc:783
msgid "Writing new source list\n"
msgstr "Schreibe neue Quellliste\n"
-#: apt-pkg/cdrom.cc:763
+#: apt-pkg/cdrom.cc:792
msgid "Source list entries for this disc are:\n"
msgstr "Quelllisteneinträge für diese CD sind:\n"
-#: apt-pkg/cdrom.cc:803
+#: apt-pkg/cdrom.cc:832
msgid "Unmounting CD-ROM..."
msgstr "Hänge CD-ROM aus..."
-#: apt-pkg/indexcopy.cc:261
+#: apt-pkg/indexcopy.cc:263 apt-pkg/indexcopy.cc:830
#, c-format
msgid "Wrote %i records.\n"
msgstr "Es wurden %i Datensätze geschrieben.\n"
-#: apt-pkg/indexcopy.cc:263
+#: apt-pkg/indexcopy.cc:265 apt-pkg/indexcopy.cc:832
#, c-format
msgid "Wrote %i records with %i missing files.\n"
msgstr "Es wurden %i Datensätze mit %i fehlenden Dateien geschrieben.\n"
-#: apt-pkg/indexcopy.cc:266
+#: apt-pkg/indexcopy.cc:268 apt-pkg/indexcopy.cc:835
#, c-format
msgid "Wrote %i records with %i mismatched files\n"
msgstr "Es wurden %i Datensätze mit %i nicht passenden Dateien geschrieben.\n"
-#: apt-pkg/indexcopy.cc:269
+#: apt-pkg/indexcopy.cc:271 apt-pkg/indexcopy.cc:838
#, c-format
msgid "Wrote %i records with %i missing files and %i mismatched files\n"
msgstr ""
msgid "Removed with config %s"
msgstr ""
+#: methods/rred.cc:219
+#, fuzzy
+msgid "Could not patch file"
+msgstr "Konnte Datei %s nicht öffnen"
+
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr "Verbindung zu früh beendet"
+#~ msgid "Please provide a name for this Disc, such as 'Debian 2.1r1 Disk 1'"
+#~ msgstr ""
+#~ "Bitte geben Sie einen Namen für die CD an, wie zum Beispiel »Debian 2.2r1 "
+#~ "Disk 1«"
+
+#~ msgid "Please insert a Disc in the drive and press enter"
+#~ msgstr ""
+#~ "Bitte legen Sie ein Medium ins Laufwerk und drücken Sie die Eingabetaste"
+
+#~ msgid "Repeat this process for the rest of the CDs in your set."
+#~ msgstr ""
+#~ "Wiederholen Sie dieses Prozedere für Ihre restlichen CDs diese Reihe."
+
+#, fuzzy
+#~ msgid "Skiping already downloaded file '%s'\n"
+#~ msgstr "Überspringe Entpacken der schon entpackten Quelle in %s\n"
+
#~ msgid "Unknown vendor ID '%s' in line %u of source list %s"
#~ msgstr "Unbekannte Herstellerkennung »%s« in Zeile %u der Quellliste %s"