#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>
/*}}}*/
{
Status = StatIdle;
ErrorText = LookupTag(Message,"Message");
+ UsedMirror = LookupTag(Message,"UsedMirror");
if (QueueCounter <= 1)
{
/* This indicates that the file is not available right now but might
Dequeue();
return;
}
-
+
Status = StatError;
Dequeue();
}
+
+ // report mirror failure back to LP if we actually use a mirror
+ string FailReason = LookupTag(Message, "FailReason");
+ if(FailReason.size() != 0)
+ ReportMirrorFailure(FailReason);
+ else
+ ReportMirrorFailure(ErrorText);
}
/*}}}*/
// Acquire::Item::Start - Item has begun to download /*{{{*/
{
// We just downloaded something..
string FileName = LookupTag(Message,"Filename");
- // we only inform the Log class if it was actually not a local thing
+ UsedMirror = LookupTag(Message,"UsedMirror");
- if (Complete == false && FileName == DestFile)
+ if (Complete == false && !Local && FileName == DestFile)
{
if (Owner->Log != 0)
Owner->Log->Fetched(Size,atoi(LookupTag(Message,"Resume-Point","0").c_str()));
if (FileSize == 0)
FileSize= Size;
-
Status = StatDone;
ErrorText = string();
Owner->Dequeue(this);
}
/*}}}*/
+void pkgAcquire::Item::ReportMirrorFailure(string FailCode)
+{
+ // we only act if a mirror was used at all
+ if(UsedMirror.empty())
+ return;
+#if 0
+ std::cerr << "\nReportMirrorFailure: "
+ << UsedMirror
+ << " Uri: " << DescURI()
+ << " FailCode: "
+ << FailCode << std::endl;
+#endif
+ const char *Args[40];
+ unsigned int i = 0;
+ string report = _config->Find("Methods::Mirror::ProblemReporting",
+ "/usr/lib/apt/apt-report-mirror-failure");
+ if(!FileExists(report))
+ return;
+ Args[i++] = report.c_str();
+ Args[i++] = UsedMirror.c_str();
+ Args[i++] = DescURI().c_str();
+ Args[i++] = FailCode.c_str();
+ Args[i++] = NULL;
+ pid_t pid = ExecFork();
+ if(pid < 0)
+ {
+ _error->Error("ReportMirrorFailure Fork failed");
+ return;
+ }
+ else if(pid == 0)
+ {
+ execvp(Args[0], (char**)Args);
+ std::cerr << "Could not exec " << Args[0] << std::endl;
+ _exit(100);
+ }
+ if(!ExecWait(pid, "report-mirror-failure"))
+ {
+ _error->Warning("Couldn't report problem to '%s'",
+ _config->Find("Methods::Mirror::ProblemReporting").c_str());
+ }
+}
+
+
+
+ // 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:/")
+ {
+ // 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)
+ {
+ // we have the same sha1 as the server
+ 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);
+ }
+ }
+ }
+
+ // we have something, queue the next diff
+ if(found)
+ {
+ // queue the diffs
+ int last_space = Description.rfind(" ");
+ if(last_space != string::npos)
+ Description.erase(last_space, Description.size()-last_space);
+ new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
+ ExpectedMD5, available_patches);
+ Complete = false;
+ Status = StatDone;
+ Dequeue();
+ return true;
+ }
+ }
+
+ // Nothing found, report and return false
+ // Failing here is ok, if we return false later, the full
+ // IndexFile is queued
+ if(Debug)
+ std::clog << "Can't find a patch in the index file" << std::endl;
+ 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);
+
+ 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 aquire" << 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 = 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;
+ Local = true;
+ 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;
+ Local = true;
+ 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);
+ chmod(FinalFile.c_str(),0644);
+
+ // 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;
struct stat Buf;
if (stat(Final.c_str(),&Buf) != 0)
return "\nIndex-File: true";
-
return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime);
}
/*}}}*/
void pkgAcqIndex::Failed(string Message,pkgAcquire::MethodConfig *Cnf)
{
-
// no .bz2 found, retry with .gz
if(Desc.URI.substr(Desc.URI.size()-3) == "bz2") {
Desc.URI = Desc.URI.substr(0,Desc.URI.size()-3) + "gz";
Status = StatAuthError;
ErrorText = _("MD5Sum mismatch");
Rename(DestFile,DestFile + ".FAILED");
+ ReportMirrorFailure("HashChecksumFailure");
return;
}
// Done, move it into position
if(Status == StatTransientNetworkError)
{
Item::Failed(Message,Cnf);
- // move the sigfile back on network failures (and re-authenticated?)
+ // move the sigfile back on transient network failures
if(FileExists(DestFile))
Rename(DestFile,Final);
// Move it into position
Rename(DestFile,FinalFile);
}
+ chmod(FinalFile.c_str(),0644);
DestFile = FinalFile;
}
}
}
- // Queue Packages file
- new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
- (*Target)->ShortDesc, ExpectedIndexMD5);
+ // Queue Packages file (either diff or full packages files, depending
+ // on the users option)
- if(_config->FindB("Acquire::PDiffs",true) == true)
++ if(_config->FindB("Acquire::PDiffs",false) == true)
+ new pkgAcqDiffIndex(Owner, (*Target)->URI, (*Target)->Description,
+ (*Target)->ShortDesc, ExpectedIndexMD5);
+ else
+ new pkgAcqIndex(Owner, (*Target)->URI, (*Target)->Description,
+ (*Target)->ShortDesc, ExpectedIndexMD5);
}
}
}
// gpgv method failed
+ ReportMirrorFailure("GPGFailure");
_error->Warning("GPG error: %s: %s",
Desc.Description.c_str(),
LookupTag(Message,"Message").c_str());
#include <apt-pkg/indexrecords.h>
- // 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, StatTransientNetworkError} 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,
+
+ /** \brief The item was could not be downloaded because of
+ * a transient network error (e.g. network down)
+ */
+ StatTransientNetworkError
+ } 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;
+ string UsedMirror;
- // 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;};
+
+ // report mirror problems
++ /** \brief Report mirror problem
++ *
++ * This allows reporting mirror failures back to a centralized
++ * server. The apt-report-mirror-failure script is called for this
++ *
++ * \param FailCode A short failure string that is send
++ */
+ void ReportMirrorFailure(string FailCode);
+
+
+ /** \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 ShortDesc, string ExpectedMD5, string compressExt="");
+ string ShortDesct, string ExpectedMD5, string compressExt="");
};
- // Item class for translated package index files
+ /** \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 ShortDesct);
+ 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
vector<string> Messages;
FetchItem *Queue;
FetchItem *QueueBack;
- string FailExtra;
+ string FailReason;
+ string UsedMirror;
+ string IP;
// Handlers for messages
virtual bool Configuration(string Message);
// Outgoing messages
void Fail(bool Transient = false);
inline void Fail(const char *Why, bool Transient = false) {Fail(string(Why),Transient);};
- void Fail(string Why, bool Transient = false);
- void URIStart(FetchResult &Res);
- void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+ virtual void Fail(string Why, bool Transient = false);
+ virtual void URIStart(FetchResult &Res);
+ virtual void URIDone(FetchResult &Res,FetchResult *Alt = 0);
+
bool MediaFail(string Required,string Drive);
virtual void Exit() {};
public:
-
enum CnfFlags {SingleInstance = (1<<0),
Pipeline = (1<<1), SendConfig = (1<<2),
LocalOnly = (1<<3), NeedsCleanup = (1<<4),
void Status(const char *Format,...);
int Run(bool Single = false);
- inline void SetFailExtraMsg(string Msg) {FailExtra = Msg;};
+ inline void SetFailReason(string Msg) {FailReason = Msg;};
+ inline void SetIP(string aIP) {IP = aIP;};
pkgAcqMethod(const char *Ver,unsigned long Flags = 0);
virtual ~pkgAcqMethod() {};
};
+ /** @} */
+
#endif
std::clog << "Skipping already written " << pkg.Name() << std::endl;
continue;
}
- // skip not installed ones if requested
- if(InstalledOnly && pkg->CurrentVer == 0)
- continue;
+ // skip not installed ones if requested
+ if(InstalledOnly && pkg->CurrentVer == 0)
+ continue;
if(_config->FindB("Debug::pkgAutoRemove",false))
std::clog << "Writing new AutoInstall: "
<< pkg.Name() << std::endl;
// We dont even try to keep virtual packages..
if (Pkg->VersionList == 0)
return;
-
#if 0 // reseting the autoflag here means we lose the
// auto-mark information if a user selects a package for removal
// but changes his mind then and sets it for keep again
std::clog << "Installing " << InstPkg.Name()
<< " as dep of " << Pkg.Name()
<< std::endl;
-
- // now check if we should consider it a automatic dependency or not
- string sec = _config->Find("APT::Never-MarkAuto-Section","");
- if(Pkg.Section() && (string(Pkg.Section()) == sec))
- {
- if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true)
- std::clog << "Setting NOT as auto-installed because its a direct dep of a package in section " << sec << std::endl;
- MarkInstall(InstPkg,true,Depth + 1, true, ForceImportantDeps);
- }
- else
- {
- // mark automatic dependency
- MarkInstall(InstPkg,true,Depth + 1, false, ForceImportantDeps);
- // Set the autoflag, after MarkInstall because MarkInstall unsets it
- if (P->CurrentVer == 0)
- PkgState[InstPkg->ID].Flags |= Flag::Auto;
- }
+ // now check if we should consider it a automatic dependency or not
+ string sec = _config->Find("APT::Never-MarkAuto-Section","");
+ if(Pkg.Section() && (string(Pkg.Section()) == sec))
+ {
+ if(_config->FindB("Debug::pkgDepCache::AutoInstall",false) == true)
+ std::clog << "Setting NOT as auto-installed because its a direct dep of a package in section " << sec << std::endl;
+ MarkInstall(InstPkg,true,Depth + 1, true);
+ }
+ else
+ {
+ // mark automatic dependency
+ MarkInstall(InstPkg,true,Depth + 1, false, ForceImportantDeps);
+ // Set the autoflag, after MarkInstall because MarkInstall unsets it
+ if (P->CurrentVer == 0)
+ PkgState[InstPkg->ID].Flags |= Flag::Auto;
+ }
}
continue;
}
return Last;
}
/*}}}*/
-// Policy::IsImportantDep - True if the dependency is important /*{{{*/
-// ---------------------------------------------------------------------
-/* */
-bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep)
-{
- if(Dep.IsCritical())
- return true;
- else if(Dep->Type == pkgCache::Dep::Recommends)
- {
- if ( _config->FindB("APT::Install-Recommends", false))
- return true;
- // we suport a special mode to only install-recommends for certain
- // sections
- // FIXME: this is a meant as a temporarly solution until the
- // recommends are cleaned up
- string s = _config->Find("APT::Install-Recommends-Section","");
- if(s.size() > 0)
- {
- const char *sec = Dep.TargetPkg().Section();
- if (sec && strcmp(sec, s.c_str()) == 0)
- return true;
- }
- }
- else if(Dep->Type == pkgCache::Dep::Suggests)
- return _config->FindB("APT::Install-Suggests", false);
-
- return false;
-}
/*}}}*/
pkgDepCache::DefaultRootSetFunc::DefaultRootSetFunc()
return true;
}
+
+// Policy::IsImportantDep - True if the dependency is important /*{{{*/
+// ---------------------------------------------------------------------
+/* */
+bool pkgDepCache::Policy::IsImportantDep(DepIterator Dep)
+{
+ if(Dep.IsCritical())
+ return true;
+ else if(Dep->Type == pkgCache::Dep::Recommends)
+ {
+ if ( _config->FindB("APT::Install-Recommends", false))
+ return true;
+ // we suport a special mode to only install-recommends for certain
+ // sections
+ // FIXME: this is a meant as a temporarly solution until the
+ // recommends are cleaned up
+ string s = _config->Find("APT::Install-Recommends-Section","");
+ if(s.size() > 0)
+ {
+ const char *sec = Dep.ParentVer().Section();
+ if (sec && strcmp(sec, s.c_str()) == 0)
+ return true;
+ }
+ }
+ else if(Dep->Type == pkgCache::Dep::Suggests)
+ return _config->FindB("APT::Install-Suggests", false);
+
+ return false;
+}
+ /*}}}*/
++
#include <apti18n.h>
#include <config.h>
+ #include <cstdlib>
#include <sys/stat.h>
/*}}}*/
Cnf.Set("Dir::State::lists","lists/");
Cnf.Set("Dir::State::cdroms","cdroms.list");
+ Cnf.Set("Dir::State::mirrors","mirrors/");
// Cache
Cnf.Set("Dir::Cache","var/cache/apt/");
bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str());
}
#endif
--
+ // Translation
+ Cnf.Set("APT::Acquire::Translation", "environment");
+
return true;
}
/*}}}*/
#include <apt-pkg/pkgcache.h>
#include <apt-pkg/fileutl.h>
+#include <vector>
class pkgRecords
{
private:
pkgCache &Cache;
- Parser **Files;
-
+ std::vector<Parser *>Files;
+
public:
// Lookup function
virtual string MD5Hash() {return string();};
virtual string SHA1Hash() {return string();};
virtual string SourcePkg() {return string();};
+ virtual string SourceVer() {return string();};
// These are some general stats about the package
virtual string Maintainer() {return string();};
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
- AC_DEFINE_UNQUOTED(VERSION,"0.6.46.4ubuntu11")
-AC_DEFINE_UNQUOTED(VERSION,"0.7.2")
++AC_DEFINE_UNQUOTED(VERSION,"0.7.2ubuntu1")
PACKAGE="apt"
AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
AC_SUBST(PACKAGE)
dnl Converts the ARCH to be something singular for this general CPU family
dnl This is often the dpkg architecture string.
+ dnl First check against the full canonical canoncial-system-type in $target
+ dnl and if that fails, just look for the cpu
AC_MSG_CHECKING(system architecture)
- archset="`awk \" ! /^#|^\\\$/ { if(match(\\\"$target_cpu\\\",\\\"^\\\"\\\$1\\\"\\\$\\\")) {print \\\$2; exit}}\" $srcdir/buildlib/archtable`"
+ archset="`awk \" ! /^#|^\\\$/ { if(match(\\\"$target\\\",\\\"^\\\"\\\$1\\\"\\\$\\\")) {print \\\$2; exit}}\" $srcdir/buildlib/systemtable`"
if test "x$archset" = "x"; then
+ archset="`awk \" ! /^#|^\\\$/ { if(match(\\\"$target_cpu\\\",\\\"^\\\"\\\$1\\\"\\\$\\\")) {print \\\$2; exit}}\" $srcdir/buildlib/archtable`"
+ if test "x$archset" = "x"; then
AC_MSG_ERROR(failed: use --host= or check buildlib/archtable)
+ fi
fi
AC_MSG_RESULT($archset)
AC_DEFINE_UNQUOTED(COMMON_CPU,"$archset")
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)
--- /dev/null
+ APT
+ {
+ NeverAutoRemove
+ {
+ "^linux-image.*";
+ "^linux-restricted-modules.*";
+ };
++
++ Install-Recommends-Section "metapackages";
++ Never-MarkAuto-Section "metapackages";
+ };
DownloadUpgradeableInterval=0
eval $(apt-config shell UpdateInterval APT::Periodic::Update-Package-Lists DownloadUpgradeableInterval APT::Periodic::Download-Upgradeable-Packages)
AutocleanInterval=$DownloadUpgradeableInterval
- eval $(apt-config shell AutocleanInterval APT::Periodic::Autoclean)
+ eval $(apt-config shell AutocleanInterval APT::Periodic::AutocleanInterval)
+
+ UnattendedUpgradeInterval=0
+ eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
+
+UnattendedUpgradeInterval=0
+eval $(apt-config shell UnattendedUpgradeInterval APT::Periodic::Unattended-Upgrade)
+
+
# laptop check, on_ac_power returns:
# 0 (true) System is on mains power
# 1 (false) System is not on mains power
- apt (0.6.46.4ubuntu11) UNRELEASED; urgency=low
++apt (0.7.2ubuntu1) gutsy; urgency=low
+
++ * apt-pkg/deb/dpkgpm.cc:
++ - apport integration added, this means that a apport
++ report is written on dpkg failures
++ * merged from debian/unstable, remaining changes:
++ - maintainer field changed
++
++
++ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 14 Jun 2007 10:38:36 +0200
++
+ apt (0.7.2) unstable; urgency=low
+
+ * merged the debian/experimental changes back
+ into the debian/sid branch
+ * merged from Christian Perrier:
+ * mr.po: New Marathi translation Closes: #416806
+ * zh_CN.po: Updated by Eric Pareja Closes: #416822
+ * tl.po: Updated by Eric Pareja Closes: #416638
+ * gl.po: Updated by Jacobo Tarrio
+ Closes: #412828
+ * da.po: Updated by Claus Hindsgaul
+ Closes: #409483
+ * fr.po: Remove a non-breakable space for usability
+ issues. Closes: #408877
+ * ru.po: Updated Russian translation. Closes: #405476
+ * *.po: Unfuzzy after upstream typo corrections
+ * buildlib/archtable:
+ - added support for sh3/sh4 (closes: #424870)
+ - added support for m32r (closes: #394096)
+ * buildlib/systemtable:
+ - added support for lpia
+ * configure.in:
+ - check systemtable for architecture mapping too
+ * fix error in AutocleanInterval, closes: #319339
+ (thanks to Israel G. Lugo for the patch)
+ * add "purge" commandline argument, closes: #133421)
+ (thanks to Julien Danjou for the patch)
+ * add "purge" commandline argument, closes: #133421)
+ (thanks to Julien Danjou for the patch)
+ * fix FTBFS with gcc 4.3, closes: #417090
+ (thanks to Martin Michlmayr for the patch)
+ * add --dsc-only option, thanks to K. Richard Pixley
+ * Removed the more leftover #pragma interface/implementation
+ closes: #306937 (thanks to Andreas Henriksson for the patch)
+
+ -- Michael Vogt <mvo@debian.org> Wed, 06 Jun 2007 23:19:50 +0200
+
+ apt (0.7.1) experimental; urgency=low
+
+ * ABI library name change because its build against
+ new glibc
+ * implement SourceVer() in pkgRecords
+ (thanks to Daniel Burrows for the patch!)
+ * apt-pkg/algorithm.cc:
+ - use clog for all debugging
+ - only increase the score of installed applications if they
+ are not obsolete
+ - fix resolver bug on removal triggered by weak-dependencies
+ with or-groups
+ * methods/http.cc:
+ - send apt version in User-Agent
+ * apt-pkg/deb/debrecords.cc:
+ - fix SHA1Hash() return value
+ * apt-pkg/cdrom.cc:
+ - only unmount if APT::CDROM::NoMount is false
+ * methods/cdrom.cc:
+ - only umount if it was mounted by the method before
* po/gl.po:
- - fix error translation that causes trouble to lsb_release
+ - fix error in translation that causes trouble to lsb_release
+ (LP#79165)
* apt-pkg/acquire-item.cc:
- - if decompression of a index fails, delete the index (LP#68202)
+ - if decompression of a index fails, delete the index
* apt-pkg/acquire.{cc,h}:
- deal better with duplicated sources.list entries (avoid
double queuing of URLs) - this fixes hangs in bzip/gzip
+ (LP#102511)
+ * Fix broken use of awk in apt-key that caused removal of the wrong keys
+ from the keyring. Closes: #412572
* merged from Christian Perrier:
* mr.po: New Marathi translation Closes: #416806
* zh_CN.po: Updated by Eric Pareja Closes: #416822
issues. Closes: #408877
* ru.po: Updated Russian translation. Closes: #405476
* *.po: Unfuzzy after upstream typo corrections
+ * vi.po: Updated to 515t. Closes: #426976
+ * eu.po: Updated to 515t. Closes: #423766
+ * pt.po: 515t. Closes: #423111
+ * fr.po: Updated by Christian Perrier
+ * Update all PO and the POT. Gives 513t2f for formerly
+ complete translations
* apt-pkg/policy.cc:
- allow multiple packages (thanks to David Foerster)
- * apt-pkg/deb/dpkgpm.cc:
- - apport integration added, this means that a apport
- report is written on dpkg failures
- -- Michael Vogt <mvo@debian.org> Wed, 2 May 2007 13:43:44 +0200
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 17 Apr 2007 15:53:37 +0200
+
+apt (0.6.46.4ubuntu10) feisty; urgency=low
+
+ * apt-pkg/depcache.cc:
+ - added "APT::Never-MarkAuto-Section" and consider dependencies
+ of packages in this section manual (LP#59893)
+ - ensure proper permissions in the extended_state file (LP#67037)
+ * debian/apt.conf.ubuntu:
+ - added APT::Never-MarkAuto-Section "metapackages" (LP#59893)
+ * cmdline/apt-get.cc:
+ - "apt-get install foo" on a already installed package foo will
+ clean the automatic installed flag (LP#72007)
+ - do not show packages already marked for removal as auto-installed
+ (LP#64493)
+ - applied patch to (optionally) hide the auto-remove information
+ (thanks to Frode M. Døving) (LP#69148)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 14 Mar 2007 13:32:32 +0100
+
+apt (0.6.46.4ubuntu9) feisty; urgency=low
+
+ * debian/control:
+ - set XS-Vcs-Bzr header
+ - Set Ubuntu maintainer address
+ * apt-pkg/cdrom.cc:
+ - only unmount if APT::CDROM::NoMount is false
+ - only umount if it was mounted by the method before
+ * cmdline/apt-get.cc:
+ - fix version output in autoremove list (LP#68941)
+ * apt-pkg/packagemanager.cc:
+ - do not spin 100% cpu in FixMissing() (LP#84476)
+ * apt-pkg/indexfile.cc:
+ - fix problem overwriting APT::Acquire::Translation
+ * doc/examples/configure-index:
+ - document APT::Acquire::Translation
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 13 Mar 2007 15:24:39 +0100
+
+apt (0.6.46.4ubuntu8) feisty; urgency=low
+
+ * fix segfault in the pkgRecords destructor
+ * Bump ABI version
+ * debian/control:
+ - make the libcurl3-gnutls-dev versionized (LP#86614)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 26 Feb 2007 14:26:33 +0100
+
+apt (0.6.46.4ubuntu7) feisty; urgency=low
+
+ * Merged the apt--mirror branch. This means that a new 'mirror'
+ method is available that will allow dynamic mirror updates.
+ The sources.list entry looks something like this:
+ "deb mirror://mirrors.lp.net/get_mirror feisty main restricted"
+
+ It also supports error reporting to a configurable url for mirror
+ problems/failures.
+ * Bump ABI version
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 6 Feb 2007 11:38:06 +0100
+
+apt (0.6.46.4ubuntu6) feisty; urgency=low
+
+ * methods/http.cc:
+ - send apt version in User-Agent
+ * apt-pkg/deb/debrecords.cc:
+ - fix SHA1Hash() return value
+ * apt-pkg/algorithms.cc:
+ - fix resolver bug on removal triggered by weak-dependencies
+ with or-groups
+ - fix segfault (lp: #76530)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 20 Dec 2006 11:04:36 +0100
+
+apt (0.6.46.4ubuntu5) feisty; urgency=low
+
+ * added apt-transport-https package to provide a optional
+ https transport (apt-https spec)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 19 Dec 2006 16:23:43 +0100
+
+apt (0.6.46.4ubuntu4) feisty; urgency=low
+
+ * apt-pkg/algorithms.cc:
+ - only increase the score of installed applications if they
+ are not obsolete
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 18 Dec 2006 19:39:05 +0100
+ apt (0.7.0) experimental; urgency=low
+
+ * Package that contains tall the new features
+ * Removed all #pragma interface/implementation
+ * Branch that contains tall the new features:
+ * translated package descriptions
+ * task install support
+ * automatic dependency removal (thanks to Daniel Burrows)
+ * merged support for the new dpkg "Breaks" field
+ (thanks to Ian Jackson)
+ * handle network failures more gracefully on "update"
+ * support for unattended-upgrades (via unattended-upgrades
+ package)
+ * added apt-transport-https method
+
+ -- Michael Vogt <mvo@debian.org> Fri, 12 Jan 2007 20:48:07 +0100
+
+apt (0.6.46.4ubuntu3) feisty; urgency=low
+
+ * apt-pkg/algorithm.cc:
+ - use clog for all debugging
+ * apt-pkg/depcache.cc:
+ - never mark Required package for autoremoval (lp: #75882)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 18 Dec 2006 11:56:05 +0100
+
+apt (0.6.46.4ubuntu2) feisty; urgency=low
+
+ * apt-pkg/algorithms.cc: add missing call to MarkKeep
+ so that dist-upgrade isn't broken by unsatisfiable Breaks.
+ (thanks to Ian Jackson)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 7 Dec 2006 23:07:24 +0100
+
+apt (0.6.46.4ubuntu1) feisty; urgency=low
+
+ * merged with debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 7 Dec 2006 12:13:14 +0100
+
apt (0.6.46.4-0.1) unstable; urgency=emergency
* NMU
-- Andreas Barth <aba@not.so.argh.org> Tue, 5 Dec 2006 10:34:56 +0000
+apt (0.6.46.3ubuntu2) feisty; urgency=low
+
+ * apt-pkg/algorithms.cc: add missing call to MarkKeep
+ so that dist-upgrade isn't broken by unsatisfiable Breaks.
+
+ -- Ian Jackson <iwj@ubuntu.com> Thu, 7 Dec 2006 15:46:52 +0000
+
+apt (0.6.46.3ubuntu1) feisty; urgency=low
+
+ * doc/apt-get.8.xml:
+ - documented autoremove, thanks to Vladimír Lapá\e%GÄ\8d\e%@ek
+ (lp: #62919)
+ * fix broken i18n in the dpkg progress reporting, thanks to
+ Frans Pop and Steinar Gunderson. (closes: #389261)
+ * po/en_GB.po:
+ - typo (lp: #61270)
+ * add apt-secure.8 to "See also" section
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 23 Nov 2006 07:24:12 +0100
+
apt (0.6.46.3) unstable; urgency=low
* apt-pkg/deb/dpkgpm.cc:
messages
* Merged from Christian Perrier bzr branch:
- - ca.po: Updated to 514t
- - be.po: Updated to 514t
- - it.po: Updated to 514t
- - hu.po: Updated to 514t
- - zh_TW.po: Updated to 514t
- - ar.po: Updated to 293t221u.
- - ru.po: Updated to 514t. Closes: #392466
- - nb.po: Updated to 514t. Closes: #392466
- - pt.po: Updated to 514t. Closes: #393199
- - fr.po: One spelling error corrected: s/accèder/accéder
- - km.po: Updated to 514t.
- - ko.po: Updated to 514t.
- - bg.po: Updated to 514t.
- - de.po: Updated to 514t.
- - en_GB.po: Updated to 514t.
-
- -- Michael Vogt <mvo@debian.org> Thu, 2 Nov 2006 11:37:58 +0100
+ - ca.po: Updated to 514t
+ - be.po: Updated to 514t
+ - it.po: Updated to 514t
+ - hu.po: Updated to 514t
+ - zh_TW.po: Updated to 514t
+ - ar.po: Updated to 293t221u.
+ - ru.po: Updated to 514t. Closes: #392466
+ - nb.po: Updated to 514t. Closes: #392466
+ - pt.po: Updated to 514t. Closes: #393199
+ - fr.po: One spelling error corrected: s/accèder/accéder
+ - km.po: Updated to 514t.
+ - ko.po: Updated to 514t.
+ - bg.po: Updated to 514t.
+ - de.po: Updated to 514t.
+ - en_GB.po: Updated to 514t.
+
+ -- Michael Vogt <mvo@debian.org> Thu, 2 Nov 2006 11:37:58 +0100
apt (0.6.46.2) unstable; urgency=low
+ * debian/control:
+ - depend on debian-archive-keyring to offer clean upgrade path
+ (closes: #386800)
* Merged from Christian Perrier bzr branch:
- es.po: Updated to 514t. Closes: #391661
- da.po: Updated to 514t. Closes: #391424
- cs.po: Updated. Closes: #391064
- es.po: Updated to 514t. Closes: #391661
- da.po: Updated to 514t. Closes: #391424
-
+
-- Michael Vogt <mvo@debian.org> Wed, 11 Oct 2006 09:03:15 +0200
apt (0.6.46.1) unstable; urgency=low
+ * merged "install-recommends" branch (ABI break):
+ - new "--install-recommends"
+ - install new recommends on "upgrade" if --install-recommends is
+ given
+ - new "--fix-policy" option to install all packages with unmet
+ important dependencies (usefull with --install-recommends to
+ see what not-installed recommends are on the system)
+ - fix of recommended packages display (only show CandidateVersion
+ fix or-group handling)
+ * merged "install-task" branch (use with "apt-get install taskname^")
* methods/gzip.cc:
- deal with empty files
- * Applied patch from Daniel Schepler to make apt bin-NMU able.
+ * Applied patch from Daniel Schepler to make apt bin-NMU able.
(closes: bug#359634)
* rebuild against current g++ because of:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29289
* debian/control:
- switched to libdb4.4 for building (closes: #381019)
* cmdline/apt-get.cc:
- - show only the recommends/suggests for the candidate-version, not for all
- versions of the package (closes: #257054)
- - properly handle recommends/suggests or-groups when printing the list of
- suggested/recommends packages (closes: #311619)
+ - fix in the TryInstallTask() code to make sure that all package
+ there are marked manual install (lp: #61684)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 28 Sep 2006 00:34:20 +0200
+
+apt (0.6.45ubuntu14) edgy; urgency=low
+
+ * cmdline/apt-get.cc:
+ - fix in the TryInstallTask() code to make sure that all package
+ there are marked manual install (lp: #61684)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 28 Sep 2006 00:34:20 +0200
+
+apt (0.6.45ubuntu13) edgy; urgency=low
+
+ * no-changes upload to make apt rebuild against latest g++ and
+ fix synaptic FTBFS (see bug: #62461 for details)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 26 Sep 2006 22:33:10 +0200
+
+apt (0.6.45ubuntu12) edgy; urgency=low
+
+ * apt-pkg/depcache.cc:
+ - fix in the sweep() code, set garbage flag for packages scheduled
+ for removal too
+ - do not change the autoFlag in MarkKeep(), this can lead to suprising
+ side effects
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 21 Sep 2006 00:58:24 +0200
+
+apt (0.6.45ubuntu11) edgy; urgency=low
+
+ * removed "installtask" and change it so that tasknames can be given
+ with "apt-get install taskname^"
+ * improve the writeStateFile() code
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 20 Sep 2006 14:14:24 +0200
+
+apt (0.6.45ubuntu10) edgy; urgency=low
+
* methods/http.cc:
- check more careful for incorrect proxy settings (closes: #378868)
* methods/gzip.cc:
caseinsensitive (closes: #384182)
- reverted MMap use in the tagfile because it does not work
across pipes (closes: #383487)
+ * added "installtask" command
+ * added new ubuntu specific rewrite rule for "Original-Maintainer"
- -- Michael Vogt <mvo@debian.org> Thu, 21 Sep 2006 10:25:03 +0200
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 19 Sep 2006 15:07:51 +0200
+
+apt (0.6.45ubuntu9) edgy; urgency=low
+
+ * cmdline/apt-get.cc:
+ - if --no-remove is given, do not run the AutoRemove code
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 13 Sep 2006 11:54:20 +0200
+
+apt (0.6.45ubuntu8) edgy; urgency=low
+
+ * apt-pkg/algorithm.cc:
+ - fix pkgProblemResolver.InstallProtect() to preserve the auto-install
+ information (lp: #59457)
+ * cmdline/apt-get.cc:
+ - fix typo in autoremove information (lp: #59420)
+ * install apt-mark to modify the automatically install information for
+ packages
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 8 Sep 2006 20:07:22 +0200
+
+apt (0.6.45ubuntu7) edgy; urgency=low
+
+ * apt-pkg/depcache.cc:
+ - fix a bug in the install-recommends-section code
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 7 Sep 2006 18:22:38 +0200
+
+apt (0.6.45ubuntu6) edgy; urgency=low
+
+ [Michael Vogt]
+ * cmdline/apt-get.cc:
+ - always show auto-removable packages and give a hint how to remove
+ them
+ * debian/apt.conf.ubuntu:
+ - exlucde linux-image and linux-restricted-modules from ever being
+ auto-removed
+ - added "metapackages" as the section we want to install recommends
+ by default
+ * apt-pkg/depcache.cc:
+ - added support to turn install-recommends selectively on/off by
+ section
+ [Ian Jackson]
+ * Tests pass without code changes! Except that we need this:
+ * Bump cache file major version to force rebuild so that Breaks
+ dependencies are included.
+ * Don't depend on or suggest any particular dpkg or dpkg-dev versions;
+ --auto-deconfigure is very very old and dpkg-dev's Breaks support
+ is more or less orthogonal.
+ * Initial draft of `Breaks' implementation. Appears to compile,
+ but as yet *completely untested*.
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 7 Sep 2006 11:50:52 +0200
+
+apt (0.6.45ubuntu5) edgy; urgency=low
+
+ * apt-pkg/pkgcachegen.cc:
+ - increase the APT::Cache-Limit to deal with the increased demand due
+ to the translated descriptions
+ * apt-pkg/deb/dpkgpm.cc:
+ - pass "--auto-deconfigure" to dpkg on install to support the
+ new "breaks" in dpkg
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 15 Aug 2006 12:06:26 +0200
+
+apt (0.6.45ubuntu4) edgy; urgency=low
+
+ * cmdline/apt-get.cc:
+ - fix in the new --fix-polciy code
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 14 Aug 2006 21:08:11 +0200
+
+apt (0.6.45ubuntu3) edgy; urgency=low
+
+ * ABI break
+ * merged latest apt--install-recommends (closes: #559000)
+ * added "--fix-policy" option to can be used as "--fix-broken" and
+ will install missing weak depends (recommends, and/or suggests
+ depending on the settings)
+ * merged the apt--ddtp branch
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 11 Aug 2006 12:53:23 +0200
+
+apt (0.6.45ubuntu2) edgy; urgency=low
+
+ * debian/control:
+ - switched to libdb4.4 for building (closes: #381019)
+ * cmdline/apt-get.cc:
+ - show only the recommends/suggests for the candidate-version, not for all
+ versions of the package (closes: #257054)
+ - properly handle recommends/suggests or-groups when printing the list of
+ suggested/recommends packages (closes: #311619)
+ * merged "apt--install-recommends" branch:
+ - added "{no-}install-recommends" commandline option
+ - added APT::Install-{Recommends,Suggests} option
+ - currently Install-Recommends defaults to "False"
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 9 Aug 2006 23:38:46 +0200
+
+apt (0.6.45ubuntu1) edgy; urgency=low
+
+ * merged with debian/unstable
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 1 Aug 2006 15:43:22 +0200
apt (0.6.45) unstable; urgency=low
* dz.po: New Dzongkha translation: 512t
* ro.po: Updated to 512t
* eu.po: Updated
- * eu.po: Updated
- * fix apt-get dist-upgrade
- * fix warning if no /var/lib/apt/extended_states is present
- * don't download Translations for deb-src sources.list lines
- * apt-pkg/tagfile.cc:
- - support not-mmapable files again
- -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 25 Jul 2006 11:55:22 +0200
+ -- Michael Vogt <mvo@debian.org> Thu, 27 Jul 2006 00:52:05 +0200
-apt (0.6.44.2exp1) experimental; urgency=low
+apt (0.6.44.2ubuntu4) edgy; urgency=low
- * added support for i18n of the package descriptions
- * added support for aptitude like auto-install tracking (a HUGE
- HUGE thanks to Daniel Burrows who made this possible)
- * synced with the http://people.debian.org/~mvo/bzr/apt/debian-sid branch
- * build from http://people.debian.org/~mvo/bzr/apt/debian-experimental
+ * Make apt-get dselect-upgrade happy again
- -- Michael Vogt <mvo@debian.org> Mon, 3 Jul 2006 21:50:31 +0200
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 21 Jul 2006 11:03:02 +0200
-apt (0.6.44.2) unstable; urgency=low
+apt (0.6.44.2ubuntu3) edgy; urgency=low
- * apt-pkg/depcache.cc:
- - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
- * apt-pkg/acquire-item.cc:
- - fix missing chmod() in the new aquire code
- (thanks to Bastian Blank, Closes: #367425)
- * merged from
- http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
- * sk.po: Completed to 512t
- * eu.po: Completed to 512t
- * fr.po: Completed to 512t
- * sv.po: Completed to 512t
- * Update all PO and the POT. Gives 506t6f for formerly
- complete translations
+ * Close extended_states file after writing it.
+
+ -- Colin Watson <cjwatson@ubuntu.com> Tue, 18 Jul 2006 00:12:13 +0100
+
+apt (0.6.44.2ubuntu2) edgy; urgency=low
+
+ * create a empty extended_states file if none exists already
- -- Michael Vogt <mvo@debian.org> Wed, 14 Jun 2006 12:00:57 +0200
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 4 Jul 2006 09:23:03 +0200
+
+apt (0.6.44.2ubuntu1) edgy; urgency=low
+
+ * merged with debian/unstable
+ * merged the "auto-mark" branch to support aptitude like
+ marking of automatically installed dependencies and added
+ "apt-get remove --auto-remove" to remove unused auto-installed
+ packages again
+ * changed library version from 3.11 to 3.50 to make it clearly
+ different from the debian version (we are ABI incompatible because
+ of the auto-mark patch)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 3 Jul 2006 18:30:46 +0200
+
+apt (0.6.44.2) unstable; urgency=low
+
+ * apt-pkg/depcache.cc:
+ - added Debug::pkgDepCache::AutoInstall (thanks to infinity)
+ * apt-pkg/acquire-item.cc:
+ - fix missing chmod() in the new aquire code
+ (thanks to Bastian Blank, Closes: #367425)
+ * merged from
+ http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
+ * sk.po: Completed to 512t
+ * eu.po: Completed to 512t
+ * fr.po: Completed to 512t
+ * sv.po: Completed to 512t
+ * Update all PO and the POT. Gives 506t6f for formerly
+ complete translations
+
+ -- Michael Vogt <mvo@debian.org> Wed, 14 Jun 2006 12:00:57 +0200
apt (0.6.44.1-0.1) unstable; urgency=low
apt (0.6.44.1) unstable; urgency=low
+ * apt-pkg/acquire-item.cc:
+ - fix reversed logic of the "Acquire::PDiffs" option
* merged from
http://www.perrier.eu.org/debian/packages/d-i/level4/apt-main:
- po/LINGUAS: added "bg" Closes: #360262
- po/gl.po: Galician translation update. Closes: #366849
- po/hu.po: Hungarian translation update. Closes: #365448
- po/cs.po: Czech translation updated. Closes: #367244
+ * apt-pkg/contrib/sha256.cc:
+ - applied patch to fix unaligned access problem. Closes: #367417
+ (thanks to David Mosberger)
-- Michael Vogt <mvo@debian.org> Tue, 16 May 2006 21:51:16 +0200
apt (0.6.44) unstable; urgency=low
* apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large
+ * apt-pkg/contrib/sha256.{cc,h},hashes.{cc,h}: support for sha256
+ (thanks to Anthony Towns)
+ * ftparchive/cachedb.{cc,h},writer.{cc,h}: optimizations
+ (thanks to Anthony Towns)
+ * apt pdiff support from experimental merged
+ * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman)
* apt-pkg/deb/dpkgpm.cc:
- wording fixes (thanks to Matt Zimmerman)
- - fix error in dpkg interaction (closes: #364513,
- thanks to Martin Dickopp)
+ - fix error in dpkg interaction (closes: #364513, thanks to Martin Dickopp)
* apt-pkg/tagfile.{cc,h}:
- use MMap to read the entries (thanks to Zephaniah E. Hull for the
patch) Closes: #350025
-- Michael Vogt <mvo@debian.org> Mon, 8 May 2006 22:28:53 +0200
+apt (0.6.43.3ubuntu3) dapper; urgency=low
+
+ * methods/http.cc:
+ - fix the user-agent string
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 26 May 2006 18:09:32 +0200
+
+apt (0.6.43.3ubuntu2) dapper; urgency=low
+
+ * apt-pkg/deb/dpkgpm.cc: wording fixes (thanks to Matt Zimmerman)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 18 Apr 2006 13:24:40 +0200
+
+apt (0.6.43.3ubuntu1) dapper; urgency=low
+
+ * apt-pkg/acquire.cc: don't show ETA if it is 0 or absurdely large in
+ the status-fd (ubuntu #28954)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 28 Mar 2006 20:34:46 +0200
+
apt (0.6.43.3) unstable; urgency=low
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-186:
* pl.po: Completed to 512t. Closes: #349514
* sk.po: Completed to 512t. Closes: #349474
* gl.po: Completed to 512 strings Closes: #349407
+ * vi.po: Completed to 512 strings
* sv.po: Completed to 512 strings Closes: #349210
* ru.po: Completed to 512 strings Closes: #349154
* da.po: Completed to 512 strings Closes: #349084
* fr.po: Completed to 512 strings
+ * LINGUAS: Add Welsh
+ * *.po: Updated from sources (512 strings)
* vi.po: Completed to 511 strings Closes: #348968
- * zh_CN.po: Completed to 512t. Closes: #353936
- * it.po: Completed to 512t. Closes: #352803
- * pt_BR.po: Completed to 512t. Closes: #352419
+ * apt-pkg/deb/deblistparser.cc:
+ - don't explode on a DepCompareOp in a Provides line, but warn about
+ it and ignore it otherwise (thanks to James Troup for reporting it)
+ * cmdline/apt-get.cc:
+ - don't lock the lists directory in DoInstall, breaks --print-uri
+ (thanks to James Troup for reporting it)
+ * debian/apt.dirs: create /etc/apt/sources.list.d
+ * make apt-cache madison work without deb-src entries (#352583)
+ * cmdline/apt-get.cc: only run the list-cleaner if a update was
+ successfull
+ * apt-get update errors are only warnings nowdays
+ * be more careful with the signature file on network failures
+
+ -- Michael Vogt <mvo@debian.org> Wed, 22 Feb 2006 10:13:04 +0100
+
+apt (0.6.43.2ubuntu1) dapper; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-182:
+ * ca.po: Completed to 512t. Closes: #351592
+ * eu.po: Completed to 512t. Closes: #350483
+ * ja.po: Completed to 512t. Closes: #349806
+ * pl.po: Completed to 512t. Closes: #349514
+ * sk.po: Completed to 512t. Closes: #349474
+ * gl.po: Completed to 512 strings Closes: #349407
+ * vi.po: Completed to 512 strings
+ * sv.po: Completed to 512 strings Closes: #349210
+ * ru.po: Completed to 512 strings Closes: #349154
+ * da.po: Completed to 512 strings Closes: #349084
+ * fr.po: Completed to 512 strings
* LINGUAS: Add Welsh
* *.po: Updated from sources (512 strings)
+ * vi.po: Completed to 511 strings Closes: #348968
* apt-pkg/deb/deblistparser.cc:
- don't explode on a DepCompareOp in a Provides line, but warn about
it and ignore it otherwise (thanks to James Troup for reporting it)
* make apt-cache madison work without deb-src entries (#352583)
* cmdline/apt-get.cc: only run the list-cleaner if a update was
successfull
+ * apt-get update errors are only warnings nowdays
+ * be more careful with the signature file on network failures
- -- Michael Vogt <mvo@debian.org> Wed, 22 Feb 2006 10:13:04 +0100
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 20 Feb 2006 22:27:48 +0100
apt (0.6.43.2) unstable; urgency=low
-- Michael Vogt <mvo@debian.org> Thu, 19 Jan 2006 00:06:33 +0100
-apt (0.6.43.1) unstable; urgency=low
+apt (0.6.43.1ubuntu1) dapper; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-159:
+ - en_GB.po, de.po: fix spaces errors in "Ign " translations
+ Closes: #347258
+ - makefile: make update-po a pre-requisite of clean target so
+ that POT and PO files are always up-to-date
+ - sv.po: Completed to 511t. Closes: #346450
+ - sk.po: Completed to 511t. Closes: #346369
+ - fr.po: Completed to 511t
+ - *.po: Updated from sources (511 strings)
+ * add patch to fix http download corruption problem (thanks to
+ Petr Vandrovec, closes: #280844, #290694)
+ * added APT::Periodic::Unattended-Upgrade (requires the package
+ "unattended-upgrade")
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 10 Jan 2006 17:09:31 +0100
+apt (0.6.43.1) unstable; urgency=low
+
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-148:
* fr.po: Completed to 510 strings
* it.po: Completed to 510t
-- Michael Vogt <mvo@debian.org> Fri, 6 Jan 2006 01:17:08 +0100
+apt (0.6.43ubuntu2) dapper; urgency=low
+
+ * merged some missing bits that wheren't merged by baz in the previous
+ upload (*grumble*)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 8 Dec 2005 18:35:58 +0100
+
+apt (0.6.43ubuntu1) dapper; urgency=low
+
+ * merged with debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 25 Nov 2005 11:36:29 +0100
+
apt (0.6.43) unstable; urgency=medium
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-132:
-- Michael Vogt <mvo@debian.org> Tue, 29 Nov 2005 00:17:07 +0100
+apt (0.6.42.3ubuntu2) dapper; urgency=low
+
+ * Merge bubulle@debian.org--2005/apt--main--0 up to patch-131:
+ * zh_CN.po: Completed to 507 strings(Closes: #338267)
+ * gl.po: Completed to 510 strings (Closes: #338356)
+ * added support for "/etc/apt/sources.list.d" directory
+ (closes: #66325)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 14 Nov 2005 15:30:12 +0100
+
+apt (0.6.42.3ubuntu1) dapper; urgency=low
+
+ * synced with debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Thu, 10 Nov 2005 05:05:56 +0100
+
apt (0.6.42.3) unstable; urgency=low
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-129:
- unmount the cdrom when apt failed to locate any package files
* allow cdrom failures and fallback to other sources in that case
(closes: #44135)
- * better error text when dpkg-source fails
+ * better error text when dpkg-source fails
* Merge bubulle@debian.org--2005/apt--main--0 up to patch-115:
- patch-99: Added Galician translation
- patch-100: Completed Danish translation (Closes: #325686)
- patch-104: French translation completed
- patch-109: Italian translation completed
- - patch-112: Swedish translation update
+ - patch-112: Swedish translation update
- patch-115: Basque translation completed (Closes: #333299)
* applied french man-page update (thanks to Philippe Batailler)
(closes: #316638, #327456)
* apt-pkg/contrib/md5.cc:
- fix a alignment problem on sparc64 that gives random bus errors
(thanks to Fabbione for providing a test-case)
- * init the default ScreenWidth to 79 columns by default
+ * init the default ScreenWidth to 79 columns by default
(Closes: #324921)
- * cmdline/apt-cdrom.cc:
+ * cmdline/apt-cdrom.cc:
- fix some missing gettext() calls (closes: #334539)
* doc/apt-cache.8.xml: fix typo (closes: #334714)
* improved the support for "error" and "conffile" reporting from
dpkg, added the format to README.progress-reporting
* added README.progress-reporting to the apt-doc package
- * improved the network timeout handling, if a index file from a
- sources.list times out or EAI_AGAIN is returned from getaddrinfo,
+ * improved the network timeout handling, if a index file from a
+ sources.list times out or EAI_AGAIN is returned from getaddrinfo,
don't try to get the other files from that entry
* Support architecture-specific extra overrides
(closes: #225947). Thanks to Anthony Towns for idea and
* Javier Fernandez-Sanguino Pen~a:
- Added a first version of an apt-secure.8 manpage, and modified
apt-key and apt.end accordingly. Also added the 'update'
- argument to apt-key which was previously not documented
+ argument to apt-key which was previously not documented
(Closes: #322120)
* Andreas Pakulat:
- - added example apt-ftparchive.conf file to doc/examples
+ - added example apt-ftparchive.conf file to doc/examples
(closes: #322483)
* Fix a incorrect example in the man-page (closes: #282918)
* Fix a bug for very long lines in the apt-cdrom code (closes: #280356)
* Change pkgPolicy::Pin from private to protected to let subclasses
access it too (closes: #321799)
* add default constructor for PrvIterator (closes: #322267)
- * Reread status configuration on debSystem::Initialize()
+ * Reread status configuration on debSystem::Initialize()
(needed for apt-proxy, thanks to Otavio for this patch)
-
+
-- Michael Vogt <mvo@debian.org> Mon, 5 Sep 2005 22:59:03 +0200
+
+apt (0.6.40.1ubuntu8) breezy; urgency=low
+
+ * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-62:
+ - fix for a bad memory/file leak in the mmap code (ubuntu #15603)
+ * po/de.po, po/fr.po:
+ - updated the translations
+ * po/makefile:
+ - create a single pot file in each domain dir to make rosetta happy
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 28 Sep 2005 10:16:06 +0200
+
+apt (0.6.40.1ubuntu7) breezy; urgency=low
+
+ * updated the pot/po files , no code changes
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 27 Sep 2005 18:38:16 +0200
+
+apt (0.6.40.1ubuntu6) breezy; urgency=low
+
+ * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-56:
+ - make it possible for apt to handle a failed MediaChange event and
+ fall back to other sources (ubuntu #13713)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 13 Sep 2005 22:09:50 +0200
+
+apt (0.6.40.1ubuntu5) breezy; urgency=low
+
+ * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-{50,51}.
+ This adds media-change reporting to the apt status-fd (ubuntu #15213)
+ * Cherry picked michael.vogt@ubuntu.com--2005/apt--mvo--0--patch-55:
+ apt-pkg/cdrom.cc:
+ - unmount the cdrom when apt failed to locate any package files
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 12 Sep 2005 15:44:26 +0200
+
+apt (0.6.40.1ubuntu4) breezy; urgency=low
+
+ * debian/apt.cron.daily:
+ - fix a embarrassing typo
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 7 Sep 2005 10:10:37 +0200
+
+apt (0.6.40.1ubuntu3) breezy; urgency=low
+
+ * debian/apt.cron.daily:
+ - use the ctime as well when figuring what packages need to
+ be removed. This fixes the problem that packages copied with
+ "cp -a" (e.g. from the installer) have old mtimes (ubuntu #14504)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 6 Sep 2005 18:30:46 +0200
+
+apt (0.6.40.1ubuntu2) breezy; urgency=low
+
+ * improved the support for "error" and "conffile" reporting from
+ dpkg, added the format to README.progress-reporting
+ * added README.progress-reporting to the apt-doc package
+ * Do md5sum checking for file and cdrom method (closes: #319142)
+ * Change pkgPolicy::Pin from private to protected to let subclasses
+ access it too (closes: #321799)
+ * methods/connect.cc:
+ - send failure reason for EAI_AGAIN (TmpResolveFailure) to acuire-item
+ * apt-pkg/acquire-item.cc:
+ - fail early if a FailReason is TmpResolveFailure (avoids hangs during
+ the install when no network is available)
+ * merged michael.vogt@ubuntu.com--2005/apt--trust-cdrom--0
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 23 Aug 2005 19:44:55 +0200
+
+apt (0.6.40.1ubuntu1) breezy; urgency=low
+
+ * Synchronize with Debian
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 5 Aug 2005 14:20:56 +0200
apt (0.6.40.1) unstable; urgency=low
-- Michael Vogt <mvo@debian.org> Fri, 5 Aug 2005 13:24:58 +0200
+apt (0.6.40ubuntu1) breezy; urgency=low
+
+ * Synchronize with Debian
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Thu, 4 Aug 2005 15:53:22 -0700
+
apt (0.6.40) unstable; urgency=low
* Patch from Jordi Mallach to mark some additional strings for translation
-- Matt Zimmerman <mdz@debian.org> Thu, 28 Jul 2005 11:57:32 -0700
+apt (0.6.39ubuntu4) breezy; urgency=low
+
+ * Fix keyring paths in apt-key, apt.postinst (I swear I remember doing this
+ before...)
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Wed, 29 Jun 2005 08:39:17 -0700
+
+apt (0.6.39ubuntu3) breezy; urgency=low
+
+ * Fix keyring locations for Ubuntu in apt-key too.
+
+ -- Colin Watson <cjwatson@ubuntu.com> Wed, 29 Jun 2005 14:45:36 +0100
+
+apt (0.6.39ubuntu2) breezy; urgency=low
+
+ * Install ubuntu-archive.gpg rather than debian-archive.gpg as
+ /etc/apt/trusted.gpg.
+
+ -- Colin Watson <cjwatson@ubuntu.com> Wed, 29 Jun 2005 11:53:34 +0100
+
+apt (0.6.39ubuntu1) breezy; urgency=low
+
+ * Michael Vogt
+ - Change debian/bugscript to use #!/bin/bash (Closes: #313402)
+ - Fix a incorrect example in the man-page (closes: #282918)
+ - Support architecture-specific extra overrides
+ (closes: #225947). Thanks to Anthony Towns for idea and
+ the patch, thanks to Colin Watson for testing it.
+ - better report network timeouts from the methods to the acuire code,
+ only timeout once per sources.list line
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Tue, 28 Jun 2005 11:52:24 -0700
+
apt (0.6.39) unstable; urgency=low
* Welsh translation update: daf@muse.19inch.net--2005/apt--main--0--patch-6
* Update priority of apt-utils to important, to match the override file
* Install only one keyring on each branch (Closes: #316119)
- -- Matt Zimmerman <mdz@debian.org> Tue, 28 Jun 2005 11:51:09 -0700
+ -- Matt Zimmerman <mdz@debian.org> Tue, 28 Jun 2005 11:35:21 -0700
+
+apt (0.6.38ubuntu1) breezy; urgency=low
+
+ * First release from Ubuntu branch
+ * Merge with --main--0, switch back to Ubuntu keyring
+
+ -- Matt Zimmerman <mdz@ubuntu.com> Sat, 25 Jun 2005 16:52:41 -0700
apt (0.6.38) unstable; urgency=low
Source: apt
Section: admin
Priority: important
- Maintainer: Michael Vogt <mvo@ubuntu.com>
-Maintainer: APT Development Team <deity@lists.debian.org>
++Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: APT Development Team <deity@lists.debian.org>
Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org>, Michael Vogt <mvo@debian.org>
- Standards-Version: 3.6.2.2
+ Standards-Version: 3.7.2.2
Build-Depends: debhelper (>= 5.0), libdb4.4-dev, gettext (>= 0.12), libcurl3-gnutls-dev (>= 7.15.5)
Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
-XS-Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/
+XS-Vcs-Bzr: http://bazaar.launchpad.net/~ubuntu-core-dev/apt/ubuntu
Package: apt
Architecture: any
-Depends: ${shlibs:Depends}, debian-archive-keyring
+Depends: ${shlibs:Depends}
Priority: important
Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
Provides: ${libapt-pkg:provides}
-Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2
+Recommends: ubuntu-keyring
+Suggests: aptitude | synaptic | gnome-apt | wajig, dpkg-dev, apt-doc, bzip2, gnupg
Section: admin
Description: Advanced front-end for dpkg
This is Debian's next generation front-end for the dpkg package manager.
cp debian/bugscript debian/$@/usr/share/bug/apt/script
- cp share/debian-archive.gpg debian/$@/usr/share/$@
+ cp share/ubuntu-archive.gpg debian/$@/usr/share/$@
- cp debian/apt.conf.ubuntu debian/$@/etc/apt/apt.conf.d/01ubuntu
+ cp debian/apt.conf.autoremove debian/$@/etc/apt/apt.conf.d/01autoremove
# head -n 500 ChangeLog > debian/ChangeLog
# make rosetta happy and remove pot files in po/ (but leave stuff
rm -f build/po/*.pot
rm -f po/*.pot
+ # move the mirror failure script in place
+ mv debian/$@/usr/bin/apt-report-mirror-failure \
+ debian/$@/usr/lib/apt/apt-report-mirror-failure \
+
dh_installexamples -p$@ $(BLD)/docs/examples/*
dh_installman -p$@
dh_installcron -p$@
// consider Recommends, Suggests as important dependencies that should
// be installed by default
- APT::Install-Recommends "false";
- APT::Install-Suggests "false";
+ Install-Recommends "false";
+ Install-Suggests "false";
+ // install recommends automatically for packages in this section
+ Install-Recommends-Section "metapackages";
+
// consider dependencies of packages in this section manual
Never-MarkAuto-Section "metapackages";
Queue-Mode "host"; // host|access
Retries "0";
Source-Symlinks "true";
+
+ PDiffs "true"; // try to get the IndexFile diffs
// HTTP method configuration
http
{
Options {"--ignore-time-conflict";} // not very usefull on a normal system
};
+
+ mirror
+ {
+ RefreshInterval "360"; // refresh interval in minutes
+ MaxAge "90"; // max age for a mirror file in days before
+ // it gets deleted
+ // mirror failure reporting script
+ ProblemReporting "/usr/lib/apt/apt-report-mirror-failure";
+ // mirror failure reporting url
+ ReportFailures "http://example.com/mirror-failure";
+ };
+
+ // translations can be set here to "none", "environment" or "$locale"
+ Translation "none";
};
// Directory layout
userstatus "status.user";
status "/var/lib/dpkg/status";
cdroms "cdroms.list";
+ mirrors "mirrors/";
};
// Location of the cache dir
Acquire::Http "false"; // Show http command traffic
Acquire::Https "false"; // Show https debug
Acquire::gpgv "false"; // Show the gpgv traffic
+ Acquire::Mirror "false"; // Show debugging of the mirror method
aptcdrom "false"; // Show found package files
IdentCdrom "false";
-
}
/* Whatever you do, do not use this configuration file!! Take out ONLY
#define MAXLEN 360
-#include <iostream>
+
using std::cout;
using std::endl;
bool ServerDie(ServerState *Srv);
int DealWithHeaders(FetchResult &Res,ServerState *Srv);
- virtual bool Fetch(FetchItem *);
virtual bool Configuration(string Message);
// In the event of a fatal signal this file will be closed and timestamped.
static int FailFd;
static time_t FailTime;
static void SigTerm(int);
+
+ protected:
+ virtual bool Fetch(FetchItem *);
public:
friend class ServerState;
};
};
-
#endif
BIN := $(BIN)/methods
# FIXME..
- LIB_APT_PKG_MAJOR = 3.53
+ LIB_APT_PKG_MAJOR = 4.4
APT_DOMAIN := libapt-pkg$(LIB_APT_PKG_MAJOR)
# The file method
PROGRAM=http
SLIBS = -lapt-pkg $(SOCKETLIBS)
LIB_MAKES = apt-pkg/makefile
-SOURCE = http.cc rfc2553emu.cc connect.cc
+SOURCE = http.cc http_main.cc rfc2553emu.cc connect.cc
+include $(PROGRAM_H)
+
+# The https method
+PROGRAM=https
+SLIBS = -lapt-pkg -lcurl
+LIB_MAKES = apt-pkg/makefile
+SOURCE = https.cc
include $(PROGRAM_H)
+ # The https method
+ PROGRAM=https
+ SLIBS = -lapt-pkg -lcurl
+ LIB_MAKES = apt-pkg/makefile
+ SOURCE = https.cc
+ include $(PROGRAM_H)
+
# The ftp method
PROGRAM=ftp
SLIBS = -lapt-pkg $(SOCKETLIBS)
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
SOURCE = rsh.cc
include $(PROGRAM_H)
+# The mirror method
+PROGRAM=mirror
+SLIBS = -lapt-pkg $(SOCKETLIBS)
+LIB_MAKES = apt-pkg/makefile
+SOURCE = mirror.cc http.cc rfc2553emu.cc connect.cc
+include $(PROGRAM_H)
+
# SSH and vzip2 method symlink
binary: $(BIN)/ssh $(BIN)/bzip2
veryclean: clean-$(BIN)/ssh clean-$(BIN)/bzip2
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
- "POT-Creation-Date: 2006-10-02 15:46+0200\n"
-"POT-Creation-Date: 2007-06-08 23:11+0200\n"
++"POT-Creation-Date: 2007-04-27 15:16+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:143
+#: cmdline/apt-cache.cc:135
#, c-format
msgid "Package %s version %s has an unmet dep:\n"
msgstr ""
-#: cmdline/apt-cache.cc:183 cmdline/apt-cache.cc:552 cmdline/apt-cache.cc:640
-#: cmdline/apt-cache.cc:796 cmdline/apt-cache.cc:1018
-#: cmdline/apt-cache.cc:1419 cmdline/apt-cache.cc:1570
+#: 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
#, c-format
msgid "Unable to locate package %s"
msgstr ""
-#: cmdline/apt-cache.cc:247
+#: cmdline/apt-cache.cc:232
msgid "Total package names : "
msgstr ""
-#: cmdline/apt-cache.cc:287
+#: cmdline/apt-cache.cc:272
msgid " Normal packages: "
msgstr ""
-#: cmdline/apt-cache.cc:288
+#: cmdline/apt-cache.cc:273
msgid " Pure virtual packages: "
msgstr ""
-#: cmdline/apt-cache.cc:289
+#: cmdline/apt-cache.cc:274
msgid " Single virtual packages: "
msgstr ""
-#: cmdline/apt-cache.cc:290
+#: cmdline/apt-cache.cc:275
msgid " Mixed virtual packages: "
msgstr ""
-#: cmdline/apt-cache.cc:291
+#: cmdline/apt-cache.cc:276
msgid " Missing: "
msgstr ""
-#: cmdline/apt-cache.cc:293
+#: cmdline/apt-cache.cc:278
msgid "Total distinct versions: "
msgstr ""
-#: cmdline/apt-cache.cc:295
-msgid "Total Distinct Descriptions: "
-msgstr ""
-
-#: cmdline/apt-cache.cc:297
+#: cmdline/apt-cache.cc:280
msgid "Total dependencies: "
msgstr ""
-#: cmdline/apt-cache.cc:300
+#: cmdline/apt-cache.cc:283
msgid "Total ver/file relations: "
msgstr ""
-#: cmdline/apt-cache.cc:302
-msgid "Total Desc/File relations: "
-msgstr ""
-
-#: cmdline/apt-cache.cc:304
+#: cmdline/apt-cache.cc:285
msgid "Total Provides mappings: "
msgstr ""
-#: cmdline/apt-cache.cc:316
+#: cmdline/apt-cache.cc:297
msgid "Total globbed strings: "
msgstr ""
-#: cmdline/apt-cache.cc:330
+#: cmdline/apt-cache.cc:311
msgid "Total dependency version space: "
msgstr ""
-#: cmdline/apt-cache.cc:335
+#: cmdline/apt-cache.cc:316
msgid "Total slack space: "
msgstr ""
-#: cmdline/apt-cache.cc:343
+#: cmdline/apt-cache.cc:324
msgid "Total space accounted for: "
msgstr ""
-#: cmdline/apt-cache.cc:471 cmdline/apt-cache.cc:1218
+#: cmdline/apt-cache.cc:446 cmdline/apt-cache.cc:1189
#, c-format
msgid "Package file %s is out of sync."
msgstr ""
-#: cmdline/apt-cache.cc:1293
+#: cmdline/apt-cache.cc:1231
msgid "You must give exactly one pattern"
msgstr ""
-#: cmdline/apt-cache.cc:1447
+#: cmdline/apt-cache.cc:1385
msgid "No packages found"
msgstr ""
-#: cmdline/apt-cache.cc:1524
+#: cmdline/apt-cache.cc:1462
msgid "Package files:"
msgstr ""
-#: cmdline/apt-cache.cc:1531 cmdline/apt-cache.cc:1617
+#: cmdline/apt-cache.cc:1469 cmdline/apt-cache.cc:1555
msgid "Cache is out of sync, can't x-ref a package file"
msgstr ""
-#: cmdline/apt-cache.cc:1532
+#: cmdline/apt-cache.cc:1470
#, c-format
msgid "%4i %s\n"
msgstr ""
#. Show any packages have explicit pins
-#: cmdline/apt-cache.cc:1544
+#: cmdline/apt-cache.cc:1482
msgid "Pinned packages:"
msgstr ""
-#: cmdline/apt-cache.cc:1556 cmdline/apt-cache.cc:1597
+#: cmdline/apt-cache.cc:1494 cmdline/apt-cache.cc:1535
msgid "(not found)"
msgstr ""
#. Installed version
-#: cmdline/apt-cache.cc:1577
+#: cmdline/apt-cache.cc:1515
msgid " Installed: "
msgstr ""
-#: cmdline/apt-cache.cc:1579 cmdline/apt-cache.cc:1587
+#: cmdline/apt-cache.cc:1517 cmdline/apt-cache.cc:1525
msgid "(none)"
msgstr ""
#. Candidate Version
-#: cmdline/apt-cache.cc:1584
+#: cmdline/apt-cache.cc:1522
msgid " Candidate: "
msgstr ""
-#: cmdline/apt-cache.cc:1594
+#: cmdline/apt-cache.cc:1532
msgid " Package pin: "
msgstr ""
#. Show the priority tables
-#: cmdline/apt-cache.cc:1603
+#: cmdline/apt-cache.cc:1541
msgid " Version table:"
msgstr ""
-#: cmdline/apt-cache.cc:1618
+#: cmdline/apt-cache.cc:1556
#, c-format
msgid " %4i %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1714 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
-#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:551
-#: cmdline/apt-get.cc:2573 cmdline/apt-sortpkgs.cc:144
+#: cmdline/apt-cache.cc:1652 cmdline/apt-cdrom.cc:138 cmdline/apt-config.cc:70
+#: cmdline/apt-extracttemplates.cc:225 ftparchive/apt-ftparchive.cc:550
+#: cmdline/apt-get.cc:2387 cmdline/apt-sortpkgs.cc:144
#, c-format
msgid "%s %s for %s %s compiled on %s %s\n"
msgstr ""
-#: cmdline/apt-cache.cc:1721
+#: cmdline/apt-cache.cc:1659
msgid ""
"Usage: apt-cache [options] command\n"
" apt-cache [options] add file1 [file2 ...]\n"
" -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:819
++#: apt-pkg/pkgcachegen.cc:815
#, c-format
msgid "Unable to write to %s"
msgstr ""
msgid "Cannot get debconf version. Is debconf installed?"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:168 ftparchive/apt-ftparchive.cc:342
+#: ftparchive/apt-ftparchive.cc:167 ftparchive/apt-ftparchive.cc:341
msgid "Package extension list is too long"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:170 ftparchive/apt-ftparchive.cc:184
-#: ftparchive/apt-ftparchive.cc:207 ftparchive/apt-ftparchive.cc:257
-#: ftparchive/apt-ftparchive.cc:271 ftparchive/apt-ftparchive.cc:293
+#: ftparchive/apt-ftparchive.cc:169 ftparchive/apt-ftparchive.cc:183
+#: ftparchive/apt-ftparchive.cc:206 ftparchive/apt-ftparchive.cc:256
+#: ftparchive/apt-ftparchive.cc:270 ftparchive/apt-ftparchive.cc:292
#, c-format
msgid "Error processing directory %s"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:255
+#: ftparchive/apt-ftparchive.cc:254
msgid "Source extension list is too long"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:372
+#: ftparchive/apt-ftparchive.cc:371
msgid "Error writing header to contents file"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:402
+#: ftparchive/apt-ftparchive.cc:401
#, c-format
msgid "Error processing contents %s"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:557
+#: ftparchive/apt-ftparchive.cc:556
msgid ""
"Usage: apt-ftparchive [options] command\n"
"Commands: packages binarypath [overridefile [pathprefix]]\n"
" -o=? Set an arbitrary configuration option"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:763
+#: ftparchive/apt-ftparchive.cc:762
msgid "No selections matched"
msgstr ""
-#: ftparchive/apt-ftparchive.cc:836
+#: ftparchive/apt-ftparchive.cc:835
#, c-format
msgid "Some files are missing in the package file group `%s'"
msgstr ""
msgid "Failed to rename %s to %s"
msgstr ""
-#: cmdline/apt-get.cc:121
+#: cmdline/apt-get.cc:120
msgid "Y"
msgstr ""
-#: cmdline/apt-get.cc:143 cmdline/apt-get.cc:1659
+#: cmdline/apt-get.cc:142 cmdline/apt-get.cc:1506
#, c-format
msgid "Regex compilation error - %s"
msgstr ""
-#: cmdline/apt-get.cc:238
+#: cmdline/apt-get.cc:237
msgid "The following packages have unmet dependencies:"
msgstr ""
-#: cmdline/apt-get.cc:328
+#: cmdline/apt-get.cc:327
#, c-format
msgid "but %s is installed"
msgstr ""
-#: cmdline/apt-get.cc:330
+#: cmdline/apt-get.cc:329
#, c-format
msgid "but %s is to be installed"
msgstr ""
-#: cmdline/apt-get.cc:337
+#: cmdline/apt-get.cc:336
msgid "but it is not installable"
msgstr ""
-#: cmdline/apt-get.cc:339
+#: cmdline/apt-get.cc:338
msgid "but it is a virtual package"
msgstr ""
-#: cmdline/apt-get.cc:342
+#: cmdline/apt-get.cc:341
msgid "but it is not installed"
msgstr ""
-#: cmdline/apt-get.cc:342
+#: cmdline/apt-get.cc:341
msgid "but it is not going to be installed"
msgstr ""
-#: cmdline/apt-get.cc:347
+#: cmdline/apt-get.cc:346
msgid " or"
msgstr ""
-#: cmdline/apt-get.cc:376
+#: cmdline/apt-get.cc:375
msgid "The following NEW packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:402
+#: cmdline/apt-get.cc:401
msgid "The following packages will be REMOVED:"
msgstr ""
-#: cmdline/apt-get.cc:424
+#: cmdline/apt-get.cc:423
msgid "The following packages have been kept back:"
msgstr ""
-#: cmdline/apt-get.cc:445
+#: cmdline/apt-get.cc:444
msgid "The following packages will be upgraded:"
msgstr ""
-#: cmdline/apt-get.cc:466
+#: cmdline/apt-get.cc:465
msgid "The following packages will be DOWNGRADED:"
msgstr ""
-#: cmdline/apt-get.cc:486
+#: cmdline/apt-get.cc:485
msgid "The following held packages will be changed:"
msgstr ""
-#: cmdline/apt-get.cc:539
+#: cmdline/apt-get.cc:538
#, c-format
msgid "%s (due to %s) "
msgstr ""
-#: cmdline/apt-get.cc:547
+#: cmdline/apt-get.cc:546
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:578
+#: cmdline/apt-get.cc:577
#, c-format
msgid "%lu upgraded, %lu newly installed, "
msgstr ""
-#: cmdline/apt-get.cc:582
+#: cmdline/apt-get.cc:581
#, c-format
msgid "%lu reinstalled, "
msgstr ""
-#: cmdline/apt-get.cc:584
+#: cmdline/apt-get.cc:583
#, c-format
msgid "%lu downgraded, "
msgstr ""
-#: cmdline/apt-get.cc:586
+#: cmdline/apt-get.cc:585
#, c-format
msgid "%lu to remove and %lu not upgraded.\n"
msgstr ""
-#: cmdline/apt-get.cc:590
+#: cmdline/apt-get.cc:589
#, c-format
msgid "%lu not fully installed or removed.\n"
msgstr ""
-#: cmdline/apt-get.cc:664
+#: cmdline/apt-get.cc:649
msgid "Correcting dependencies..."
msgstr ""
-#: cmdline/apt-get.cc:667
+#: cmdline/apt-get.cc:652
msgid " failed."
msgstr ""
-#: cmdline/apt-get.cc:670
+#: cmdline/apt-get.cc:655
msgid "Unable to correct dependencies"
msgstr ""
-#: cmdline/apt-get.cc:673
+#: cmdline/apt-get.cc:658
msgid "Unable to minimize the upgrade set"
msgstr ""
-#: cmdline/apt-get.cc:675
+#: cmdline/apt-get.cc:660
msgid " Done"
msgstr ""
-#: cmdline/apt-get.cc:679
+#: cmdline/apt-get.cc:664
msgid "You might want to run `apt-get -f install' to correct these."
msgstr ""
-#: cmdline/apt-get.cc:682
+#: cmdline/apt-get.cc:667
msgid "Unmet dependencies. Try using -f."
msgstr ""
-#: cmdline/apt-get.cc:704
+#: cmdline/apt-get.cc:689
msgid "WARNING: The following packages cannot be authenticated!"
msgstr ""
-#: cmdline/apt-get.cc:708
+#: cmdline/apt-get.cc:693
msgid "Authentication warning overridden.\n"
msgstr ""
-#: cmdline/apt-get.cc:715
+#: cmdline/apt-get.cc:700
msgid "Install these packages without verification [y/N]? "
msgstr ""
-#: cmdline/apt-get.cc:717
+#: cmdline/apt-get.cc:702
msgid "Some packages could not be authenticated"
msgstr ""
-#: cmdline/apt-get.cc:726 cmdline/apt-get.cc:873
+#: cmdline/apt-get.cc:711 cmdline/apt-get.cc:858
msgid "There are problems and -y was used without --force-yes"
msgstr ""
-#: cmdline/apt-get.cc:770
+#: cmdline/apt-get.cc:755
msgid "Internal error, InstallPackages was called with broken packages!"
msgstr ""
-#: cmdline/apt-get.cc:779
+#: cmdline/apt-get.cc:764
msgid "Packages need to be removed but remove is disabled."
msgstr ""
-#: cmdline/apt-get.cc:790
+#: cmdline/apt-get.cc:775
msgid "Internal error, Ordering didn't finish"
msgstr ""
-#: cmdline/apt-get.cc:806 cmdline/apt-get.cc:1999 cmdline/apt-get.cc:2032
+#: cmdline/apt-get.cc:791 cmdline/apt-get.cc:1818 cmdline/apt-get.cc:1851
msgid "Unable to lock the download directory"
msgstr ""
-#: cmdline/apt-get.cc:816 cmdline/apt-get.cc:2080 cmdline/apt-get.cc:2321
-#: apt-pkg/cachefile.cc:67
+#: cmdline/apt-get.cc:801 cmdline/apt-get.cc:1899 cmdline/apt-get.cc:2135
- #: apt-pkg/cachefile.cc:67
++#: apt-pkg/cachefile.cc:67 apt-pkg/cachefile.cc:63
msgid "The list of sources could not be read."
msgstr ""
-#: cmdline/apt-get.cc:831
+#: cmdline/apt-get.cc:816
msgid "How odd.. The sizes didn't match, email apt@packages.debian.org"
msgstr ""
-#: cmdline/apt-get.cc:836
+#: cmdline/apt-get.cc:821
#, c-format
msgid "Need to get %sB/%sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:839
+#: cmdline/apt-get.cc:824
#, c-format
msgid "Need to get %sB of archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:844
+#: cmdline/apt-get.cc:829
#, c-format
msgid "After unpacking %sB of additional disk space will be used.\n"
msgstr ""
-#: cmdline/apt-get.cc:847
+#: cmdline/apt-get.cc:832
#, c-format
msgid "After unpacking %sB disk space will be freed.\n"
msgstr ""
-#: cmdline/apt-get.cc:861 cmdline/apt-get.cc:2175
+#: cmdline/apt-get.cc:846 cmdline/apt-get.cc:1989
#, c-format
msgid "Couldn't determine free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:864
+#: cmdline/apt-get.cc:849
#, c-format
msgid "You don't have enough free space in %s."
msgstr ""
-#: cmdline/apt-get.cc:879 cmdline/apt-get.cc:899
+#: cmdline/apt-get.cc:864 cmdline/apt-get.cc:884
msgid "Trivial Only specified but this is not a trivial operation."
msgstr ""
-#: cmdline/apt-get.cc:881
+#: cmdline/apt-get.cc:866
msgid "Yes, do as I say!"
msgstr ""
-#: cmdline/apt-get.cc:883
+#: cmdline/apt-get.cc:868
#, c-format
msgid ""
"You are about to do something potentially harmful.\n"
" ?] "
msgstr ""
-#: cmdline/apt-get.cc:889 cmdline/apt-get.cc:908
+#: cmdline/apt-get.cc:874 cmdline/apt-get.cc:893
msgid "Abort."
msgstr ""
-#: cmdline/apt-get.cc:904
+#: cmdline/apt-get.cc:889
msgid "Do you want to continue [Y/n]? "
msgstr ""
-#: cmdline/apt-get.cc:976 cmdline/apt-get.cc:1383 cmdline/apt-get.cc:2218
+#: cmdline/apt-get.cc:961 cmdline/apt-get.cc:1365 cmdline/apt-get.cc:2032
#, c-format
msgid "Failed to fetch %s %s\n"
msgstr ""
-#: cmdline/apt-get.cc:994
+#: cmdline/apt-get.cc:979
msgid "Some files failed to download"
msgstr ""
-#: cmdline/apt-get.cc:995 cmdline/apt-get.cc:2227
+#: cmdline/apt-get.cc:980 cmdline/apt-get.cc:2041
msgid "Download complete and in download only mode"
msgstr ""
-#: cmdline/apt-get.cc:1001
+#: cmdline/apt-get.cc:986
msgid ""
"Unable to fetch some archives, maybe run apt-get update or try with --fix-"
"missing?"
msgstr ""
-#: cmdline/apt-get.cc:1005
+#: cmdline/apt-get.cc:990
msgid "--fix-missing and media swapping is not currently supported"
msgstr ""
-#: cmdline/apt-get.cc:1010
+#: cmdline/apt-get.cc:995
msgid "Unable to correct missing packages."
msgstr ""
-#: cmdline/apt-get.cc:1011
+#: cmdline/apt-get.cc:996
msgid "Aborting install."
msgstr ""
-#: cmdline/apt-get.cc:1045
+#: cmdline/apt-get.cc:1030
#, c-format
msgid "Note, selecting %s instead of %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1055
+#: cmdline/apt-get.cc:1040
#, c-format
msgid "Skipping %s, it is already installed and upgrade is not set.\n"
msgstr ""
-#: cmdline/apt-get.cc:1073
+#: cmdline/apt-get.cc:1058
#, c-format
msgid "Package %s is not installed, so not removed\n"
msgstr ""
-#: cmdline/apt-get.cc:1084
+#: cmdline/apt-get.cc:1069
#, c-format
msgid "Package %s is a virtual package provided by:\n"
msgstr ""
-#: cmdline/apt-get.cc:1096
+#: cmdline/apt-get.cc:1081
msgid " [Installed]"
msgstr ""
-#: cmdline/apt-get.cc:1101
+#: cmdline/apt-get.cc:1086
msgid "You should explicitly select one to install."
msgstr ""
-#: cmdline/apt-get.cc:1106
+#: cmdline/apt-get.cc:1091
#, 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:1125
+#: cmdline/apt-get.cc:1110
msgid "However the following packages replace it:"
msgstr ""
-#: cmdline/apt-get.cc:1128
+#: cmdline/apt-get.cc:1113
#, c-format
msgid "Package %s has no installation candidate"
msgstr ""
-#: cmdline/apt-get.cc:1148
+#: cmdline/apt-get.cc:1133
#, c-format
msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n"
msgstr ""
-#: cmdline/apt-get.cc:1156
+#: cmdline/apt-get.cc:1141
#, c-format
msgid "%s is already the newest version.\n"
msgstr ""
-#: cmdline/apt-get.cc:1185
+#: cmdline/apt-get.cc:1168
#, c-format
msgid "Release '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1187
+#: cmdline/apt-get.cc:1170
#, c-format
msgid "Version '%s' for '%s' was not found"
msgstr ""
-#: cmdline/apt-get.cc:1193
+#: cmdline/apt-get.cc:1176
#, c-format
msgid "Selected version %s (%s) for %s\n"
msgstr ""
-#: cmdline/apt-get.cc:1330
+#: cmdline/apt-get.cc:1313
msgid "The update command takes no arguments"
msgstr ""
-#: cmdline/apt-get.cc:1343
+#: cmdline/apt-get.cc:1326
msgid "Unable to lock the list directory"
msgstr ""
-#: cmdline/apt-get.cc:1410 cmdline/apt-get.cc:1412
+#: cmdline/apt-get.cc:1384
msgid ""
"Some index files failed to download, they have been ignored, or old ones "
"used instead."
msgstr ""
-#: cmdline/apt-get.cc:1433
-msgid "We are not supposed to delete stuff, can't start AutoRemover"
-msgstr ""
-
-#: cmdline/apt-get.cc:1465
-msgid ""
-"The following packages were automatically installed and are no longer "
-"required:"
-msgstr ""
-
-#: cmdline/apt-get.cc:1467
-msgid "Use 'apt-get autoremove' to remove them."
-msgstr ""
-
-#: cmdline/apt-get.cc:1472
-msgid ""
-"Hmm, seems like the AutoRemover destroyed something which really\n"
-"shouldn't happen. Please file a bug report against apt."
-msgstr ""
-
-#: cmdline/apt-get.cc:1475 cmdline/apt-get.cc:1740
-msgid "The following information may help to resolve the situation:"
-msgstr ""
-
-#: cmdline/apt-get.cc:1479
-msgid "Internal Error, AutoRemover broke stuff"
-msgstr ""
-
-#: cmdline/apt-get.cc:1498
+#: cmdline/apt-get.cc:1403
msgid "Internal error, AllUpgrade broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:1543
-#, c-format
-msgid "Couldn't find task %s"
-msgstr ""
-
-#: cmdline/apt-get.cc:1646 cmdline/apt-get.cc:1682
+#: cmdline/apt-get.cc:1493 cmdline/apt-get.cc:1529
#, c-format
msgid "Couldn't find package %s"
msgstr ""
-#: cmdline/apt-get.cc:1669
+#: cmdline/apt-get.cc:1516
#, c-format
msgid "Note, selecting %s for regex '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:1699
-#, c-format
-msgid "%s set to manual installed.\n"
-msgstr ""
-
-#: cmdline/apt-get.cc:1712
+#: cmdline/apt-get.cc:1546
msgid "You might want to run `apt-get -f install' to correct these:"
msgstr ""
-#: cmdline/apt-get.cc:1715
+#: cmdline/apt-get.cc:1549
msgid ""
"Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a "
"solution)."
msgstr ""
-#: cmdline/apt-get.cc:1727
+#: cmdline/apt-get.cc:1561
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:1735
+#: cmdline/apt-get.cc:1569
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:1743
+#: cmdline/apt-get.cc:1574
+msgid "The following information may help to resolve the situation:"
+msgstr ""
+
+#: cmdline/apt-get.cc:1577
msgid "Broken packages"
msgstr ""
-#: cmdline/apt-get.cc:1774
+#: cmdline/apt-get.cc:1603
msgid "The following extra packages will be installed:"
msgstr ""
-#: cmdline/apt-get.cc:1863
+#: cmdline/apt-get.cc:1692
msgid "Suggested packages:"
msgstr ""
-#: cmdline/apt-get.cc:1864
+#: cmdline/apt-get.cc:1693
msgid "Recommended packages:"
msgstr ""
-#: cmdline/apt-get.cc:1892
+#: cmdline/apt-get.cc:1713
msgid "Calculating upgrade... "
msgstr ""
- #: cmdline/apt-get.cc:1716 methods/ftp.cc:702 methods/connect.cc:101
-#: cmdline/apt-get.cc:1895 methods/ftp.cc:702 methods/connect.cc:101
++#: cmdline/apt-get.cc:1716 methods/ftp.cc:702 methods/connect.cc:100
msgid "Failed"
msgstr ""
-#: cmdline/apt-get.cc:1900
+#: cmdline/apt-get.cc:1721
msgid "Done"
msgstr ""
-#: cmdline/apt-get.cc:1967 cmdline/apt-get.cc:1975
+#: cmdline/apt-get.cc:1786 cmdline/apt-get.cc:1794
msgid "Internal error, problem resolver broke stuff"
msgstr ""
-#: cmdline/apt-get.cc:2075
+#: cmdline/apt-get.cc:1894
msgid "Must specify at least one package to fetch source for"
msgstr ""
-#: cmdline/apt-get.cc:2105 cmdline/apt-get.cc:2339
+#: cmdline/apt-get.cc:1924 cmdline/apt-get.cc:2153
#, c-format
msgid "Unable to find a source package for %s"
msgstr ""
-#: cmdline/apt-get.cc:2154
+#: cmdline/apt-get.cc:1968
#, c-format
msgid "Skipping already downloaded file '%s'\n"
msgstr ""
-#: cmdline/apt-get.cc:2178
+#: cmdline/apt-get.cc:1992
#, c-format
msgid "You don't have enough free space in %s"
msgstr ""
-#: cmdline/apt-get.cc:2183
+#: cmdline/apt-get.cc:1997
#, c-format
msgid "Need to get %sB/%sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:2186
+#: cmdline/apt-get.cc:2000
#, c-format
msgid "Need to get %sB of source archives.\n"
msgstr ""
-#: cmdline/apt-get.cc:2192
+#: cmdline/apt-get.cc:2006
#, c-format
msgid "Fetch source %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2223
+#: cmdline/apt-get.cc:2037
msgid "Failed to fetch some archives."
msgstr ""
-#: cmdline/apt-get.cc:2251
+#: cmdline/apt-get.cc:2065
#, c-format
msgid "Skipping unpack of already unpacked source in %s\n"
msgstr ""
-#: cmdline/apt-get.cc:2263
+#: cmdline/apt-get.cc:2077
#, c-format
msgid "Unpack command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2264
+#: cmdline/apt-get.cc:2078
#, c-format
msgid "Check if the 'dpkg-dev' package is installed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2281
+#: cmdline/apt-get.cc:2095
#, c-format
msgid "Build command '%s' failed.\n"
msgstr ""
-#: cmdline/apt-get.cc:2300
+#: cmdline/apt-get.cc:2114
msgid "Child process failed"
msgstr ""
-#: cmdline/apt-get.cc:2316
+#: cmdline/apt-get.cc:2130
msgid "Must specify at least one package to check builddeps for"
msgstr ""
-#: cmdline/apt-get.cc:2344
+#: cmdline/apt-get.cc:2158
#, c-format
msgid "Unable to get build-dependency information for %s"
msgstr ""
-#: cmdline/apt-get.cc:2364
+#: cmdline/apt-get.cc:2178
#, c-format
msgid "%s has no build depends.\n"
msgstr ""
-#: cmdline/apt-get.cc:2416
+#: cmdline/apt-get.cc:2230
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because the package %s cannot be "
"found"
msgstr ""
-#: cmdline/apt-get.cc:2468
+#: cmdline/apt-get.cc:2282
#, c-format
msgid ""
"%s dependency for %s cannot be satisfied because no available versions of "
"package %s can satisfy version requirements"
msgstr ""
-#: cmdline/apt-get.cc:2503
+#: cmdline/apt-get.cc:2317
#, c-format
msgid "Failed to satisfy %s dependency for %s: Installed package %s is too new"
msgstr ""
-#: cmdline/apt-get.cc:2528
+#: cmdline/apt-get.cc:2342
#, c-format
msgid "Failed to satisfy %s dependency for %s: %s"
msgstr ""
-#: cmdline/apt-get.cc:2542
+#: cmdline/apt-get.cc:2356
#, c-format
msgid "Build-dependencies for %s could not be satisfied."
msgstr ""
-#: cmdline/apt-get.cc:2546
+#: cmdline/apt-get.cc:2360
msgid "Failed to process build dependencies"
msgstr ""
-#: cmdline/apt-get.cc:2578
+#: cmdline/apt-get.cc:2392
msgid "Supported modules:"
msgstr ""
-#: cmdline/apt-get.cc:2619
+#: cmdline/apt-get.cc:2433
msgid ""
"Usage: apt-get [options] command\n"
" apt-get [options] install|remove pkg1 [pkg2 ...]\n"
" upgrade - Perform an upgrade\n"
" install - Install new packages (pkg is libc6 not libc6.deb)\n"
" remove - Remove packages\n"
-" purge - Remove and purge packages\n"
" source - Download source archives\n"
" build-dep - Configure build-dependencies for source packages\n"
" dist-upgrade - Distribution upgrade, see apt-get(8)\n"
#: 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/acquire.cc:421 apt-pkg/clean.cc:38 methods/mirror.cc:82
++#: apt-pkg/contrib/configuration.cc:747 apt-pkg/contrib/cdromutl.cc:150
++#: apt-pkg/sourcelist.cc:320 apt-pkg/acquire.cc:418 apt-pkg/clean.cc:34
#, 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:752
+ #: apt-pkg/pkgcachegen.cc:821 apt-pkg/pkgcachegen.cc:826
-#: apt-pkg/pkgcachegen.cc:949
++#: apt-pkg/pkgcachegen.cc:949 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:281 methods/gzip.cc:141
- #: methods/gzip.cc:150
+ #: methods/gzip.cc:150 methods/rred.cc:234 methods/rred.cc:243
msgid "Failed to stat"
msgstr ""
#: methods/copy.cc:79 methods/gpgv.cc:278 methods/gzip.cc:147
+ #: methods/rred.cc:240
msgid "Failed to set modification time"
msgstr ""
msgid "Server closed the connection"
msgstr ""
-#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:472 methods/rsh.cc:190
+#: methods/ftp.cc:338 apt-pkg/contrib/fileutl.cc:471 methods/rsh.cc:190
++#: apt-pkg/contrib/fileutl.cc:469
msgid "Read error"
msgstr ""
msgid "Protocol corruption"
msgstr ""
-#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:511 methods/rsh.cc:232
+#: methods/ftp.cc:446 apt-pkg/contrib/fileutl.cc:510 methods/rsh.cc:232
++#: apt-pkg/contrib/fileutl.cc:508
msgid "Write error"
msgstr ""
msgid "Unable to accept connection"
msgstr ""
- #: methods/ftp.cc:864 methods/http.cc:959 methods/rsh.cc:303
-#: methods/ftp.cc:864 methods/http.cc:958 methods/rsh.cc:303
++#: methods/ftp.cc:864 methods/http.cc:961 methods/rsh.cc:303
msgid "Problem hashing file"
msgstr ""
msgid "Unable to invoke "
msgstr ""
--#: methods/connect.cc:64
++#: methods/connect.cc:65
#, c-format
msgid "Connecting to %s (%s)"
msgstr ""
--#: methods/connect.cc:71
++#: methods/connect.cc:72
#, c-format
msgid "[IP: %s %s]"
msgstr ""
--#: methods/connect.cc:80
++#: methods/connect.cc:79
#, c-format
msgid "Could not create a socket for %s (f=%u t=%u p=%u)"
msgstr ""
--#: methods/connect.cc:86
++#: methods/connect.cc:85
#, c-format
msgid "Cannot initiate the connection to %s:%s (%s)."
msgstr ""
--#: methods/connect.cc:93
++#: methods/connect.cc:92
#, c-format
msgid "Could not connect to %s:%s (%s), connection timed out"
msgstr ""
--#: methods/connect.cc:108
++#: methods/connect.cc:107
#, c-format
msgid "Could not connect to %s:%s (%s)."
msgstr ""
#. We say this mainly because the pause here is for the
#. ssh connection that is still going
--#: methods/connect.cc:136 methods/rsh.cc:425
++#: methods/connect.cc:135 methods/rsh.cc:425
#, c-format
msgid "Connecting to %s"
msgstr ""
msgid "Read error from %s process"
msgstr ""
- #: methods/http.cc:377
+ #: methods/http.cc:376
msgid "Waiting for headers"
msgstr ""
- #: methods/http.cc:523
+ #: methods/http.cc:522
#, c-format
msgid "Got a single header line over %u chars"
msgstr ""
- #: methods/http.cc:531
+ #: methods/http.cc:530
msgid "Bad header line"
msgstr ""
- #: methods/http.cc:550 methods/http.cc:557
+ #: methods/http.cc:549 methods/http.cc:556
msgid "The HTTP server sent an invalid reply header"
msgstr ""
- #: methods/http.cc:586
+ #: methods/http.cc:585
msgid "The HTTP server sent an invalid Content-Length header"
msgstr ""
- #: methods/http.cc:601
+ #: methods/http.cc:600
msgid "The HTTP server sent an invalid Content-Range header"
msgstr ""
- #: methods/http.cc:603
+ #: methods/http.cc:602
msgid "This HTTP server has broken range support"
msgstr ""
- #: methods/http.cc:627
+ #: methods/http.cc:626
msgid "Unknown date format"
msgstr ""
- #: methods/http.cc:774
+ #: methods/http.cc:773
msgid "Select failed"
msgstr ""
- #: methods/http.cc:779
+ #: methods/http.cc:778
msgid "Connection timed out"
msgstr ""
- #: methods/http.cc:802
+ #: methods/http.cc:801
msgid "Error writing to output file"
msgstr ""
- #: methods/http.cc:833
+ #: methods/http.cc:832
msgid "Error writing to file"
msgstr ""
- #: methods/http.cc:861
+ #: methods/http.cc:860
msgid "Error writing to the file"
msgstr ""
- #: methods/http.cc:875
+ #: methods/http.cc:874
msgid "Error reading from server. Remote end closed connection"
msgstr ""
- #: methods/http.cc:877
+ #: methods/http.cc:876
msgid "Error reading from server"
msgstr ""
- #: methods/http.cc:1108
-#: methods/http.cc:1107
++#: methods/http.cc:1110
msgid "Bad header data"
msgstr ""
- #: methods/http.cc:1125
-#: methods/http.cc:1124
++#: methods/http.cc:1127
msgid "Connection failed"
msgstr ""
- #: methods/http.cc:1216
-#: methods/http.cc:1215
++#: methods/http.cc:1218
msgid "Internal error"
msgstr ""
--#: apt-pkg/contrib/mmap.cc:82
++#: apt-pkg/contrib/mmap.cc:82 apt-pkg/contrib/mmap.cc:78
msgid "Can't mmap an empty file"
msgstr ""
--#: apt-pkg/contrib/mmap.cc:87
++#: apt-pkg/contrib/mmap.cc:87 apt-pkg/contrib/mmap.cc:83
#, c-format
msgid "Couldn't make mmap of %lu bytes"
msgstr ""
- #: apt-pkg/contrib/strutl.cc:938
-#: apt-pkg/contrib/strutl.cc:982
++#: apt-pkg/contrib/strutl.cc:981 apt-pkg/contrib/strutl.cc:978
#, c-format
msgid "Selection %s not found"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:436
++#: apt-pkg/contrib/configuration.cc:436 apt-pkg/contrib/configuration.cc:433
#, c-format
msgid "Unrecognized type abbreviation: '%c'"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:494
++#: apt-pkg/contrib/configuration.cc:494 apt-pkg/contrib/configuration.cc:491
#, c-format
msgid "Opening configuration file %s"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:512
++#: apt-pkg/contrib/configuration.cc:512 apt-pkg/contrib/configuration.cc:509
#, c-format
msgid "Line %d too long (max %d)"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:608
++#: apt-pkg/contrib/configuration.cc:608 apt-pkg/contrib/configuration.cc:605
#, c-format
msgid "Syntax error %s:%u: Block starts with no name."
msgstr ""
--#: apt-pkg/contrib/configuration.cc:627
++#: apt-pkg/contrib/configuration.cc:627 apt-pkg/contrib/configuration.cc:624
#, c-format
msgid "Syntax error %s:%u: Malformed tag"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:644
++#: apt-pkg/contrib/configuration.cc:644 apt-pkg/contrib/configuration.cc:641
#, c-format
msgid "Syntax error %s:%u: Extra junk after value"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:684
++#: apt-pkg/contrib/configuration.cc:684 apt-pkg/contrib/configuration.cc:681
#, c-format
msgid "Syntax error %s:%u: Directives can only be done at the top level"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:691
++#: apt-pkg/contrib/configuration.cc:691 apt-pkg/contrib/configuration.cc:688
#, c-format
msgid "Syntax error %s:%u: Too many nested includes"
msgstr ""
#: apt-pkg/contrib/configuration.cc:695 apt-pkg/contrib/configuration.cc:700
++#: apt-pkg/contrib/configuration.cc:692 apt-pkg/contrib/configuration.cc:697
#, c-format
msgid "Syntax error %s:%u: Included from here"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:704
++#: apt-pkg/contrib/configuration.cc:704 apt-pkg/contrib/configuration.cc:701
#, c-format
msgid "Syntax error %s:%u: Unsupported directive '%s'"
msgstr ""
--#: apt-pkg/contrib/configuration.cc:738
++#: apt-pkg/contrib/configuration.cc:738 apt-pkg/contrib/configuration.cc:735
#, c-format
msgid "Syntax error %s:%u: Extra junk at end of file"
msgstr ""
--#: apt-pkg/contrib/progress.cc:155
++#: apt-pkg/contrib/progress.cc:155 apt-pkg/contrib/progress.cc:152
#, c-format
msgid "%c%s... Error!"
msgstr ""
--#: apt-pkg/contrib/progress.cc:157
++#: apt-pkg/contrib/progress.cc:157 apt-pkg/contrib/progress.cc:154
#, c-format
msgid "%c%s... Done"
msgstr ""
--#: apt-pkg/contrib/cmndline.cc:80
++#: apt-pkg/contrib/cmndline.cc:80 apt-pkg/contrib/cmndline.cc:77
#, c-format
msgid "Command line option '%c' [from %s] is not known."
msgstr ""
#: apt-pkg/contrib/cmndline.cc:106 apt-pkg/contrib/cmndline.cc:114
--#: apt-pkg/contrib/cmndline.cc:122
++#: apt-pkg/contrib/cmndline.cc:122 apt-pkg/contrib/cmndline.cc:103
++#: apt-pkg/contrib/cmndline.cc:111 apt-pkg/contrib/cmndline.cc:119
#, c-format
msgid "Command line option %s is not understood"
msgstr ""
--#: apt-pkg/contrib/cmndline.cc:127
++#: apt-pkg/contrib/cmndline.cc:127 apt-pkg/contrib/cmndline.cc:124
#, c-format
msgid "Command line option %s is not boolean"
msgstr ""
#: apt-pkg/contrib/cmndline.cc:166 apt-pkg/contrib/cmndline.cc:187
++#: apt-pkg/contrib/cmndline.cc:163 apt-pkg/contrib/cmndline.cc:184
#, c-format
msgid "Option %s requires an argument."
msgstr ""
#: apt-pkg/contrib/cmndline.cc:201 apt-pkg/contrib/cmndline.cc:207
++#: apt-pkg/contrib/cmndline.cc:198 apt-pkg/contrib/cmndline.cc:204
#, c-format
msgid "Option %s: Configuration item specification must have an =<val>."
msgstr ""
--#: apt-pkg/contrib/cmndline.cc:237
++#: apt-pkg/contrib/cmndline.cc:237 apt-pkg/contrib/cmndline.cc:234
#, c-format
msgid "Option %s requires an integer argument, not '%s'"
msgstr ""
--#: apt-pkg/contrib/cmndline.cc:268
++#: apt-pkg/contrib/cmndline.cc:268 apt-pkg/contrib/cmndline.cc:265
#, c-format
msgid "Option '%s' is too long"
msgstr ""
--#: apt-pkg/contrib/cmndline.cc:301
++#: apt-pkg/contrib/cmndline.cc:301 apt-pkg/contrib/cmndline.cc:298
#, c-format
msgid "Sense %s is not understood, try true or false."
msgstr ""
--#: apt-pkg/contrib/cmndline.cc:351
++#: apt-pkg/contrib/cmndline.cc:351 apt-pkg/contrib/cmndline.cc:348
#, c-format
msgid "Invalid operation %s"
msgstr ""
--#: apt-pkg/contrib/cdromutl.cc:55
++#: apt-pkg/contrib/cdromutl.cc:55 apt-pkg/contrib/cdromutl.cc:52
#, c-format
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
++#: methods/mirror.cc:88 apt-pkg/contrib/cdromutl.cc:146 apt-pkg/acquire.cc:424
++#: apt-pkg/clean.cc:40
#, c-format
msgid "Unable to change to %s"
msgstr ""
--#: apt-pkg/contrib/cdromutl.cc:190
++#: apt-pkg/contrib/cdromutl.cc:190 apt-pkg/contrib/cdromutl.cc:187
msgid "Failed to stat the cdrom"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:82
-#: apt-pkg/contrib/fileutl.cc:83
++#: apt-pkg/contrib/fileutl.cc:82 apt-pkg/contrib/fileutl.cc:80
#, c-format
msgid "Not using locking for read only lock file %s"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:87
-#: apt-pkg/contrib/fileutl.cc:88
++#: apt-pkg/contrib/fileutl.cc:87 apt-pkg/contrib/fileutl.cc:85
#, c-format
msgid "Could not open lock file %s"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:105
-#: apt-pkg/contrib/fileutl.cc:106
++#: apt-pkg/contrib/fileutl.cc:105 apt-pkg/contrib/fileutl.cc:103
#, c-format
msgid "Not using locking for nfs mounted lock file %s"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:109
-#: apt-pkg/contrib/fileutl.cc:110
++#: apt-pkg/contrib/fileutl.cc:109 apt-pkg/contrib/fileutl.cc:107
#, c-format
msgid "Could not get lock %s"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:377
-#: apt-pkg/contrib/fileutl.cc:378
++#: apt-pkg/contrib/fileutl.cc:377 apt-pkg/contrib/fileutl.cc:375
#, c-format
msgid "Waited for %s but it wasn't there"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:387
-#: apt-pkg/contrib/fileutl.cc:388
++#: apt-pkg/contrib/fileutl.cc:387 apt-pkg/contrib/fileutl.cc:385
#, c-format
msgid "Sub-process %s received a segmentation fault."
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:390
-#: apt-pkg/contrib/fileutl.cc:391
++#: apt-pkg/contrib/fileutl.cc:390 apt-pkg/contrib/fileutl.cc:388
#, c-format
msgid "Sub-process %s returned an error code (%u)"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:392
-#: apt-pkg/contrib/fileutl.cc:393
++#: apt-pkg/contrib/fileutl.cc:392 apt-pkg/contrib/fileutl.cc:390
#, c-format
msgid "Sub-process %s exited unexpectedly"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:436
-#: apt-pkg/contrib/fileutl.cc:437
++#: apt-pkg/contrib/fileutl.cc:436 apt-pkg/contrib/fileutl.cc:434
#, c-format
msgid "Could not open file %s"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:492
-#: apt-pkg/contrib/fileutl.cc:493
++#: apt-pkg/contrib/fileutl.cc:492 apt-pkg/contrib/fileutl.cc:490
#, c-format
msgid "read, still have %lu to read but none left"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:522
-#: apt-pkg/contrib/fileutl.cc:523
++#: apt-pkg/contrib/fileutl.cc:522 apt-pkg/contrib/fileutl.cc:520
#, c-format
msgid "write, still have %lu to write but couldn't"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:597
-#: apt-pkg/contrib/fileutl.cc:598
++#: apt-pkg/contrib/fileutl.cc:597 apt-pkg/contrib/fileutl.cc:595
msgid "Problem closing the file"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:603
-#: apt-pkg/contrib/fileutl.cc:604
++#: apt-pkg/contrib/fileutl.cc:603 apt-pkg/contrib/fileutl.cc:601
msgid "Problem unlinking the file"
msgstr ""
- #: apt-pkg/contrib/fileutl.cc:614
-#: apt-pkg/contrib/fileutl.cc:615
++#: apt-pkg/contrib/fileutl.cc:614 apt-pkg/contrib/fileutl.cc:612
msgid "Problem syncing the file"
msgstr ""
- #: apt-pkg/pkgcache.cc:121
-#: apt-pkg/pkgcache.cc:132
++#: apt-pkg/pkgcache.cc:137 apt-pkg/pkgcache.cc:132
msgid "Empty package cache"
msgstr ""
- #: apt-pkg/pkgcache.cc:127
-#: apt-pkg/pkgcache.cc:138
++#: apt-pkg/pkgcache.cc:143 apt-pkg/pkgcache.cc:138
msgid "The package cache file is corrupted"
msgstr ""
- #: apt-pkg/pkgcache.cc:132
-#: apt-pkg/pkgcache.cc:143
++#: apt-pkg/pkgcache.cc:148 apt-pkg/pkgcache.cc:143
msgid "The package cache file is an incompatible version"
msgstr ""
- #: apt-pkg/pkgcache.cc:137
-#: apt-pkg/pkgcache.cc:148
++#: apt-pkg/pkgcache.cc:153 apt-pkg/pkgcache.cc:148
#, c-format
msgid "This APT does not support the versioning system '%s'"
msgstr ""
- #: apt-pkg/pkgcache.cc:142
-#: apt-pkg/pkgcache.cc:153
++#: apt-pkg/pkgcache.cc:158 apt-pkg/pkgcache.cc:153
msgid "The package cache was built for a different architecture"
msgstr ""
- #: apt-pkg/pkgcache.cc:213
-#: apt-pkg/pkgcache.cc:224
++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224
msgid "Depends"
msgstr ""
- #: apt-pkg/pkgcache.cc:213
-#: apt-pkg/pkgcache.cc:224
++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224
msgid "PreDepends"
msgstr ""
- #: apt-pkg/pkgcache.cc:213
-#: apt-pkg/pkgcache.cc:224
++#: apt-pkg/pkgcache.cc:229 apt-pkg/pkgcache.cc:224
msgid "Suggests"
msgstr ""
- #: apt-pkg/pkgcache.cc:214
-#: apt-pkg/pkgcache.cc:225
++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225
msgid "Recommends"
msgstr ""
- #: apt-pkg/pkgcache.cc:214
-#: apt-pkg/pkgcache.cc:225
++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225
msgid "Conflicts"
msgstr ""
- #: apt-pkg/pkgcache.cc:214
-#: apt-pkg/pkgcache.cc:225
++#: apt-pkg/pkgcache.cc:230 apt-pkg/pkgcache.cc:225
msgid "Replaces"
msgstr ""
- #: apt-pkg/pkgcache.cc:215
-#: apt-pkg/pkgcache.cc:226
++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:226
msgid "Obsoletes"
msgstr ""
--#: apt-pkg/pkgcache.cc:226
++#: apt-pkg/pkgcache.cc:231 apt-pkg/pkgcache.cc:226
+ msgid "Breaks"
+ msgstr ""
+
-#: apt-pkg/pkgcache.cc:237
++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237
msgid "important"
msgstr ""
- #: apt-pkg/pkgcache.cc:226
-#: apt-pkg/pkgcache.cc:237
++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237
msgid "required"
msgstr ""
- #: apt-pkg/pkgcache.cc:226
-#: apt-pkg/pkgcache.cc:237
++#: apt-pkg/pkgcache.cc:242 apt-pkg/pkgcache.cc:237
msgid "standard"
msgstr ""
- #: apt-pkg/pkgcache.cc:227
-#: apt-pkg/pkgcache.cc:238
++#: apt-pkg/pkgcache.cc:243 apt-pkg/pkgcache.cc:238
msgid "optional"
msgstr ""
- #: apt-pkg/pkgcache.cc:227
-#: apt-pkg/pkgcache.cc:238
++#: apt-pkg/pkgcache.cc:243 apt-pkg/pkgcache.cc:238
msgid "extra"
msgstr ""
- #: apt-pkg/depcache.cc:58 apt-pkg/depcache.cc:87
-#: apt-pkg/depcache.cc:98 apt-pkg/depcache.cc:127
++#: apt-pkg/depcache.cc:103 apt-pkg/depcache.cc:132 apt-pkg/depcache.cc:100
++#: apt-pkg/depcache.cc:129
msgid "Building dependency tree"
msgstr ""
- #: apt-pkg/depcache.cc:59
-#: apt-pkg/depcache.cc:99
++#: apt-pkg/depcache.cc:104 apt-pkg/depcache.cc:101
msgid "Candidate versions"
msgstr ""
- #: apt-pkg/depcache.cc:88
-#: apt-pkg/depcache.cc:128
++#: apt-pkg/depcache.cc:133 apt-pkg/depcache.cc:130
msgid "Dependency generation"
msgstr ""
- #: apt-pkg/tagfile.cc:106
-#: apt-pkg/depcache.cc:149 apt-pkg/depcache.cc:168 apt-pkg/depcache.cc:172
++#: apt-pkg/depcache.cc:154 apt-pkg/depcache.cc:173 apt-pkg/depcache.cc:177
++#: apt-pkg/depcache.cc:151 apt-pkg/depcache.cc:170 apt-pkg/depcache.cc:174
+ msgid "Reading state information"
+ msgstr ""
+
-#: apt-pkg/depcache.cc:196
++#: apt-pkg/depcache.cc:201 apt-pkg/depcache.cc:198
+ #, c-format
+ msgid "Failed to open StateFile %s"
+ msgstr ""
+
-#: apt-pkg/depcache.cc:202
++#: apt-pkg/depcache.cc:207 apt-pkg/depcache.cc:204
+ #, c-format
+ msgid "Failed to write temporary StateFile %s"
+ msgstr ""
+
-#: apt-pkg/tagfile.cc:106
++#: apt-pkg/tagfile.cc:106 apt-pkg/tagfile.cc:102
#, c-format
msgid "Unable to parse package file %s (1)"
msgstr ""
--#: apt-pkg/tagfile.cc:193
++#: apt-pkg/tagfile.cc:193 apt-pkg/tagfile.cc:189
#, c-format
msgid "Unable to parse package file %s (2)"
msgstr ""
--#: apt-pkg/sourcelist.cc:94
++#: apt-pkg/sourcelist.cc:94 apt-pkg/sourcelist.cc:90
#, c-format
msgid "Malformed line %lu in source list %s (URI)"
msgstr ""
--#: apt-pkg/sourcelist.cc:96
++#: apt-pkg/sourcelist.cc:96 apt-pkg/sourcelist.cc:92
#, c-format
msgid "Malformed line %lu in source list %s (dist)"
msgstr ""
--#: apt-pkg/sourcelist.cc:99
++#: apt-pkg/sourcelist.cc:99 apt-pkg/sourcelist.cc:95
#, c-format
msgid "Malformed line %lu in source list %s (URI parse)"
msgstr ""
--#: apt-pkg/sourcelist.cc:105
++#: apt-pkg/sourcelist.cc:105 apt-pkg/sourcelist.cc:101
#, c-format
msgid "Malformed line %lu in source list %s (absolute dist)"
msgstr ""
--#: apt-pkg/sourcelist.cc:112
++#: apt-pkg/sourcelist.cc:112 apt-pkg/sourcelist.cc:108
#, c-format
msgid "Malformed line %lu in source list %s (dist parse)"
msgstr ""
--#: apt-pkg/sourcelist.cc:203
++#: apt-pkg/sourcelist.cc:203 apt-pkg/sourcelist.cc:199
#, c-format
msgid "Opening %s"
msgstr ""
- #: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:426
-#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:451
++#: apt-pkg/sourcelist.cc:220 apt-pkg/cdrom.cc:450 apt-pkg/sourcelist.cc:216
++#: apt-pkg/cdrom.cc:448
#, c-format
msgid "Line %u too long in source list %s."
msgstr ""
--#: apt-pkg/sourcelist.cc:240
++#: apt-pkg/sourcelist.cc:240 apt-pkg/sourcelist.cc:236
#, c-format
msgid "Malformed line %u in source list %s (type)"
msgstr ""
--#: apt-pkg/sourcelist.cc:244
++#: apt-pkg/sourcelist.cc:244 apt-pkg/sourcelist.cc:240
#, 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:248 apt-pkg/sourcelist.cc:251
#, c-format
msgid "Malformed line %u in source list %s (vendor id)"
msgstr ""
- #: apt-pkg/packagemanager.cc:402
-#: apt-pkg/packagemanager.cc:403
++#: apt-pkg/packagemanager.cc:403 apt-pkg/packagemanager.cc:399
#, c-format
msgid ""
"This installation run will require temporarily removing the essential "
"you really want to do it, activate the APT::Force-LoopBreak option."
msgstr ""
--#: apt-pkg/pkgrecords.cc:37
++#: apt-pkg/pkgrecords.cc:35 apt-pkg/pkgrecords.cc:32
#, c-format
msgid "Index file type '%s' is not supported"
msgstr ""
- #: apt-pkg/algorithms.cc:241
-#: apt-pkg/algorithms.cc:254
++#: apt-pkg/algorithms.cc:248 apt-pkg/algorithms.cc:247
#, c-format
msgid ""
"The package %s needs to be reinstalled, but I can't find an archive for it."
msgstr ""
- #: apt-pkg/algorithms.cc:1066
-#: apt-pkg/algorithms.cc:1110
++#: apt-pkg/algorithms.cc:1104 apt-pkg/algorithms.cc:1103
msgid ""
"Error, pkgProblemResolver::Resolve generated breaks, this may be caused by "
"held packages."
msgstr ""
- #: apt-pkg/algorithms.cc:1068
-#: apt-pkg/algorithms.cc:1112
++#: apt-pkg/algorithms.cc:1106 apt-pkg/algorithms.cc:1105
msgid "Unable to correct problems, you have held broken packages."
msgstr ""
--#: apt-pkg/acquire.cc:62
++#: apt-pkg/acquire.cc:62 apt-pkg/acquire.cc:59
#, c-format
msgid "Lists directory %spartial is missing."
msgstr ""
--#: apt-pkg/acquire.cc:66
++#: apt-pkg/acquire.cc:66 apt-pkg/acquire.cc:63
#, c-format
msgid "Archive directory %spartial is missing."
msgstr ""
#. only show the ETA if it makes sense
#. two days
--#: apt-pkg/acquire.cc:830
++#: apt-pkg/acquire.cc:830 apt-pkg/acquire.cc:827
#, c-format
msgid "Retrieving file %li of %li (%s remaining)"
msgstr ""
--#: apt-pkg/acquire.cc:832
++#: apt-pkg/acquire.cc:832 apt-pkg/acquire.cc:829
#, c-format
msgid "Retrieving file %li of %li"
msgstr ""
--#: apt-pkg/acquire-worker.cc:113
++#: apt-pkg/acquire-worker.cc:113 apt-pkg/acquire-worker.cc:110
#, c-format
msgid "The method driver %s could not be found."
msgstr ""
--#: apt-pkg/acquire-worker.cc:162
++#: apt-pkg/acquire-worker.cc:162 apt-pkg/acquire-worker.cc:159
#, c-format
msgid "Method %s did not start correctly"
msgstr ""
- #: apt-pkg/acquire-worker.cc:377
-#: apt-pkg/acquire-worker.cc:384
++#: apt-pkg/acquire-worker.cc:384 apt-pkg/acquire-worker.cc:381
#, c-format
msgid "Please insert the disc labeled: '%s' in the drive '%s' and press enter."
msgstr ""
- #: apt-pkg/init.cc:120
-#: apt-pkg/init.cc:126
++#: apt-pkg/init.cc:123 apt-pkg/init.cc:126
#, c-format
msgid "Packaging system '%s' is not supported"
msgstr ""
- #: apt-pkg/init.cc:136
-#: apt-pkg/init.cc:142
++#: apt-pkg/init.cc:139 apt-pkg/init.cc:142
msgid "Unable to determine a suitable packaging system type"
msgstr ""
--#: apt-pkg/clean.cc:61
++#: apt-pkg/clean.cc:61 apt-pkg/clean.cc:57
#, c-format
msgid "Unable to stat %s."
msgstr ""
--#: apt-pkg/srcrecords.cc:48
++#: apt-pkg/srcrecords.cc:48 apt-pkg/srcrecords.cc:44
msgid "You must put some 'source' URIs in your sources.list"
msgstr ""
--#: apt-pkg/cachefile.cc:73
++#: apt-pkg/cachefile.cc:73 apt-pkg/cachefile.cc:69
msgid "The package lists or status file could not be parsed or opened."
msgstr ""
--#: apt-pkg/cachefile.cc:77
++#: apt-pkg/cachefile.cc:77 apt-pkg/cachefile.cc:73
msgid "You may want to run apt-get update to correct these problems"
msgstr ""
--#: apt-pkg/policy.cc:270
++#: apt-pkg/policy.cc:270 apt-pkg/policy.cc:267
msgid "Invalid record in the preferences file, no Package header"
msgstr ""
--#: apt-pkg/policy.cc:292
++#: apt-pkg/policy.cc:292 apt-pkg/policy.cc:289
#, c-format
msgid "Did not understand pin type %s"
msgstr ""
--#: apt-pkg/policy.cc:300
++#: apt-pkg/policy.cc:300 apt-pkg/policy.cc:297
msgid "No priority (or zero) specified for pin"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:74
-#: apt-pkg/pkgcachegen.cc:76
++#: apt-pkg/pkgcachegen.cc:76 apt-pkg/pkgcachegen.cc:72
msgid "Cache has an incompatible versioning system"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:117
-#: apt-pkg/pkgcachegen.cc:119
++#: apt-pkg/pkgcachegen.cc:119 apt-pkg/pkgcachegen.cc:115
#, c-format
msgid "Error occurred while processing %s (NewPackage)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:129
-#: apt-pkg/pkgcachegen.cc:134
++#: apt-pkg/pkgcachegen.cc:134 apt-pkg/pkgcachegen.cc:130
#, c-format
msgid "Error occurred while processing %s (UsePackage1)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:150
-#: apt-pkg/pkgcachegen.cc:157
++#: apt-pkg/pkgcachegen.cc:157 apt-pkg/pkgcachegen.cc:153
+ #, c-format
+ msgid "Error occured while processing %s (NewFileDesc1)"
+ msgstr ""
+
-#: apt-pkg/pkgcachegen.cc:182
++#: apt-pkg/pkgcachegen.cc:182 apt-pkg/pkgcachegen.cc:178
#, c-format
msgid "Error occurred while processing %s (UsePackage2)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:154
-#: apt-pkg/pkgcachegen.cc:186
++#: apt-pkg/pkgcachegen.cc:186 apt-pkg/pkgcachegen.cc:182
#, c-format
msgid "Error occurred while processing %s (NewFileVer1)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:184
-#: apt-pkg/pkgcachegen.cc:217
++#: apt-pkg/pkgcachegen.cc:217 apt-pkg/pkgcachegen.cc:213
#, c-format
msgid "Error occurred while processing %s (NewVersion1)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:188
-#: apt-pkg/pkgcachegen.cc:221
++#: apt-pkg/pkgcachegen.cc:221 apt-pkg/pkgcachegen.cc:217
#, c-format
msgid "Error occurred while processing %s (UsePackage3)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:192
-#: apt-pkg/pkgcachegen.cc:225
++#: apt-pkg/pkgcachegen.cc:225 apt-pkg/pkgcachegen.cc:221
#, c-format
msgid "Error occurred while processing %s (NewVersion2)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:207
-#: apt-pkg/pkgcachegen.cc:249
++#: apt-pkg/pkgcachegen.cc:249 apt-pkg/pkgcachegen.cc:245
+ #, c-format
+ msgid "Error occured while processing %s (NewFileDesc2)"
+ msgstr ""
+
-#: apt-pkg/pkgcachegen.cc:255
++#: apt-pkg/pkgcachegen.cc:255 apt-pkg/pkgcachegen.cc:251
msgid "Wow, you exceeded the number of package names this APT is capable of."
msgstr ""
- #: apt-pkg/pkgcachegen.cc:210
-#: apt-pkg/pkgcachegen.cc:258
++#: apt-pkg/pkgcachegen.cc:258 apt-pkg/pkgcachegen.cc:254
msgid "Wow, you exceeded the number of versions this APT is capable of."
msgstr ""
- #: apt-pkg/pkgcachegen.cc:213
-#: apt-pkg/pkgcachegen.cc:261
++#: apt-pkg/pkgcachegen.cc:261 apt-pkg/pkgcachegen.cc:257
+ msgid "Wow, you exceeded the number of descriptions this APT is capable of."
+ msgstr ""
+
-#: apt-pkg/pkgcachegen.cc:264
++#: apt-pkg/pkgcachegen.cc:264 apt-pkg/pkgcachegen.cc:260
msgid "Wow, you exceeded the number of dependencies this APT is capable of."
msgstr ""
- #: apt-pkg/pkgcachegen.cc:241
-#: apt-pkg/pkgcachegen.cc:292
++#: apt-pkg/pkgcachegen.cc:292 apt-pkg/pkgcachegen.cc:288
#, c-format
msgid "Error occurred while processing %s (FindPkg)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:254
-#: apt-pkg/pkgcachegen.cc:305
++#: apt-pkg/pkgcachegen.cc:305 apt-pkg/pkgcachegen.cc:301
#, c-format
msgid "Error occurred while processing %s (CollectFileProvides)"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:260
-#: apt-pkg/pkgcachegen.cc:311
++#: apt-pkg/pkgcachegen.cc:311 apt-pkg/pkgcachegen.cc:307
#, c-format
msgid "Package %s %s was not found while processing file dependencies"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:574
-#: apt-pkg/pkgcachegen.cc:682
++#: apt-pkg/pkgcachegen.cc:682 apt-pkg/pkgcachegen.cc:678
#, c-format
msgid "Couldn't stat source package list %s"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:658
-#: apt-pkg/pkgcachegen.cc:767
++#: apt-pkg/pkgcachegen.cc:767 apt-pkg/pkgcachegen.cc:763
msgid "Collecting File Provides"
msgstr ""
- #: apt-pkg/pkgcachegen.cc:785 apt-pkg/pkgcachegen.cc:792
+ #: apt-pkg/pkgcachegen.cc:894 apt-pkg/pkgcachegen.cc:901
++#: 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:127
++#: apt-pkg/acquire-item.cc:134
#, c-format
msgid "rename failed, %s (%s -> %s)."
msgstr ""
- #: apt-pkg/acquire-item.cc:243 apt-pkg/acquire-item.cc:952
-#: apt-pkg/acquire-item.cc:406 apt-pkg/acquire-item.cc:661
-#: apt-pkg/acquire-item.cc:1411
++#: apt-pkg/acquire-item.cc:293 apt-pkg/acquire-item.cc:1039
++#: apt-pkg/acquire-item.cc:456 apt-pkg/acquire-item.cc:710
++#: apt-pkg/acquire-item.cc:1462
msgid "MD5Sum mismatch"
msgstr ""
- #: apt-pkg/acquire-item.cc:647
-#: apt-pkg/acquire-item.cc:1106
++#: apt-pkg/acquire-item.cc:733 apt-pkg/acquire-item.cc:1156
msgid "There is no public key available for the following key IDs:\n"
msgstr ""
- #: apt-pkg/acquire-item.cc:760
-#: apt-pkg/acquire-item.cc:1219
++#: apt-pkg/acquire-item.cc:847 apt-pkg/acquire-item.cc:1270
#, 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:819
-#: apt-pkg/acquire-item.cc:1278
++#: apt-pkg/acquire-item.cc:906 apt-pkg/acquire-item.cc:1329
#, 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:855
-#: apt-pkg/acquire-item.cc:1314
++#: apt-pkg/acquire-item.cc:942 apt-pkg/acquire-item.cc:1365
#, c-format
msgid ""
"The package index files are corrupted. No Filename: field for package %s."
msgstr ""
- #: apt-pkg/acquire-item.cc:942
-#: apt-pkg/acquire-item.cc:1401
++#: apt-pkg/acquire-item.cc:1029 apt-pkg/acquire-item.cc:1452
msgid "Size mismatch"
msgstr ""
msgid "Vendor block %s contains no fingerprint"
msgstr ""
- #: apt-pkg/cdrom.cc:507
-#: apt-pkg/cdrom.cc:532
++#: apt-pkg/cdrom.cc:531 apt-pkg/cdrom.cc:529
#, 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:541 apt-pkg/cdrom.cc:623
++#: apt-pkg/cdrom.cc:540 apt-pkg/cdrom.cc:622 apt-pkg/cdrom.cc:538
++#: apt-pkg/cdrom.cc:620
msgid "Identifying.. "
msgstr ""
- #: apt-pkg/cdrom.cc:541
-#: apt-pkg/cdrom.cc:566
++#: apt-pkg/cdrom.cc:565 apt-pkg/cdrom.cc:563
#, c-format
msgid "Stored label: %s \n"
msgstr ""
- #: apt-pkg/cdrom.cc:561
-#: apt-pkg/cdrom.cc:586
++#: apt-pkg/cdrom.cc:585 apt-pkg/cdrom.cc:583
#, c-format
msgid "Using CD-ROM mount point %s\n"
msgstr ""
- #: apt-pkg/cdrom.cc:579
-#: apt-pkg/cdrom.cc:604
++#: apt-pkg/cdrom.cc:603 apt-pkg/cdrom.cc:601
msgid "Unmounting CD-ROM\n"
msgstr ""
- #: apt-pkg/cdrom.cc:583
-#: apt-pkg/cdrom.cc:608
++#: apt-pkg/cdrom.cc:607 apt-pkg/cdrom.cc:605
msgid "Waiting for disc...\n"
msgstr ""
#. Mount the new CDROM
- #: apt-pkg/cdrom.cc:591
-#: apt-pkg/cdrom.cc:616
++#: apt-pkg/cdrom.cc:615 apt-pkg/cdrom.cc:613
msgid "Mounting CD-ROM...\n"
msgstr ""
- #: apt-pkg/cdrom.cc:609
-#: apt-pkg/cdrom.cc:634
++#: apt-pkg/cdrom.cc:633 apt-pkg/cdrom.cc:631
msgid "Scanning disc for index files..\n"
msgstr ""
- #: apt-pkg/cdrom.cc:647
-#: apt-pkg/cdrom.cc:674
++#: apt-pkg/cdrom.cc:673 apt-pkg/cdrom.cc:671
#, 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:712
-#: apt-pkg/cdrom.cc:711
-#, c-format
-msgid "Found label '%s'\n"
-msgstr ""
-
-#: apt-pkg/cdrom.cc:740
++#: apt-pkg/cdrom.cc:739 apt-pkg/cdrom.cc:737
msgid "That is not a valid name, try again.\n"
msgstr ""
- #: apt-pkg/cdrom.cc:728
-#: apt-pkg/cdrom.cc:756
++#: apt-pkg/cdrom.cc:755 apt-pkg/cdrom.cc:753
#, c-format
msgid ""
"This disc is called: \n"
"'%s'\n"
msgstr ""
- #: apt-pkg/cdrom.cc:732
-#: apt-pkg/cdrom.cc:760
++#: apt-pkg/cdrom.cc:759 apt-pkg/cdrom.cc:757
msgid "Copying package lists..."
msgstr ""
- #: apt-pkg/cdrom.cc:756
-#: apt-pkg/cdrom.cc:786
++#: apt-pkg/cdrom.cc:785 apt-pkg/cdrom.cc:783
msgid "Writing new source list\n"
msgstr ""
- #: apt-pkg/cdrom.cc:765
-#: apt-pkg/cdrom.cc:795
++#: apt-pkg/cdrom.cc:794 apt-pkg/cdrom.cc:792
msgid "Source list entries for this disc are:\n"
msgstr ""
- #: apt-pkg/cdrom.cc:807
-#: apt-pkg/cdrom.cc:837
-msgid "Unmounting CD-ROM...\n"
++#: apt-pkg/cdrom.cc:836
+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 ""
--#: apt-pkg/deb/dpkgpm.cc:358
++#: apt-pkg/deb/dpkgpm.cc:358 apt-pkg/deb/dpkgpm.cc:357
#, c-format
msgid "Preparing %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:359
++#: apt-pkg/deb/dpkgpm.cc:359 apt-pkg/deb/dpkgpm.cc:358
#, c-format
msgid "Unpacking %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:364
++#: apt-pkg/deb/dpkgpm.cc:364 apt-pkg/deb/dpkgpm.cc:363
#, c-format
msgid "Preparing to configure %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:365
++#: apt-pkg/deb/dpkgpm.cc:365 apt-pkg/deb/dpkgpm.cc:364
#, c-format
msgid "Configuring %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:366
++#: apt-pkg/deb/dpkgpm.cc:366 apt-pkg/deb/dpkgpm.cc:365
#, c-format
msgid "Installed %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:371
++#: apt-pkg/deb/dpkgpm.cc:371 apt-pkg/deb/dpkgpm.cc:370
#, c-format
msgid "Preparing for removal of %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:372
++#: apt-pkg/deb/dpkgpm.cc:372 apt-pkg/deb/dpkgpm.cc:371
#, c-format
msgid "Removing %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:373
++#: apt-pkg/deb/dpkgpm.cc:373 apt-pkg/deb/dpkgpm.cc:372
#, c-format
msgid "Removed %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:378
++#: apt-pkg/deb/dpkgpm.cc:378 apt-pkg/deb/dpkgpm.cc:377
#, c-format
msgid "Preparing to completely remove %s"
msgstr ""
--#: apt-pkg/deb/dpkgpm.cc:379
++#: apt-pkg/deb/dpkgpm.cc:379 apt-pkg/deb/dpkgpm.cc:378
#, c-format
msgid "Completely removed %s"
msgstr ""
-#: methods/rred.cc:219
-msgid "Could not patch file"
-msgstr ""
-
#: methods/rsh.cc:330
msgid "Connection closed prematurely"
msgstr ""
++
++#: apt-pkg/cdrom.cc:708
++#, c-format
++msgid "Found label '%s'\n"
++msgstr ""
++
++#: apt-pkg/cdrom.cc:834
++msgid "Unmounting CD-ROM...\n"
++msgstr ""
++
++#: methods/rred.cc:219
++msgid "Could not patch file"
++msgstr ""