{
// 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()));
}
/*}}}*/
+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
}
}
- // 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);
}
}
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();
};
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:
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;
+}
+ /*}}}*/
++
bindtextdomain(textdomain(0),Cnf.FindDir("Dir::Locale").c_str());
}
#endif
--
+ // Translation
+ Cnf.Set("APT::Acquire::Translation", "environment");
+
return true;
}
/*}}}*/
AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
dnl -- SET THIS TO THE RELEASE VERSION --
- AC_DEFINE_UNQUOTED(VERSION,"0.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)
--- /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
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
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
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
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)
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"
" -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 "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 ""
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 ""
#: 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 ""
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 "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 ""
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/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 ""