APT

Merge lp:~pitti/apt/compressed-indexes into lp:~ubuntu-core-dev/apt/ubuntu

Proposed by Martin Pitt on 2010-06-11
Status: Rejected
Rejected by: Martin Pitt on 2010-06-11
Proposed branch: lp:~pitti/apt/compressed-indexes
Merge into: lp:~ubuntu-core-dev/apt/ubuntu
Diff against target: 90174 lines (+26606/-12459) (has conflicts)
118 files modified
apt-inst/contrib/arfile.h (+1/-0)
apt-inst/makefile (+1/-1)
apt-pkg/acquire-item.cc (+40/-5)
apt-pkg/acquire-item.h (+13/-1)
apt-pkg/aptconfiguration.cc (+235/-4)
apt-pkg/aptconfiguration.h (+27/-0)
apt-pkg/contrib/configuration.cc (+11/-11)
apt-pkg/contrib/configuration.h (+19/-18)
apt-pkg/contrib/fileutl.cc (+41/-6)
apt-pkg/contrib/fileutl.h (+6/-3)
apt-pkg/contrib/mmap.cc (+89/-46)
apt-pkg/contrib/mmap.h (+7/-3)
apt-pkg/contrib/strutl.cc (+18/-0)
apt-pkg/contrib/strutl.h (+1/-0)
apt-pkg/deb/debindexfile.cc (+34/-17)
apt-pkg/deb/debindexfile.h (+3/-2)
apt-pkg/deb/deblistparser.cc (+24/-5)
apt-pkg/deb/deblistparser.h (+2/-1)
apt-pkg/deb/debmetaindex.cc (+17/-3)
apt-pkg/deb/debrecords.cc (+9/-3)
apt-pkg/deb/debsrcrecords.cc (+3/-2)
apt-pkg/deb/debsrcrecords.h (+3/-3)
apt-pkg/deb/dpkgpm.cc (+1/-1)
apt-pkg/depcache.cc (+5/-5)
apt-pkg/indexfile.cc (+23/-24)
apt-pkg/init.h (+1/-1)
apt-pkg/makefile (+1/-1)
apt-pkg/pkgcache.cc (+18/-9)
apt-pkg/pkgcache.h (+2/-2)
apt-pkg/policy.cc (+15/-1)
apt-pkg/srcrecords.cc (+2/-2)
apt-pkg/srcrecords.h (+4/-4)
buildlib/apti18n.h.in (+3/-0)
buildlib/library.mak (+7/-7)
buildlib/libversion.mak (+3/-0)
cmdline/apt-cache.cc (+14/-3)
cmdline/apt-get.cc (+7/-5)
cmdline/apt-key (+1/-0)
cmdline/apt-mark (+11/-11)
configure.in (+8/-0)
debian/NEWS (+8/-1)
debian/changelog (+165/-0)
debian/control (+18/-0)
debian/rules (+13/-12)
doc/apt-cdrom.8.xml (+1/-1)
doc/apt-ftparchive.1.xml (+21/-1)
doc/apt.conf.5.xml (+32/-1)
doc/apt_preferences.5.xml (+9/-1)
doc/examples/configure-index (+9/-0)
doc/po/apt-doc.pot (+411/-371)
doc/po/de.po (+462/-373)
doc/po/es.po (+3511/-2616)
doc/po/fr.po (+390/-295)
doc/po/it.po (+284/-257)
doc/po/ja.po (+306/-257)
doc/po/pl.po (+2580/-759)
doc/po/pt_BR.po (+285/-258)
ftparchive/apt-ftparchive.cc (+6/-4)
ftparchive/cachedb.cc (+17/-13)
ftparchive/cachedb.h (+11/-11)
ftparchive/contents.cc (+1/-1)
ftparchive/contents.h (+1/-1)
ftparchive/multicompress.cc (+7/-7)
ftparchive/multicompress.h (+6/-6)
ftparchive/override.cc (+8/-8)
ftparchive/override.h (+5/-5)
ftparchive/writer.cc (+37/-38)
ftparchive/writer.h (+20/-19)
po/ar.po.OTHER (+2896/-0)
po/ast.po (+200/-175)
po/bg.po (+201/-176)
po/bs.po (+193/-172)
po/ca.po (+200/-175)
po/cs.po (+200/-175)
po/cy.po (+200/-173)
po/da.po (+200/-174)
po/de.po (+430/-410)
po/dz.po (+201/-175)
po/el.po (+200/-175)
po/en_GB.po (+256/-231)
po/es.po (+200/-175)
po/eu.po (+200/-175)
po/fi.po (+200/-175)
po/fr.po (+6/-8)
po/gl.po (+200/-175)
po/hu.po (+200/-175)
po/it.po (+16/-7)
po/ja.po (+200/-175)
po/km.po (+201/-175)
po/ko.po (+200/-175)
po/ku.po.OTHER (+2875/-0)
po/lt.po (+200/-178)
po/makefile (+1/-0)
po/mr.po (+200/-175)
po/nb.po (+200/-175)
po/ne.po (+200/-175)
po/nl.po (+329/-312)
po/nn.po (+200/-173)
po/pl.po (+200/-175)
po/pt.po (+200/-175)
po/pt_BR.po (+200/-175)
po/ro.po (+200/-175)
po/ru.po (+202/-188)
po/sk.po (+11/-10)
po/sl.po (+200/-173)
po/sv.po (+200/-175)
po/th.po (+200/-175)
po/tl.po (+200/-174)
po/uk.po.OTHER (+3161/-0)
po/vi.po (+200/-175)
po/zh_CN.po (+200/-174)
po/zh_TW.po (+200/-175)
test/libapt/assert.h (+21/-0)
test/libapt/getlanguages_test.cc (+149/-0)
test/libapt/makefile (+25/-0)
test/libapt/parsedepends_test.cc (+128/-0)
test/libapt/run-tests.sh (+7/-0)
test/test-indexes.sh (+143/-0)
Text conflict in apt-pkg/indexfile.cc
Text conflict in buildlib/libversion.mak
Text conflict in configure.in
Text conflict in debian/changelog
Text conflict in debian/control
Text conflict in doc/po/fr.po
Contents conflict in po/ar.po
Contents conflict in po/ku.po
Contents conflict in po/uk.po
To merge this branch: bzr merge lp:~pitti/apt/compressed-indexes
Reviewer Review Type Date Requested Status
Martin Pitt Needs Fixing on 2010-06-11
Michael Vogt 2010-06-11 Pending
Review via email: mp+27342@code.launchpad.net

Description of the change

This branch introduces support for storing gzip-compressed package indexes locally. On my system, this reduces /var/lib/apt/lists/ from 70 MB to 19 MB without introducing noticeable additional latency (mostly because my hard disk is very slow, thus the additional CPU overhead of uncompressing the indexes for building the cache is more than offset by the saved I/O). But even on netbooks or thin clients with fast SSD and slow processor this is an interesting option if the install is very space constrained.

I did not enable this option by default. To use it, one needs to create a file like

$ cat /etc/apt/apt.conf.d/02compress-indexes
Acquire::GzipIndexes "true";
Acquire::CompressionTypes::Order:: "gz";

The second is necessary since the patch deliberately avoids re-compressing downloaded indexes, it just keeps an already gzip compressed index if it gets one.

I also added some test cases for this in test/test-indexes.sh, which run noninteractively and use the local build tree. This tests both uncompressed and compressed indexes with apt-cache and apt-get in various combinations.

Note that although this introduces a new protected member in FileFD, this does _not_ change the ABI of libapt, since FileFD is an internal class only and not exported in libapt-pkg-dev. I ran the abi checker and it gave me a clean bill.

To post a comment you must log in.
Martin Pitt (pitti) wrote :

Oh, forgot: I based this branch off http://bzr.debian.org/apt/debian-sid/, so lp:apt might not actually be the correct target here. My intention for this is to land in the upstream (Debian) trunk.

FYI, I backported the changes to lucid, and are now running with this version on my desktop (with compressed indexes).

Martin Pitt (pitti) wrote :

Ah, seems that lp:apt is indeed quite different, sorry :-( So please ignore the autogenerated diff here, and perhaps just use the bazaar.lp.net links for review?

Martin Pitt (pitti) wrote :

Ah, I just discovered some regressions wrt. apt-get source and apt-cache showsrc. I committed test cases for those (r1982), and will re-propose the merge against the correct branch (lp:~mvo/apt/debian-sid should be a good mirror of the Debian one?) once it's fixed.

review: Needs Fixing

Unmerged revisions

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'apt-inst/contrib/arfile.h'
2--- apt-inst/contrib/arfile.h 2006-10-02 14:16:54 +0000
3+++ apt-inst/contrib/arfile.h 2010-06-11 16:24:33 +0000
4@@ -39,6 +39,7 @@
5
6 // Locate a member by name
7 const Member *FindMember(const char *Name) const;
8+ inline Member *Members() { return List; }
9
10 ARArchive(FileFd &File);
11 ~ARArchive();
12
13=== modified file 'apt-inst/makefile'
14--- apt-inst/makefile 2009-12-14 09:08:27 +0000
15+++ apt-inst/makefile 2010-06-11 16:24:33 +0000
16@@ -14,7 +14,7 @@
17
18 # The library name
19 LIBRARY=apt-inst
20-MAJOR=1.1
21+MAJOR=1.2
22 MINOR=0
23 SLIBS=$(PTHREADLIB) -lapt-pkg
24 APT_DOMAIN:=libapt-inst$(MAJOR)
25
26=== modified file 'apt-pkg/acquire-item.cc'
27--- apt-pkg/acquire-item.cc 2010-02-17 21:40:05 +0000
28+++ apt-pkg/acquire-item.cc 2010-06-11 16:24:33 +0000
29@@ -360,7 +360,7 @@
30 if(last_space != string::npos)
31 Description.erase(last_space, Description.size()-last_space);
32 new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
33- ExpectedHash, available_patches);
34+ ExpectedHash, ServerSha1, available_patches);
35 Complete = false;
36 Status = StatDone;
37 Dequeue();
38@@ -428,9 +428,10 @@
39 pkgAcqIndexDiffs::pkgAcqIndexDiffs(pkgAcquire *Owner,
40 string URI,string URIDesc,string ShortDesc,
41 HashString ExpectedHash,
42+ string ServerSha1,
43 vector<DiffInfo> diffs)
44 : Item(Owner), RealURI(URI), ExpectedHash(ExpectedHash),
45- available_patches(diffs)
46+ available_patches(diffs), ServerSha1(ServerSha1)
47 {
48
49 DestFile = _config->FindDir("Dir::State::lists") + "partial/";
50@@ -516,6 +517,13 @@
51 std::clog << "QueueNextDiff: "
52 << FinalFile << " (" << local_sha1 << ")"<<std::endl;
53
54+ // final file reached before all patches are applied
55+ if(local_sha1 == ServerSha1)
56+ {
57+ Finish(true);
58+ return true;
59+ }
60+
61 // remove all patches until the next matching patch is found
62 // this requires the Index file to be ordered
63 for(vector<DiffInfo>::iterator I=available_patches.begin();
64@@ -613,7 +621,7 @@
65 // see if there is more to download
66 if(available_patches.size() > 0) {
67 new pkgAcqIndexDiffs(Owner, RealURI, Description, Desc.ShortDesc,
68- ExpectedHash, available_patches);
69+ ExpectedHash, ServerSha1, available_patches);
70 return Finish();
71 } else
72 return Finish(true);
73@@ -662,6 +670,8 @@
74 {
75 string Final = _config->FindDir("Dir::State::lists");
76 Final += URItoFileName(RealURI);
77+ if (_config->FindB("Acquire::GzipIndexes",false))
78+ Final += ".gz";
79
80 struct stat Buf;
81 if (stat(Final.c_str(),&Buf) != 0)
82@@ -791,6 +801,21 @@
83 string compExt = flExtension(flNotDir(URI(Desc.URI).Path));
84 string decompProg;
85
86+ // If we enable compressed indexes and already have gzip, keep it
87+ if (_config->FindB("Acquire::GzipIndexes",false) && compExt == "gz") {
88+ string FinalFile = _config->FindDir("Dir::State::lists");
89+ FinalFile += URItoFileName(RealURI) + ".gz";
90+ //if(Debug)
91+ // std::clog << "pkgAcqIndex: keeping gzipped " << FinalFile << endl;
92+ Rename(DestFile,FinalFile);
93+ chmod(FinalFile.c_str(),0644);
94+
95+ // Update DestFile for .gz suffix so that the clean operation keeps it
96+ DestFile = _config->FindDir("Dir::State::lists") + "partial/";
97+ DestFile += URItoFileName(RealURI) + ".gz";
98+ return;
99+ }
100+
101 // get the binary name for your used compression type
102 decompProg = _config->Find(string("Acquire::CompressionTypes::").append(compExt),"");
103 if(decompProg.empty() == false);
104@@ -1591,8 +1616,9 @@
105 /* The file is added to the queue */
106 pkgAcqFile::pkgAcqFile(pkgAcquire *Owner,string URI,string Hash,
107 unsigned long Size,string Dsc,string ShortDesc,
108- const string &DestDir, const string &DestFilename) :
109- Item(Owner), ExpectedHash(Hash)
110+ const string &DestDir, const string &DestFilename,
111+ bool IsIndexFile) :
112+ Item(Owner), ExpectedHash(Hash), IsIndexFile(IsIndexFile)
113 {
114 Retries = _config->FindI("Acquire::Retries",0);
115
116@@ -1707,3 +1733,12 @@
117 Item::Failed(Message,Cnf);
118 }
119 /*}}}*/
120+// AcqIndex::Custom600Headers - Insert custom request headers /*{{{*/
121+// ---------------------------------------------------------------------
122+/* The only header we use is the last-modified header. */
123+string pkgAcqFile::Custom600Headers()
124+{
125+ if (IsIndexFile)
126+ return "\nIndex-File: true";
127+}
128+ /*}}}*/
129
130=== modified file 'apt-pkg/acquire-item.h'
131--- apt-pkg/acquire-item.h 2009-09-23 15:26:43 +0000
132+++ apt-pkg/acquire-item.h 2010-06-11 16:24:33 +0000
133@@ -434,6 +434,10 @@
134 * off the front?
135 */
136 vector<DiffInfo> available_patches;
137+
138+ /** Stop applying patches when reaching that sha1 */
139+ string ServerSha1;
140+
141 /** The current status of this patch. */
142 enum DiffState
143 {
144@@ -487,6 +491,7 @@
145 */
146 pkgAcqIndexDiffs(pkgAcquire *Owner,string URI,string URIDesc,
147 string ShortDesc, HashString ExpectedHash,
148+ string ServerSha1,
149 vector<DiffInfo> diffs=vector<DiffInfo>());
150 };
151 /*}}}*/
152@@ -868,6 +873,9 @@
153 */
154 unsigned int Retries;
155
156+ /** \brief Should this file be considered a index file */
157+ bool IsIndexFile;
158+
159 public:
160
161 // Specialized action members
162@@ -876,6 +884,7 @@
163 pkgAcquire::MethodConfig *Cnf);
164 virtual string DescURI() {return Desc.URI;};
165 virtual string HashSum() {return ExpectedHash.toStr(); };
166+ virtual string Custom600Headers();
167
168 /** \brief Create a new pkgAcqFile object.
169 *
170@@ -899,6 +908,8 @@
171 *
172 * \param DestFilename The filename+path the file is downloaded to.
173 *
174+ * \param IsIndexFile The file is considered a IndexFile and cache-control
175+ * headers like "cache-control: max-age=0" are send
176 *
177 * If DestFilename is empty, download to DestDir/<basename> if
178 * DestDir is non-empty, $CWD/<basename> otherwise. If
179@@ -908,7 +919,8 @@
180
181 pkgAcqFile(pkgAcquire *Owner, string URI, string Hash, unsigned long Size,
182 string Desc, string ShortDesc,
183- const string &DestDir="", const string &DestFilename="");
184+ const string &DestDir="", const string &DestFilename="",
185+ bool IsIndexFile=false);
186 };
187 /*}}}*/
188 /** @} */
189
190=== modified file 'apt-pkg/aptconfiguration.cc'
191--- apt-pkg/aptconfiguration.cc 2009-09-08 13:02:15 +0000
192+++ apt-pkg/aptconfiguration.cc 2010-06-11 16:24:33 +0000
193@@ -8,13 +8,18 @@
194 ##################################################################### */
195 /*}}}*/
196 // Include Files /*{{{*/
197-#include <apt-pkg/fileutl.h>
198 #include <apt-pkg/aptconfiguration.h>
199 #include <apt-pkg/configuration.h>
200-
201+#include <apt-pkg/fileutl.h>
202+#include <apt-pkg/macros.h>
203+#include <apt-pkg/strutl.h>
204+
205+#include <sys/types.h>
206+#include <dirent.h>
207+
208+#include <algorithm>
209+#include <string>
210 #include <vector>
211-#include <string>
212-#include <algorithm>
213 /*}}}*/
214 namespace APT {
215 // getCompressionTypes - Return Vector of usbale compressiontypes /*{{{*/
216@@ -87,4 +92,230 @@
217 return types;
218 }
219 /*}}}*/
220+// GetLanguages - Return Vector of Language Codes /*{{{*/
221+// ---------------------------------------------------------------------
222+/* return a vector of language codes in the prefered order.
223+ the special word "environment" will be replaced with the long and the short
224+ code of the local settings and it will be insured that this will not add
225+ duplicates. So in an german local the setting "environment, de_DE, en, de"
226+ will result in "de_DE, de, en".
227+ The special word "none" is the stopcode for the not-All code vector */
228+std::vector<std::string> const Configuration::getLanguages(bool const &All,
229+ bool const &Cached, char const ** const Locale) {
230+ using std::string;
231+
232+ // The detection is boring and has a lot of cornercases,
233+ // so we cache the results to calculated it only once.
234+ std::vector<string> static allCodes;
235+ std::vector<string> static codes;
236+
237+ // we have something in the cache
238+ if (codes.empty() == false || allCodes.empty() == false) {
239+ if (Cached == true) {
240+ if(All == true && allCodes.empty() == false)
241+ return allCodes;
242+ else
243+ return codes;
244+ } else {
245+ allCodes.clear();
246+ codes.clear();
247+ }
248+ }
249+
250+ // Include all Language codes we have a Translation file for in /var/lib/apt/lists
251+ // so they will be all included in the Cache.
252+ std::vector<string> builtin;
253+ DIR *D = opendir(_config->FindDir("Dir::State::lists").c_str());
254+ if (D != 0) {
255+ builtin.push_back("none");
256+ for (struct dirent *Ent = readdir(D); Ent != 0; Ent = readdir(D)) {
257+ string const name = Ent->d_name;
258+ size_t const foundDash = name.rfind("-");
259+ size_t const foundUnderscore = name.rfind("_");
260+ if (foundDash == string::npos || foundUnderscore == string::npos ||
261+ foundDash <= foundUnderscore ||
262+ name.substr(foundUnderscore+1, foundDash-(foundUnderscore+1)) != "Translation")
263+ continue;
264+ string const c = name.substr(foundDash+1);
265+ if (unlikely(c.empty() == true) || c == "en")
266+ continue;
267+ // Skip unusual files, like backups or that alike
268+ string::const_iterator s = c.begin();
269+ for (;s != c.end(); ++s) {
270+ if (isalpha(*s) == 0)
271+ break;
272+ }
273+ if (s != c.end())
274+ continue;
275+ if (std::find(builtin.begin(), builtin.end(), c) != builtin.end())
276+ continue;
277+ builtin.push_back(c);
278+ }
279+ }
280+
281+ // get the environment language codes: LC_MESSAGES (and later LANGUAGE)
282+ // we extract both, a long and a short code and then we will
283+ // check if we actually need both (rare) or if the short is enough
284+ string const envMsg = string(Locale == 0 ? std::setlocale(LC_MESSAGES, NULL) : *Locale);
285+ size_t const lenShort = (envMsg.find('_') != string::npos) ? envMsg.find('_') : 2;
286+ size_t const lenLong = (envMsg.find_first_of(".@") != string::npos) ? envMsg.find_first_of(".@") : (lenShort + 3);
287+
288+ string envLong = envMsg.substr(0,lenLong);
289+ string const envShort = envLong.substr(0,lenShort);
290+ bool envLongIncluded = true;
291+
292+ // first cornercase: LANG=C, so we use only "en" Translation
293+ if (envLong == "C") {
294+ codes.push_back("en");
295+ allCodes = codes;
296+ allCodes.insert(allCodes.end(), builtin.begin(), builtin.end());
297+ if (All == true)
298+ return allCodes;
299+ else
300+ return codes;
301+ }
302+
303+ // to save the servers from unneeded queries, we only try also long codes
304+ // for languages it is realistic to have a long code translation file…
305+ // TODO: Improve translation acquire system to drop them dynamic
306+ char const *needLong[] = { "cs", "en", "pt", "sv", "zh", NULL };
307+ if (envLong != envShort) {
308+ for (char const **l = needLong; *l != NULL; l++)
309+ if (envShort.compare(*l) == 0) {
310+ envLongIncluded = false;
311+ break;
312+ }
313+ }
314+
315+ // we don't add the long code, but we allow the user to do so
316+ if (envLongIncluded == true)
317+ envLong.clear();
318+
319+ // FIXME: Remove support for the old APT::Acquire::Translation
320+ // it was undocumented and so it should be not very widthly used
321+ string const oldAcquire = _config->Find("APT::Acquire::Translation","");
322+ if (oldAcquire.empty() == false && oldAcquire != "environment") {
323+ if (oldAcquire != "none")
324+ codes.push_back(oldAcquire);
325+ codes.push_back("en");
326+ allCodes = codes;
327+ for (std::vector<string>::const_iterator b = builtin.begin();
328+ b != builtin.end(); ++b)
329+ if (std::find(allCodes.begin(), allCodes.end(), *b) == allCodes.end())
330+ allCodes.push_back(*b);
331+ if (All == true)
332+ return allCodes;
333+ else
334+ return codes;
335+ }
336+
337+ // It is very likely we will need to environment codes later,
338+ // so let us generate them now from LC_MESSAGES and LANGUAGE
339+ std::vector<string> environment;
340+ // take care of LC_MESSAGES
341+ if (envLongIncluded == false)
342+ environment.push_back(envLong);
343+ environment.push_back(envShort);
344+ // take care of LANGUAGE
345+ const char *language_env = getenv("LANGUAGE") == 0 ? "" : getenv("LANGUAGE");
346+ string envLang = Locale == 0 ? language_env : *(Locale+1);
347+ if (envLang.empty() == false) {
348+ std::vector<string> env = ExplodeString(envLang,':');
349+ short addedLangs = 0; // add a maximum of 3 fallbacks from the environment
350+ for (std::vector<string>::const_iterator e = env.begin();
351+ e != env.end() && addedLangs < 3; ++e) {
352+ if (unlikely(e->empty() == true) || *e == "en")
353+ continue;
354+ if (*e == envLong || *e == envShort)
355+ continue;
356+ if (std::find(environment.begin(), environment.end(), *e) != environment.end())
357+ continue;
358+ if (e->find('_') != string::npos) {
359+ // Drop LongCodes here - ShortCodes are also included
360+ string const shorty = e->substr(0, e->find('_'));
361+ char const **n = needLong;
362+ for (; *n != NULL; ++n)
363+ if (shorty == *n)
364+ break;
365+ if (*n == NULL)
366+ continue;
367+ }
368+ ++addedLangs;
369+ environment.push_back(*e);
370+ }
371+ }
372+
373+ // Support settings like Acquire::Translation=none on the command line to
374+ // override the configuration settings vector of languages.
375+ string const forceLang = _config->Find("Acquire::Languages","");
376+ if (forceLang.empty() == false) {
377+ if (forceLang == "environment") {
378+ codes = environment;
379+ } else if (forceLang != "none")
380+ codes.push_back(forceLang);
381+ allCodes = codes;
382+ for (std::vector<string>::const_iterator b = builtin.begin();
383+ b != builtin.end(); ++b)
384+ if (std::find(allCodes.begin(), allCodes.end(), *b) == allCodes.end())
385+ allCodes.push_back(*b);
386+ if (All == true)
387+ return allCodes;
388+ else
389+ return codes;
390+ }
391+
392+ std::vector<string> const lang = _config->FindVector("Acquire::Languages");
393+ // the default setting -> "environment, en"
394+ if (lang.empty() == true) {
395+ codes = environment;
396+ if (envShort != "en")
397+ codes.push_back("en");
398+ allCodes = codes;
399+ for (std::vector<string>::const_iterator b = builtin.begin();
400+ b != builtin.end(); ++b)
401+ if (std::find(allCodes.begin(), allCodes.end(), *b) == allCodes.end())
402+ allCodes.push_back(*b);
403+ if (All == true)
404+ return allCodes;
405+ else
406+ return codes;
407+ }
408+
409+ // the configs define the order, so add the environment
410+ // then needed and ensure the codes are not listed twice.
411+ bool noneSeen = false;
412+ for (std::vector<string>::const_iterator l = lang.begin();
413+ l != lang.end(); l++) {
414+ if (*l == "environment") {
415+ for (std::vector<string>::const_iterator e = environment.begin();
416+ e != environment.end(); ++e) {
417+ if (std::find(allCodes.begin(), allCodes.end(), *e) != allCodes.end())
418+ continue;
419+ if (noneSeen == false)
420+ codes.push_back(*e);
421+ allCodes.push_back(*e);
422+ }
423+ continue;
424+ } else if (*l == "none") {
425+ noneSeen = true;
426+ continue;
427+ } else if (std::find(allCodes.begin(), allCodes.end(), *l) != allCodes.end())
428+ continue;
429+
430+ if (noneSeen == false)
431+ codes.push_back(*l);
432+ allCodes.push_back(*l);
433+ }
434+
435+ for (std::vector<string>::const_iterator b = builtin.begin();
436+ b != builtin.end(); ++b)
437+ if (std::find(allCodes.begin(), allCodes.end(), *b) == allCodes.end())
438+ allCodes.push_back(*b);
439+
440+ if (All == true)
441+ return allCodes;
442+ else
443+ return codes;
444+}
445+ /*}}}*/
446 }
447
448=== modified file 'apt-pkg/aptconfiguration.h'
449--- apt-pkg/aptconfiguration.h 2009-08-25 13:32:40 +0000
450+++ apt-pkg/aptconfiguration.h 2010-06-11 16:24:33 +0000
451@@ -39,6 +39,33 @@
452 * \return a vector of (all) Language Codes in the prefered usage order
453 */
454 std::vector<std::string> static const getCompressionTypes(bool const &Cached = true);
455+
456+ /** \brief Returns a vector of Language Codes
457+ *
458+ * Languages can be defined with their two or five chars long code.
459+ * This methods handles the various ways to set the prefered codes,
460+ * honors the environment and ensures that the codes are not listed twice.
461+ *
462+ * The special word "environment" will be replaced with the long and the short
463+ * code of the local settings and it will be insured that this will not add
464+ * duplicates. So in an german local the setting "environment, de_DE, en, de"
465+ * will result in "de_DE, de, en".
466+ *
467+ * Another special word is "none" which separates the prefered from all codes
468+ * in this setting. So setting and method can be used to get codes the user want
469+ * to see or to get all language codes APT (should) have Translations available.
470+ *
471+ * \param All return all codes or only codes for languages we want to use
472+ * \param Cached saves the result so we need to calculated it only once
473+ * this parameter should ony be used for testing purposes.
474+ * \param Locale don't get the locale from the system but use this one instead
475+ * this parameter should ony be used for testing purposes.
476+ *
477+ * \return a vector of (all) Language Codes in the prefered usage order
478+ */
479+ std::vector<std::string> static const getLanguages(bool const &All = false,
480+ bool const &Cached = true, char const ** const Locale = 0);
481+
482 /*}}}*/
483 };
484 /*}}}*/
485
486=== modified file 'apt-pkg/contrib/configuration.cc'
487--- apt-pkg/contrib/configuration.cc 2010-02-17 21:40:05 +0000
488+++ apt-pkg/contrib/configuration.cc 2010-06-11 16:24:33 +0000
489@@ -79,7 +79,7 @@
490 /* This will lookup a single item by name below another item. It is a
491 helper function for the main lookup function */
492 Configuration::Item *Configuration::Lookup(Item *Head,const char *S,
493- unsigned long Len,bool Create)
494+ unsigned long const &Len,bool const &Create)
495 {
496 int Res = 1;
497 Item *I = Head->Child;
498@@ -112,7 +112,7 @@
499 // ---------------------------------------------------------------------
500 /* This performs a fully scoped lookup of a given name, possibly creating
501 new items */
502-Configuration::Item *Configuration::Lookup(const char *Name,bool Create)
503+Configuration::Item *Configuration::Lookup(const char *Name,bool const &Create)
504 {
505 if (Name == 0)
506 return Root->Child;
507@@ -239,7 +239,7 @@
508 // Configuration::FindI - Find an integer value /*{{{*/
509 // ---------------------------------------------------------------------
510 /* */
511-int Configuration::FindI(const char *Name,int Default) const
512+int Configuration::FindI(const char *Name,int const &Default) const
513 {
514 const Item *Itm = Lookup(Name);
515 if (Itm == 0 || Itm->Value.empty() == true)
516@@ -256,7 +256,7 @@
517 // Configuration::FindB - Find a boolean type /*{{{*/
518 // ---------------------------------------------------------------------
519 /* */
520-bool Configuration::FindB(const char *Name,bool Default) const
521+bool Configuration::FindB(const char *Name,bool const &Default) const
522 {
523 const Item *Itm = Lookup(Name);
524 if (Itm == 0 || Itm->Value.empty() == true)
525@@ -332,7 +332,7 @@
526 // Configuration::Set - Set an integer value /*{{{*/
527 // ---------------------------------------------------------------------
528 /* */
529-void Configuration::Set(const char *Name,int Value)
530+void Configuration::Set(const char *Name,int const &Value)
531 {
532 Item *Itm = Lookup(Name,true);
533 if (Itm == 0)
534@@ -345,7 +345,7 @@
535 // Configuration::Clear - Clear an single value from a list /*{{{*/
536 // ---------------------------------------------------------------------
537 /* */
538-void Configuration::Clear(const string Name, int Value)
539+void Configuration::Clear(string const &Name, int const &Value)
540 {
541 char S[300];
542 snprintf(S,sizeof(S),"%i",Value);
543@@ -355,7 +355,7 @@
544 // Configuration::Clear - Clear an single value from a list /*{{{*/
545 // ---------------------------------------------------------------------
546 /* */
547-void Configuration::Clear(const string Name, string Value)
548+void Configuration::Clear(string const &Name, string const &Value)
549 {
550 Item *Top = Lookup(Name.c_str(),false);
551 if (Top == 0 || Top->Child == 0)
552@@ -386,7 +386,7 @@
553 // Configuration::Clear - Clear an entire tree /*{{{*/
554 // ---------------------------------------------------------------------
555 /* */
556-void Configuration::Clear(string Name)
557+void Configuration::Clear(string const &Name)
558 {
559 Item *Top = Lookup(Name.c_str(),false);
560 if (Top == 0)
561@@ -501,8 +501,8 @@
562 sections like 'zone "foo.org" { .. };' This causes each section to be
563 added in with a tag like "zone::foo.org" instead of being split
564 tag/value. AsSectional enables Sectional parsing.*/
565-bool ReadConfigFile(Configuration &Conf,const string &FName,bool AsSectional,
566- unsigned Depth)
567+bool ReadConfigFile(Configuration &Conf,const string &FName,bool const &AsSectional,
568+ unsigned const &Depth)
569 {
570 // Open the stream for reading
571 ifstream F(FName.c_str(),ios::in);
572@@ -830,7 +830,7 @@
573 // ---------------------------------------------------------------------
574 /* */
575 bool ReadConfigDir(Configuration &Conf,const string &Dir,
576- bool AsSectional, unsigned Depth)
577+ bool const &AsSectional, unsigned const &Depth)
578 {
579 vector<string> const List = GetListOfFilesInDir(Dir, "conf", true, true);
580
581
582=== modified file 'apt-pkg/contrib/configuration.h'
583--- apt-pkg/contrib/configuration.h 2009-09-23 15:26:43 +0000
584+++ apt-pkg/contrib/configuration.h 2010-06-11 16:24:33 +0000
585@@ -58,8 +58,8 @@
586 Item *Root;
587 bool ToFree;
588
589- Item *Lookup(Item *Head,const char *S,unsigned long Len,bool Create);
590- Item *Lookup(const char *Name,bool Create);
591+ Item *Lookup(Item *Head,const char *S,unsigned long const &Len,bool const &Create);
592+ Item *Lookup(const char *Name,const bool &Create);
593 inline const Item *Lookup(const char *Name) const
594 {
595 return ((Configuration *)this)->Lookup(Name,false);
596@@ -68,32 +68,33 @@
597 public:
598
599 string Find(const char *Name,const char *Default = 0) const;
600- string Find(const string Name,const char *Default = 0) const {return Find(Name.c_str(),Default);};
601+ string Find(string const &Name,const char *Default = 0) const {return Find(Name.c_str(),Default);};
602+ string Find(string const &Name, string const &Default) const {return Find(Name.c_str(),Default.c_str());};
603 string FindFile(const char *Name,const char *Default = 0) const;
604 string FindDir(const char *Name,const char *Default = 0) const;
605- std::vector<string> FindVector(const string &Name) const;
606+ std::vector<string> FindVector(string const &Name) const;
607 std::vector<string> FindVector(const char *Name) const;
608- int FindI(const char *Name,int Default = 0) const;
609- int FindI(const string Name,int Default = 0) const {return FindI(Name.c_str(),Default);};
610- bool FindB(const char *Name,bool Default = false) const;
611- bool FindB(const string Name,bool Default = false) const {return FindB(Name.c_str(),Default);};
612+ int FindI(const char *Name,int const &Default = 0) const;
613+ int FindI(string const &Name,int const &Default = 0) const {return FindI(Name.c_str(),Default);};
614+ bool FindB(const char *Name,bool const &Default = false) const;
615+ bool FindB(string const &Name,bool const &Default = false) const {return FindB(Name.c_str(),Default);};
616 string FindAny(const char *Name,const char *Default = 0) const;
617
618- inline void Set(const string Name,string Value) {Set(Name.c_str(),Value);};
619+ inline void Set(const string &Name,const string &Value) {Set(Name.c_str(),Value);};
620 void CndSet(const char *Name,const string &Value);
621 void Set(const char *Name,const string &Value);
622- void Set(const char *Name,int Value);
623+ void Set(const char *Name,const int &Value);
624
625- inline bool Exists(const string Name) const {return Exists(Name.c_str());};
626+ inline bool Exists(const string &Name) const {return Exists(Name.c_str());};
627 bool Exists(const char *Name) const;
628 bool ExistsAny(const char *Name) const;
629
630 // clear a whole tree
631- void Clear(const string Name);
632+ void Clear(const string &Name);
633
634 // remove a certain value from a list (e.g. the list of "APT::Keep-Fds")
635- void Clear(const string List, string Value);
636- void Clear(const string List, int Value);
637+ void Clear(string const &List, string const &Value);
638+ void Clear(string const &List, int const &Value);
639
640 inline const Item *Tree(const char *Name) const {return Lookup(Name);};
641
642@@ -108,11 +109,11 @@
643 extern Configuration *_config;
644
645 bool ReadConfigFile(Configuration &Conf,const string &FName,
646- bool AsSectional = false,
647- unsigned Depth = 0);
648+ bool const &AsSectional = false,
649+ unsigned const &Depth = 0);
650
651 bool ReadConfigDir(Configuration &Conf,const string &Dir,
652- bool AsSectional = false,
653- unsigned Depth = 0);
654+ bool const &AsSectional = false,
655+ unsigned const &Depth = 0);
656
657 #endif
658
659=== modified file 'apt-pkg/contrib/fileutl.cc'
660--- apt-pkg/contrib/fileutl.cc 2010-02-17 21:40:05 +0000
661+++ apt-pkg/contrib/fileutl.cc 2010-06-11 16:24:33 +0000
662@@ -11,6 +11,7 @@
663 Most of this source is placed in the Public Domain, do with it what
664 you will
665 It was originally written by Jason Gunthorpe <jgg@debian.org>.
666+ FileFd gzip support added by Martin Pitt <martin.pitt@canonical.com>
667
668 The exception is RunScripts() it is under the GPLv2
669
670@@ -603,6 +604,13 @@
671 {
672 case ReadOnly:
673 iFd = open(FileName.c_str(),O_RDONLY);
674+ if (iFd > 0 && FileName.compare(FileName.size()-3, 3, ".gz") == 0) {
675+ gz = gzdopen (iFd, "r");
676+ if (gz == NULL) {
677+ close (iFd);
678+ iFd = -1;
679+ }
680+ }
681 break;
682
683 case WriteEmpty:
684@@ -658,7 +666,10 @@
685
686 do
687 {
688- Res = read(iFd,To,Size);
689+ if (gz != NULL)
690+ Res = gzread(gz,To,Size);
691+ else
692+ Res = read(iFd,To,Size);
693 if (Res < 0 && errno == EINTR)
694 continue;
695 if (Res < 0)
696@@ -697,7 +708,10 @@
697 errno = 0;
698 do
699 {
700- Res = write(iFd,From,Size);
701+ if (gz != NULL)
702+ Res = gzwrite(gz,From,Size);
703+ else
704+ Res = write(iFd,From,Size);
705 if (Res < 0 && errno == EINTR)
706 continue;
707 if (Res < 0)
708@@ -723,7 +737,12 @@
709 /* */
710 bool FileFd::Seek(unsigned long To)
711 {
712- if (lseek(iFd,To,SEEK_SET) != (signed)To)
713+ int res;
714+ if (gz)
715+ res = gzseek(gz,To,SEEK_SET);
716+ else
717+ res = lseek(iFd,To,SEEK_SET);
718+ if (res != (signed)To)
719 {
720 Flags |= Fail;
721 return _error->Error("Unable to seek to %lu",To);
722@@ -737,7 +756,12 @@
723 /* */
724 bool FileFd::Skip(unsigned long Over)
725 {
726- if (lseek(iFd,Over,SEEK_CUR) < 0)
727+ int res;
728+ if (gz)
729+ res = gzseek(gz,Over,SEEK_CUR);
730+ else
731+ res = lseek(iFd,Over,SEEK_CUR);
732+ if (res < 0)
733 {
734 Flags |= Fail;
735 return _error->Error("Unable to seek ahead %lu",Over);
736@@ -751,6 +775,11 @@
737 /* */
738 bool FileFd::Truncate(unsigned long To)
739 {
740+ if (gz)
741+ {
742+ Flags |= Fail;
743+ return _error->Error("Truncating gzipped files is not implemented (%s)", FileName.c_str());
744+ }
745 if (ftruncate(iFd,To) != 0)
746 {
747 Flags |= Fail;
748@@ -765,7 +794,11 @@
749 /* */
750 unsigned long FileFd::Tell()
751 {
752- off_t Res = lseek(iFd,0,SEEK_CUR);
753+ off_t Res;
754+ if (gz)
755+ Res = gztell(gz);
756+ else
757+ Res = lseek(iFd,0,SEEK_CUR);
758 if (Res == (off_t)-1)
759 _error->Errno("lseek","Failed to determine the current file position");
760 return Res;
761@@ -776,6 +809,7 @@
762 /* */
763 unsigned long FileFd::Size()
764 {
765+ //TODO: For gz, do we need the actual file size here or the uncompressed length?
766 struct stat Buf;
767 if (fstat(iFd,&Buf) != 0)
768 return _error->Errno("fstat","Unable to determine the file size");
769@@ -789,9 +823,10 @@
770 {
771 bool Res = true;
772 if ((Flags & AutoClose) == AutoClose)
773- if (iFd >= 0 && close(iFd) != 0)
774+ if ((gz != NULL && gzclose(gz) != 0) || (gz == NULL && iFd > 0 && close(iFd) != 0))
775 Res &= _error->Errno("close",_("Problem closing the file"));
776 iFd = -1;
777+ gz = NULL;
778
779 if ((Flags & Fail) == Fail && (Flags & DelOnFail) == DelOnFail &&
780 FileName.empty() == false)
781
782=== modified file 'apt-pkg/contrib/fileutl.h'
783--- apt-pkg/contrib/fileutl.h 2010-02-17 21:40:05 +0000
784+++ apt-pkg/contrib/fileutl.h 2010-06-11 16:24:33 +0000
785@@ -25,6 +25,8 @@
786 #include <string>
787 #include <vector>
788
789+#include <zlib.h>
790+
791 using std::string;
792
793 class FileFd
794@@ -36,6 +38,7 @@
795 HitEof = (1<<3)};
796 unsigned long Flags;
797 string FileName;
798+ gzFile gz;
799
800 public:
801 enum OpenMode {ReadOnly,WriteEmpty,WriteExists,WriteAny,WriteTemp};
802@@ -69,12 +72,12 @@
803 inline string &Name() {return FileName;};
804
805 FileFd(string FileName,OpenMode Mode,unsigned long Perms = 0666) : iFd(-1),
806- Flags(0)
807+ Flags(0), gz(NULL)
808 {
809 Open(FileName,Mode,Perms);
810 };
811- FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose) {};
812- FileFd(int Fd,bool) : iFd(Fd), Flags(0) {};
813+ FileFd(int Fd = -1) : iFd(Fd), Flags(AutoClose), gz(NULL) {};
814+ FileFd(int Fd,bool) : iFd(Fd), Flags(0), gz(NULL) {};
815 virtual ~FileFd();
816 };
817
818
819=== modified file 'apt-pkg/contrib/mmap.cc'
820--- apt-pkg/contrib/mmap.cc 2009-08-24 11:30:05 +0000
821+++ apt-pkg/contrib/mmap.cc 2010-06-11 16:24:33 +0000
822@@ -140,8 +140,10 @@
823 // DynamicMMap::DynamicMMap - Constructor /*{{{*/
824 // ---------------------------------------------------------------------
825 /* */
826-DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace) :
827- MMap(F,Flags | NoImmMap), Fd(&F), WorkSpace(WorkSpace)
828+DynamicMMap::DynamicMMap(FileFd &F,unsigned long Flags,unsigned long const &Workspace,
829+ unsigned long const &Grow, unsigned long const &Limit) :
830+ MMap(F,Flags | NoImmMap), Fd(&F), WorkSpace(Workspace),
831+ GrowFactor(Grow), Limit(Limit)
832 {
833 if (_error->PendingError() == true)
834 return;
835@@ -165,32 +167,48 @@
836 /* We try here to use mmap to reserve some space - this is much more
837 cooler than the fallback solution to simply allocate a char array
838 and could come in handy later than we are able to grow such an mmap */
839-DynamicMMap::DynamicMMap(unsigned long Flags,unsigned long WorkSpace) :
840- MMap(Flags | NoImmMap | UnMapped), Fd(0), WorkSpace(WorkSpace)
841+DynamicMMap::DynamicMMap(unsigned long Flags,unsigned long const &WorkSpace,
842+ unsigned long const &Grow, unsigned long const &Limit) :
843+ MMap(Flags | NoImmMap | UnMapped), Fd(0), WorkSpace(WorkSpace),
844+ GrowFactor(Grow), Limit(Limit)
845 {
846- if (_error->PendingError() == true)
847- return;
848+ if (_error->PendingError() == true)
849+ return;
850+
851+ // disable Moveable if we don't grow
852+ if (Grow == 0)
853+ Flags &= ~Moveable;
854+
855+#ifndef __linux__
856+ // kfreebsd doesn't have mremap, so we use the fallback
857+ if ((Flags & Moveable) == Moveable)
858+ Flags |= Fallback;
859+#endif
860
861 #ifdef _POSIX_MAPPED_FILES
862- // Set the permissions.
863- int Prot = PROT_READ;
864- int Map = MAP_PRIVATE | MAP_ANONYMOUS;
865- if ((Flags & ReadOnly) != ReadOnly)
866- Prot |= PROT_WRITE;
867- if ((Flags & Public) == Public)
868- Map = MAP_SHARED | MAP_ANONYMOUS;
869-
870- // use anonymous mmap() to get the memory
871- Base = (unsigned char*) mmap(0, WorkSpace, Prot, Map, -1, 0);
872-
873- if(Base == MAP_FAILED)
874- _error->Errno("DynamicMMap",_("Couldn't make mmap of %lu bytes"),WorkSpace);
875-#else
876- // fallback to a static allocated space
877- Base = new unsigned char[WorkSpace];
878- memset(Base,0,WorkSpace);
879+ if ((Flags & Fallback) != Fallback) {
880+ // Set the permissions.
881+ int Prot = PROT_READ;
882+ int Map = MAP_PRIVATE | MAP_ANONYMOUS;
883+ if ((Flags & ReadOnly) != ReadOnly)
884+ Prot |= PROT_WRITE;
885+ if ((Flags & Public) == Public)
886+ Map = MAP_SHARED | MAP_ANONYMOUS;
887+
888+ // use anonymous mmap() to get the memory
889+ Base = (unsigned char*) mmap(0, WorkSpace, Prot, Map, -1, 0);
890+
891+ if(Base == MAP_FAILED)
892+ _error->Errno("DynamicMMap",_("Couldn't make mmap of %lu bytes"),WorkSpace);
893+
894+ iSize = 0;
895+ return;
896+ }
897 #endif
898- iSize = 0;
899+ // fallback to a static allocated space
900+ Base = new unsigned char[WorkSpace];
901+ memset(Base,0,WorkSpace);
902+ iSize = 0;
903 }
904 /*}}}*/
905 // DynamicMMap::~DynamicMMap - Destructor /*{{{*/
906@@ -311,30 +329,55 @@
907 /*}}}*/
908 // DynamicMMap::Grow - Grow the mmap /*{{{*/
909 // ---------------------------------------------------------------------
910-/* This method will try to grow the mmap we currently use. This doesn't
911- work most of the time because we can't move the mmap around in the
912- memory for now as this would require to adjust quite a lot of pointers
913- but why we should not at least try to grow it before we give up? */
914-bool DynamicMMap::Grow()
915-{
916+/* This method is a wrapper around different methods to (try to) grow
917+ a mmap (or our char[]-fallback). Encounterable environments:
918+ 1. Moveable + !Fallback + linux -> mremap with MREMAP_MAYMOVE
919+ 2. Moveable + !Fallback + !linux -> not possible (forbidden by constructor)
920+ 3. Moveable + Fallback -> realloc
921+ 4. !Moveable + !Fallback + linux -> mremap alone - which will fail in 99,9%
922+ 5. !Moveable + !Fallback + !linux -> not possible (forbidden by constructor)
923+ 6. !Moveable + Fallback -> not possible
924+ [ While Moveable and Fallback stands for the equally named flags and
925+ "linux" indicates a linux kernel instead of a freebsd kernel. ]
926+ So what you can see here is, that a MMAP which want to be growable need
927+ to be moveable to have a real chance but that this method will at least try
928+ the nearly impossible 4 to grow it before it finally give up: Never say never. */
929+bool DynamicMMap::Grow() {
930+ if (Limit != 0 && WorkSpace >= Limit)
931+ return _error->Error(_("The size of a MMap has already reached the defined limit of %lu bytes,"
932+ "abort the try to grow the MMap."), Limit);
933+
934+ unsigned long const newSize = WorkSpace + 1024*1024;
935+
936+ if(Fd != 0) {
937+ Fd->Seek(newSize - 1);
938+ char C = 0;
939+ Fd->Write(&C,sizeof(C));
940+ }
941+ if ((Flags & Fallback) != Fallback) {
942 #if defined(_POSIX_MAPPED_FILES) && defined(__linux__)
943- unsigned long newSize = WorkSpace + 1024*1024;
944-
945- if(Fd != 0)
946- {
947- Fd->Seek(newSize - 1);
948- char C = 0;
949- Fd->Write(&C,sizeof(C));
950- }
951-
952- Base = mremap(Base, WorkSpace, newSize, 0);
953- if(Base == MAP_FAILED)
954- return false;
955-
956- WorkSpace = newSize;
957- return true;
958+ #ifdef MREMAP_MAYMOVE
959+ if ((Flags & Moveable) == Moveable)
960+ Base = mremap(Base, WorkSpace, newSize, MREMAP_MAYMOVE);
961+ else
962+ #endif
963+ Base = mremap(Base, WorkSpace, newSize, 0);
964+
965+ if(Base == MAP_FAILED)
966+ return false;
967 #else
968- return false;
969+ return false;
970 #endif
971+ } else {
972+ if ((Flags & Moveable) != Moveable)
973+ return false;
974+
975+ Base = realloc(Base, newSize);
976+ if (Base == NULL)
977+ return false;
978+ }
979+
980+ WorkSpace = newSize;
981+ return true;
982 }
983 /*}}}*/
984
985=== modified file 'apt-pkg/contrib/mmap.h'
986--- apt-pkg/contrib/mmap.h 2009-07-30 15:34:48 +0000
987+++ apt-pkg/contrib/mmap.h 2010-06-11 16:24:33 +0000
988@@ -50,7 +50,7 @@
989 public:
990
991 enum OpenFlags {NoImmMap = (1<<0),Public = (1<<1),ReadOnly = (1<<2),
992- UnMapped = (1<<3)};
993+ UnMapped = (1<<3), Moveable = (1<<4), Fallback = (1 << 5)};
994
995 // Simple accessors
996 inline operator void *() {return Base;};
997@@ -82,6 +82,8 @@
998
999 FileFd *Fd;
1000 unsigned long WorkSpace;
1001+ unsigned long const GrowFactor;
1002+ unsigned long const Limit;
1003 Pool *Pools;
1004 unsigned int PoolCount;
1005
1006@@ -96,8 +98,10 @@
1007 inline unsigned long WriteString(const string &S) {return WriteString(S.c_str(),S.length());};
1008 void UsePools(Pool &P,unsigned int Count) {Pools = &P; PoolCount = Count;};
1009
1010- DynamicMMap(FileFd &F,unsigned long Flags,unsigned long WorkSpace = 2*1024*1024);
1011- DynamicMMap(unsigned long Flags,unsigned long WorkSpace = 2*1024*1024);
1012+ DynamicMMap(FileFd &F,unsigned long Flags,unsigned long const &WorkSpace = 2*1024*1024,
1013+ unsigned long const &Grow = 1024*1024, unsigned long const &Limit = 0);
1014+ DynamicMMap(unsigned long Flags,unsigned long const &WorkSpace = 2*1024*1024,
1015+ unsigned long const &Grow = 1024*1024, unsigned long const &Limit = 0);
1016 virtual ~DynamicMMap();
1017 };
1018
1019
1020=== modified file 'apt-pkg/contrib/strutl.cc'
1021--- apt-pkg/contrib/strutl.cc 2010-03-31 20:03:34 +0000
1022+++ apt-pkg/contrib/strutl.cc 2010-06-11 16:24:33 +0000
1023@@ -1008,6 +1008,24 @@
1024 return true;
1025 }
1026 /*}}}*/
1027+// ExplodeString - Split a string up into a vector /*{{{*/
1028+// ---------------------------------------------------------------------
1029+/* This can be used to split a given string up into a vector, so the
1030+ propose is the same as in the method above and this one is a bit slower
1031+ also, but the advantage is that we an iteratable vector */
1032+vector<string> ExplodeString(string const &haystack, char const &split)
1033+{
1034+ string::const_iterator start = haystack.begin();
1035+ string::const_iterator end = start;
1036+ vector<string> exploded;
1037+ do {
1038+ for (; end != haystack.end() && *end != split; ++end);
1039+ exploded.push_back(string(start, end));
1040+ start = end + 1;
1041+ } while (end != haystack.end() && (++end) != haystack.end());
1042+ return exploded;
1043+}
1044+ /*}}}*/
1045 // RegexChoice - Simple regex list/list matcher /*{{{*/
1046 // ---------------------------------------------------------------------
1047 /* */
1048
1049=== modified file 'apt-pkg/contrib/strutl.h'
1050--- apt-pkg/contrib/strutl.h 2010-03-31 20:03:34 +0000
1051+++ apt-pkg/contrib/strutl.h 2010-06-11 16:24:33 +0000
1052@@ -60,6 +60,7 @@
1053 bool Hex2Num(const string &Str,unsigned char *Num,unsigned int Length);
1054 bool TokSplitString(char Tok,char *Input,char **List,
1055 unsigned long ListMax);
1056+vector<string> ExplodeString(string const &haystack, char const &split);
1057 void ioprintf(ostream &out,const char *format,...) APT_FORMAT2;
1058 void strprintf(string &out,const char *format,...) APT_FORMAT2;
1059 char *safe_snprintf(char *Buffer,char *End,const char *Format,...) APT_FORMAT3;
1060
1061=== modified file 'apt-pkg/deb/debindexfile.cc'
1062--- apt-pkg/deb/debindexfile.cc 2010-03-08 16:46:43 +0000
1063+++ apt-pkg/deb/debindexfile.cc 2010-06-11 16:24:33 +0000
1064@@ -106,8 +106,14 @@
1065 /* */
1066 inline string debSourcesIndex::IndexFile(const char *Type) const
1067 {
1068- return URItoFileName(IndexURI(Type));
1069+ string s = URItoFileName(IndexURI(Type));
1070+ string sgzip = s + ".gz";
1071+ if (!FileExists(s) && FileExists(sgzip))
1072+ return sgzip;
1073+ else
1074+ return s;
1075 }
1076+
1077 string debSourcesIndex::IndexURI(const char *Type) const
1078 {
1079 string Res;
1080@@ -213,7 +219,12 @@
1081 /* */
1082 inline string debPackagesIndex::IndexFile(const char *Type) const
1083 {
1084- return _config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type));
1085+ string s =_config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type));
1086+ string sgzip = s + ".gz";
1087+ if (!FileExists(s) && FileExists(sgzip))
1088+ return sgzip;
1089+ else
1090+ return s;
1091 }
1092 string debPackagesIndex::IndexURI(const char *Type) const
1093 {
1094@@ -329,17 +340,23 @@
1095 // TranslationsIndex::debTranslationsIndex - Contructor /*{{{*/
1096 // ---------------------------------------------------------------------
1097 /* */
1098-debTranslationsIndex::debTranslationsIndex(string URI,string Dist,string Section) :
1099- pkgIndexFile(true), URI(URI), Dist(Dist), Section(Section)
1100-{
1101-}
1102+debTranslationsIndex::debTranslationsIndex(string URI,string Dist,string Section,
1103+ char const * const Translation) :
1104+ pkgIndexFile(true), URI(URI), Dist(Dist), Section(Section),
1105+ Language(Translation)
1106+{}
1107 /*}}}*/
1108 // TranslationIndex::Trans* - Return the URI to the translation files /*{{{*/
1109 // ---------------------------------------------------------------------
1110 /* */
1111 inline string debTranslationsIndex::IndexFile(const char *Type) const
1112 {
1113- return _config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type));
1114+ string s =_config->FindDir("Dir::State::lists") + URItoFileName(IndexURI(Type));
1115+ string sgzip = s + ".gz";
1116+ if (!FileExists(s) && FileExists(sgzip))
1117+ return sgzip;
1118+ else
1119+ return s;
1120 }
1121 string debTranslationsIndex::IndexURI(const char *Type) const
1122 {
1123@@ -365,8 +382,8 @@
1124 bool debTranslationsIndex::GetIndexes(pkgAcquire *Owner) const
1125 {
1126 if (TranslationsAvailable()) {
1127- string TranslationFile = "Translation-" + LanguageCode();
1128- new pkgAcqIndexTrans(Owner, IndexURI(LanguageCode().c_str()),
1129+ string const TranslationFile = string("Translation-").append(Language);
1130+ new pkgAcqIndexTrans(Owner, IndexURI(Language),
1131 Info(TranslationFile.c_str()),
1132 TranslationFile);
1133 }
1134@@ -385,7 +402,7 @@
1135 snprintf(S,sizeof(S),"%s",Info(TranslationFile().c_str()).c_str());
1136 else
1137 snprintf(S,sizeof(S),"%s (%s)",Info(TranslationFile().c_str()).c_str(),
1138- IndexFile(LanguageCode().c_str()).c_str());
1139+ IndexFile(Language).c_str());
1140 return S;
1141 }
1142 /*}}}*/
1143@@ -407,20 +424,20 @@
1144 return Info;
1145 }
1146 /*}}}*/
1147-bool debTranslationsIndex::HasPackages() const
1148+bool debTranslationsIndex::HasPackages() const /*{{{*/
1149 {
1150 if(!TranslationsAvailable())
1151 return false;
1152
1153- return FileExists(IndexFile(LanguageCode().c_str()));
1154+ return FileExists(IndexFile(Language));
1155 }
1156-
1157+ /*}}}*/
1158 // TranslationsIndex::Exists - Check if the index is available /*{{{*/
1159 // ---------------------------------------------------------------------
1160 /* */
1161 bool debTranslationsIndex::Exists() const
1162 {
1163- return FileExists(IndexFile(LanguageCode().c_str()));
1164+ return FileExists(IndexFile(Language));
1165 }
1166 /*}}}*/
1167 // TranslationsIndex::Size - Return the size of the index /*{{{*/
1168@@ -429,7 +446,7 @@
1169 unsigned long debTranslationsIndex::Size() const
1170 {
1171 struct stat S;
1172- if (stat(IndexFile(LanguageCode().c_str()).c_str(),&S) != 0)
1173+ if (stat(IndexFile(Language).c_str(),&S) != 0)
1174 return 0;
1175 return S.st_size;
1176 }
1177@@ -440,7 +457,7 @@
1178 bool debTranslationsIndex::Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const
1179 {
1180 // Check the translation file, if in use
1181- string TranslationFile = IndexFile(LanguageCode().c_str());
1182+ string TranslationFile = IndexFile(Language);
1183 if (TranslationsAvailable() && FileExists(TranslationFile))
1184 {
1185 FileFd Trans(TranslationFile,FileFd::ReadOnly);
1186@@ -472,7 +489,7 @@
1187 /* */
1188 pkgCache::PkgFileIterator debTranslationsIndex::FindInCache(pkgCache &Cache) const
1189 {
1190- string FileName = IndexFile(LanguageCode().c_str());
1191+ string FileName = IndexFile(Language);
1192
1193 pkgCache::PkgFileIterator File = Cache.FileBegin();
1194 for (; File.end() == false; File++)
1195
1196=== modified file 'apt-pkg/deb/debindexfile.h'
1197--- apt-pkg/deb/debindexfile.h 2007-06-14 09:59:13 +0000
1198+++ apt-pkg/deb/debindexfile.h 2010-06-11 16:24:33 +0000
1199@@ -77,12 +77,13 @@
1200 string URI;
1201 string Dist;
1202 string Section;
1203+ const char * const Language;
1204
1205 string Info(const char *Type) const;
1206 string IndexFile(const char *Type) const;
1207 string IndexURI(const char *Type) const;
1208
1209- inline string TranslationFile() const {return "Translation-" + LanguageCode();};
1210+ inline string TranslationFile() const {return string("Translation-").append(Language);};
1211
1212 public:
1213
1214@@ -99,7 +100,7 @@
1215 virtual bool Merge(pkgCacheGenerator &Gen,OpProgress &Prog) const;
1216 virtual pkgCache::PkgFileIterator FindInCache(pkgCache &Cache) const;
1217
1218- debTranslationsIndex(string URI,string Dist,string Section);
1219+ debTranslationsIndex(string URI,string Dist,string Section, char const * const Language);
1220 };
1221
1222 class debSourcesIndex : public pkgIndexFile
1223
1224=== modified file 'apt-pkg/deb/deblistparser.cc'
1225--- apt-pkg/deb/deblistparser.cc 2010-02-17 21:40:05 +0000
1226+++ apt-pkg/deb/deblistparser.cc 2010-06-11 16:24:33 +0000
1227@@ -13,6 +13,7 @@
1228 #include <apt-pkg/deblistparser.h>
1229 #include <apt-pkg/error.h>
1230 #include <apt-pkg/configuration.h>
1231+#include <apt-pkg/aptconfiguration.h>
1232 #include <apt-pkg/strutl.h>
1233 #include <apt-pkg/crc-16.h>
1234 #include <apt-pkg/md5.h>
1235@@ -128,10 +129,11 @@
1236 only describe package properties */
1237 string debListParser::Description()
1238 {
1239- if (DescriptionLanguage().empty())
1240+ string const lang = DescriptionLanguage();
1241+ if (lang.empty())
1242 return Section.FindS("Description");
1243 else
1244- return Section.FindS(("Description-" + pkgIndexFile::LanguageCode()).c_str());
1245+ return Section.FindS(string("Description-").append(lang).c_str());
1246 }
1247 /*}}}*/
1248 // ListParser::DescriptionLanguage - Return the description lang string /*{{{*/
1249@@ -141,7 +143,16 @@
1250 assumed to describe original description. */
1251 string debListParser::DescriptionLanguage()
1252 {
1253- return Section.FindS("Description").empty() ? pkgIndexFile::LanguageCode() : "";
1254+ if (Section.FindS("Description").empty() == false)
1255+ return "";
1256+
1257+ std::vector<string> const lang = APT::Configuration::getLanguages();
1258+ for (std::vector<string>::const_iterator l = lang.begin();
1259+ l != lang.end(); l++)
1260+ if (Section.FindS(string("Description-").append(*l).c_str()).empty() == false)
1261+ return *l;
1262+
1263+ return "";
1264 }
1265 /*}}}*/
1266 // ListParser::Description - Return the description_md5 MD5SumValue /*{{{*/
1267@@ -383,7 +394,8 @@
1268 bit by bit. */
1269 const char *debListParser::ParseDepends(const char *Start,const char *Stop,
1270 string &Package,string &Ver,
1271- unsigned int &Op, bool ParseArchFlags)
1272+ unsigned int &Op, bool const &ParseArchFlags,
1273+ bool const &StripMultiArch)
1274 {
1275 // Strip off leading space
1276 for (;Start != Stop && isspace(*Start) != 0; Start++);
1277@@ -402,7 +414,14 @@
1278
1279 // Stash the package name
1280 Package.assign(Start,I - Start);
1281-
1282+
1283+ // We don't want to confuse library users which can't handle MultiArch
1284+ if (StripMultiArch == true) {
1285+ size_t const found = Package.rfind(':');
1286+ if (found != string::npos)
1287+ Package = Package.substr(0,found);
1288+ }
1289+
1290 // Skip white space to the '('
1291 for (;I != Stop && isspace(*I) != 0 ; I++);
1292
1293
1294=== modified file 'apt-pkg/deb/deblistparser.h'
1295--- apt-pkg/deb/deblistparser.h 2006-12-14 11:39:29 +0000
1296+++ apt-pkg/deb/deblistparser.h 2010-06-11 16:24:33 +0000
1297@@ -64,7 +64,8 @@
1298
1299 static const char *ParseDepends(const char *Start,const char *Stop,
1300 string &Package,string &Ver,unsigned int &Op,
1301- bool ParseArchFlags = false);
1302+ bool const &ParseArchFlags = false,
1303+ bool const &StripMultiArch = false);
1304 static const char *ConvertRelation(const char *I,unsigned int &Op);
1305
1306 debListParser(FileFd *File);
1307
1308=== modified file 'apt-pkg/deb/debmetaindex.cc'
1309--- apt-pkg/deb/debmetaindex.cc 2009-07-30 15:34:48 +0000
1310+++ apt-pkg/deb/debmetaindex.cc 2010-06-11 16:24:33 +0000
1311@@ -5,6 +5,7 @@
1312 #include <apt-pkg/strutl.h>
1313 #include <apt-pkg/acquire-item.h>
1314 #include <apt-pkg/configuration.h>
1315+#include <apt-pkg/aptconfiguration.h>
1316 #include <apt-pkg/error.h>
1317
1318 using namespace std;
1319@@ -170,13 +171,20 @@
1320 new indexRecords (Dist));
1321
1322 // Queue the translations
1323+ std::vector<std::string> const lang = APT::Configuration::getLanguages(true);
1324 for (vector<const debSectionEntry *>::const_iterator I = SectionEntries.begin();
1325 I != SectionEntries.end(); I++) {
1326
1327 if((*I)->IsSrc)
1328 continue;
1329- debTranslationsIndex i = debTranslationsIndex(URI,Dist,(*I)->Section);
1330- i.GetIndexes(Owner);
1331+
1332+ for (vector<string>::const_iterator l = lang.begin();
1333+ l != lang.end(); l++)
1334+ {
1335+ if (*l == "none") continue;
1336+ debTranslationsIndex i = debTranslationsIndex(URI,Dist,(*I)->Section,(*l).c_str());
1337+ i.GetIndexes(Owner);
1338+ }
1339 }
1340
1341 return true;
1342@@ -202,6 +210,7 @@
1343 return Indexes;
1344
1345 Indexes = new vector <pkgIndexFile*>;
1346+ std::vector<std::string> const lang = APT::Configuration::getLanguages(true);
1347 for (vector<const debSectionEntry *>::const_iterator I = SectionEntries.begin();
1348 I != SectionEntries.end(); I++) {
1349 if ((*I)->IsSrc)
1350@@ -209,7 +218,12 @@
1351 else
1352 {
1353 Indexes->push_back(new debPackagesIndex (URI, Dist, (*I)->Section, IsTrusted()));
1354- Indexes->push_back(new debTranslationsIndex(URI, Dist, (*I)->Section));
1355+
1356+ for (vector<string>::const_iterator l = lang.begin();
1357+ l != lang.end(); l++) {
1358+ if (*l == "none") continue;
1359+ Indexes->push_back(new debTranslationsIndex(URI,Dist,(*I)->Section,(*l).c_str()));
1360+ }
1361 }
1362 }
1363
1364
1365=== modified file 'apt-pkg/deb/debrecords.cc'
1366--- apt-pkg/deb/debrecords.cc 2010-05-05 07:58:23 +0000
1367+++ apt-pkg/deb/debrecords.cc 2010-06-11 16:24:33 +0000
1368@@ -11,6 +11,7 @@
1369 #include <apt-pkg/debrecords.h>
1370 #include <apt-pkg/strutl.h>
1371 #include <apt-pkg/error.h>
1372+#include <apt-pkg/aptconfiguration.h>
1373 #include <langinfo.h>
1374 /*}}}*/
1375
1376@@ -110,13 +111,18 @@
1377 string debRecordParser::LongDesc()
1378 {
1379 string orig, dest;
1380- char *codeset = nl_langinfo(CODESET);
1381
1382 if (!Section.FindS("Description").empty())
1383 orig = Section.FindS("Description").c_str();
1384- else
1385- orig = Section.FindS(("Description-" + pkgIndexFile::LanguageCode()).c_str()).c_str();
1386+ else
1387+ {
1388+ vector<string> const lang = APT::Configuration::getLanguages();
1389+ for (vector<string>::const_iterator l = lang.begin();
1390+ orig.empty() && l != lang.end(); l++)
1391+ orig = Section.FindS(string("Description-").append(*l).c_str());
1392+ }
1393
1394+ char const * const codeset = nl_langinfo(CODESET);
1395 if (strcmp(codeset,"UTF-8") != 0) {
1396 UTF8ToCodeset(codeset, orig, &dest);
1397 orig = dest;
1398
1399=== modified file 'apt-pkg/deb/debsrcrecords.cc'
1400--- apt-pkg/deb/debsrcrecords.cc 2009-12-18 16:08:45 +0000
1401+++ apt-pkg/deb/debsrcrecords.cc 2010-06-11 16:24:33 +0000
1402@@ -54,7 +54,8 @@
1403 package/version records representing the build dependency. The returned
1404 array need not be freed and will be reused by the next call to this
1405 function */
1406-bool debSrcRecordParser::BuildDepends(vector<pkgSrcRecords::Parser::BuildDepRec> &BuildDeps, bool ArchOnly)
1407+bool debSrcRecordParser::BuildDepends(vector<pkgSrcRecords::Parser::BuildDepRec> &BuildDeps,
1408+ bool const &ArchOnly, bool const &StripMultiArch)
1409 {
1410 unsigned int I;
1411 const char *Start, *Stop;
1412@@ -77,7 +78,7 @@
1413 while (1)
1414 {
1415 Start = debListParser::ParseDepends(Start, Stop,
1416- rec.Package,rec.Version,rec.Op,true);
1417+ rec.Package,rec.Version,rec.Op,true, StripMultiArch);
1418
1419 if (Start == 0)
1420 return _error->Error("Problem parsing dependency: %s", fields[I]);
1421
1422=== modified file 'apt-pkg/deb/debsrcrecords.h'
1423--- apt-pkg/deb/debsrcrecords.h 2009-07-30 15:34:48 +0000
1424+++ apt-pkg/deb/debsrcrecords.h 2010-06-11 16:24:33 +0000
1425@@ -30,14 +30,14 @@
1426
1427 virtual bool Restart() {return Tags.Jump(Sect,0);};
1428 virtual bool Step() {iOffset = Tags.Offset(); return Tags.Step(Sect);};
1429- virtual bool Jump(unsigned long Off) {iOffset = Off; return Tags.Jump(Sect,Off);};
1430+ virtual bool Jump(unsigned long const &Off) {iOffset = Off; return Tags.Jump(Sect,Off);};
1431
1432 virtual string Package() const {return Sect.FindS("Package");};
1433 virtual string Version() const {return Sect.FindS("Version");};
1434 virtual string Maintainer() const {return Sect.FindS("Maintainer");};
1435 virtual string Section() const {return Sect.FindS("Section");};
1436 virtual const char **Binaries();
1437- virtual bool BuildDepends(vector<BuildDepRec> &BuildDeps, bool ArchOnly);
1438+ virtual bool BuildDepends(vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true);
1439 virtual unsigned long Offset() {return iOffset;};
1440 virtual string AsStr()
1441 {
1442@@ -47,7 +47,7 @@
1443 };
1444 virtual bool Files(vector<pkgSrcRecords::File> &F);
1445
1446- debSrcRecordParser(string File,pkgIndexFile const *Index)
1447+ debSrcRecordParser(string const &File,pkgIndexFile const *Index)
1448 : Parser(Index), Fd(File,FileFd::ReadOnly), Tags(&Fd,102400),
1449 Buffer(0), BufSize(0) {}
1450 ~debSrcRecordParser();
1451
1452=== modified file 'apt-pkg/deb/dpkgpm.cc'
1453--- apt-pkg/deb/dpkgpm.cc 2010-05-30 18:44:11 +0000
1454+++ apt-pkg/deb/dpkgpm.cc 2010-06-11 16:24:33 +0000
1455@@ -1082,7 +1082,7 @@
1456 }
1457 // wait for input or output here
1458 FD_ZERO(&rfds);
1459- if (!stdin_is_dev_null)
1460+ if (master >= 0 && !stdin_is_dev_null)
1461 FD_SET(0, &rfds);
1462 FD_SET(_dpkgin, &rfds);
1463 if(master >= 0)
1464
1465=== modified file 'apt-pkg/depcache.cc'
1466--- apt-pkg/depcache.cc 2009-12-18 16:08:45 +0000
1467+++ apt-pkg/depcache.cc 2010-06-11 16:24:33 +0000
1468@@ -186,16 +186,16 @@
1469 if(reason > 0)
1470 PkgState[pkg->ID].Flags |= Flag::Auto;
1471 if(debug_autoremove)
1472- std::cout << "Auto-Installed : " << pkgname << std::endl;
1473+ std::clog << "Auto-Installed : " << pkgname << std::endl;
1474 amt+=section.size();
1475 if(Prog != NULL)
1476 Prog->OverallProgress(amt, file_size, 1,
1477 _("Reading state information"));
1478 }
1479- if(Prog != NULL)
1480- Prog->OverallProgress(file_size, file_size, 1,
1481- _("Reading state information"));
1482 }
1483+ if(Prog != NULL)
1484+ Prog->OverallProgress(file_size, file_size, 1,
1485+ _("Reading state information"));
1486 }
1487
1488 return true;
1489@@ -1511,7 +1511,7 @@
1490 {
1491 state.Garbage=true;
1492 if(debug_autoremove)
1493- std::cout << "Garbage: " << p.Name() << std::endl;
1494+ std::clog << "Garbage: " << p.Name() << std::endl;
1495 }
1496 }
1497
1498
1499=== modified file 'apt-pkg/indexfile.cc'
1500--- apt-pkg/indexfile.cc 2010-05-05 08:16:02 +0000
1501+++ apt-pkg/indexfile.cc 2010-06-11 16:24:33 +0000
1502@@ -8,9 +8,9 @@
1503 ##################################################################### */
1504 /*}}}*/
1505 // Include Files /*{{{*/
1506-#include <apt-pkg/configuration.h>
1507 #include <apt-pkg/indexfile.h>
1508 #include <apt-pkg/error.h>
1509+#include <apt-pkg/aptconfiguration.h>
1510
1511 #include <clocale>
1512 #include <cstring>
1513@@ -66,34 +66,23 @@
1514 return string();
1515 }
1516 /*}}}*/
1517-// IndexFile::TranslationsAvailable - Check if will use Translation /*{{{*/
1518+// IndexFile::TranslationsAvailable - Check if will use Translation /*{{{*/
1519 // ---------------------------------------------------------------------
1520 /* */
1521-bool pkgIndexFile::TranslationsAvailable()
1522-{
1523- const string Translation = _config->Find("APT::Acquire::Translation");
1524-
1525- if (Translation.compare("none") != 0)
1526- return CheckLanguageCode(LanguageCode().c_str());
1527- else
1528- return false;
1529+bool pkgIndexFile::TranslationsAvailable() {
1530+ return (APT::Configuration::getLanguages().empty() != true);
1531 }
1532 /*}}}*/
1533-// IndexFile::CheckLanguageCode - Check the Language Code /*{{{*/
1534+// IndexFile::CheckLanguageCode - Check the Language Code /*{{{*/
1535 // ---------------------------------------------------------------------
1536-/* */
1537-/* common cases: de_DE, de_DE@euro, de_DE.UTF-8, de_DE.UTF-8@euro,
1538- de_DE.ISO8859-1, tig_ER
1539- more in /etc/gdm/locale.conf
1540-*/
1541-
1542-bool pkgIndexFile::CheckLanguageCode(const char *Lang)
1543+/* No intern need for this method anymore as the check for correctness
1544+ is already done in getLanguages(). Note also that this check is
1545+ rather bad (doesn't take three character like ast into account).
1546+ TODO: Remove method with next API break */
1547+__attribute__ ((deprecated)) bool pkgIndexFile::CheckLanguageCode(const char *Lang)
1548 {
1549- if (strlen(Lang) == 2 ||
1550- strlen(Lang) == 3 ||
1551- (strlen(Lang) > 3 && Lang[3] == '_') ||
1552- (strlen(Lang) == 5 && Lang[2] == '_'))
1553- return true;
1554+ if (strlen(Lang) == 2 || (strlen(Lang) == 5 && Lang[2] == '_'))
1555+ return true;
1556
1557 if (strcmp(Lang,"C") != 0)
1558 _error->Warning("Wrong language code %s", Lang);
1559@@ -101,8 +90,9 @@
1560 return false;
1561 }
1562 /*}}}*/
1563-// IndexFile::LanguageCode - Return the Language Code /*{{{*/
1564+// IndexFile::LanguageCode - Return the Language Code /*{{{*/
1565 // ---------------------------------------------------------------------
1566+<<<<<<< TREE
1567 /* return the language code */
1568 string pkgIndexFile::LanguageCode()
1569 {
1570@@ -133,5 +123,14 @@
1571 }
1572 else
1573 return Translation;
1574+=======
1575+/* As we have now possibly more than one LanguageCode this method is
1576+ supersided by a) private classmembers or b) getLanguages().
1577+ TODO: Remove method with next API break */
1578+__attribute__ ((deprecated)) string pkgIndexFile::LanguageCode() {
1579+ if (TranslationsAvailable() == false)
1580+ return "";
1581+ return APT::Configuration::getLanguages()[0];
1582+>>>>>>> MERGE-SOURCE
1583 }
1584 /*}}}*/
1585
1586=== modified file 'apt-pkg/init.h'
1587--- apt-pkg/init.h 2009-12-18 16:08:45 +0000
1588+++ apt-pkg/init.h 2010-06-11 16:24:33 +0000
1589@@ -22,7 +22,7 @@
1590 // Non-ABI-Breaks should only increase RELEASE number.
1591 // See also buildlib/libversion.mak
1592 #define APT_PKG_MAJOR 4
1593-#define APT_PKG_MINOR 8
1594+#define APT_PKG_MINOR 9
1595 #define APT_PKG_RELEASE 0
1596
1597 extern const char *pkgVersion;
1598
1599=== modified file 'apt-pkg/makefile'
1600--- apt-pkg/makefile 2010-02-17 21:40:05 +0000
1601+++ apt-pkg/makefile 2010-06-11 16:24:33 +0000
1602@@ -14,7 +14,7 @@
1603 LIBRARY=apt-pkg
1604 MAJOR=$(LIBAPTPKG_MAJOR)
1605 MINOR=$(LIBAPTPKG_RELEASE)
1606-SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl
1607+SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl -lz
1608 APT_DOMAIN:=libapt-pkg$(LIBAPTPKG_MAJOR)
1609
1610 # Source code for the contributed non-core things
1611
1612=== modified file 'apt-pkg/pkgcache.cc'
1613--- apt-pkg/pkgcache.cc 2010-02-17 21:40:05 +0000
1614+++ apt-pkg/pkgcache.cc 2010-06-11 16:24:33 +0000
1615@@ -22,11 +22,12 @@
1616 // Include Files /*{{{*/
1617 #include <apt-pkg/pkgcache.h>
1618 #include <apt-pkg/policy.h>
1619-#include <apt-pkg/indexfile.h>
1620 #include <apt-pkg/version.h>
1621 #include <apt-pkg/error.h>
1622 #include <apt-pkg/strutl.h>
1623 #include <apt-pkg/configuration.h>
1624+#include <apt-pkg/aptconfiguration.h>
1625+#include <apt-pkg/macros.h>
1626
1627 #include <apti18n.h>
1628
1629@@ -673,14 +674,22 @@
1630 */
1631 pkgCache::DescIterator pkgCache::VerIterator::TranslatedDescription() const
1632 {
1633- pkgCache::DescIterator DescDefault = DescriptionList();
1634- pkgCache::DescIterator Desc = DescDefault;
1635- for (; Desc.end() == false; Desc++)
1636- if (pkgIndexFile::LanguageCode() == Desc.LanguageCode())
1637- break;
1638- if (Desc.end() == true)
1639- Desc = DescDefault;
1640- return Desc;
1641+ std::vector<string> const lang = APT::Configuration::getLanguages();
1642+ for (std::vector<string>::const_iterator l = lang.begin();
1643+ l != lang.end(); l++)
1644+ {
1645+ pkgCache::DescIterator DescDefault = DescriptionList();
1646+ pkgCache::DescIterator Desc = DescDefault;
1647+
1648+ for (; Desc.end() == false; Desc++)
1649+ if (*l == Desc.LanguageCode())
1650+ break;
1651+ if (Desc.end() == true)
1652+ Desc = DescDefault;
1653+ return Desc;
1654+ }
1655+
1656+ return DescriptionList();
1657 };
1658
1659 /*}}}*/
1660
1661=== modified file 'apt-pkg/pkgcache.h'
1662--- apt-pkg/pkgcache.h 2009-07-30 15:34:48 +0000
1663+++ apt-pkg/pkgcache.h 2010-06-11 16:24:33 +0000
1664@@ -245,7 +245,7 @@
1665 map_ptrloc File; // PackageFile
1666 map_ptrloc NextFile; // PkgVerFile
1667 map_ptrloc Offset; // File offset
1668- unsigned short Size;
1669+ unsigned long Size;
1670 };
1671 /*}}}*/
1672 struct pkgCache::DescFile /*{{{*/
1673@@ -253,7 +253,7 @@
1674 map_ptrloc File; // PackageFile
1675 map_ptrloc NextFile; // PkgVerFile
1676 map_ptrloc Offset; // File offset
1677- unsigned short Size;
1678+ unsigned long Size;
1679 };
1680 /*}}}*/
1681 struct pkgCache::Version /*{{{*/
1682
1683=== modified file 'apt-pkg/policy.cc'
1684--- apt-pkg/policy.cc 2010-02-17 21:40:05 +0000
1685+++ apt-pkg/policy.cc 2010-06-11 16:24:33 +0000
1686@@ -106,7 +106,7 @@
1687
1688 if (_config->FindB("Debug::pkgPolicy",false) == true)
1689 for (pkgCache::PkgFileIterator F = Cache->FileBegin(); F != Cache->FileEnd(); F++)
1690- cout << "Prio of " << F.FileName() << ' ' << PFPriority[F->ID] << endl;
1691+ std::clog << "Prio of " << F.FileName() << ' ' << PFPriority[F->ID] << std::endl;
1692
1693 return true;
1694 }
1695@@ -121,6 +121,10 @@
1696 signed Max = GetPriority(Pkg);
1697 pkgCache::VerIterator Pref = GetMatch(Pkg);
1698
1699+ // Alternatives in case we can not find our package pin (Bug#512318).
1700+ signed MaxAlt = 0;
1701+ pkgCache::VerIterator PrefAlt;
1702+
1703 // no package = no candidate version
1704 if (Pkg.end() == true)
1705 return Pref;
1706@@ -159,6 +163,11 @@
1707 {
1708 Pref = Ver;
1709 Max = Prio;
1710+ }
1711+ if (Prio > MaxAlt)
1712+ {
1713+ PrefAlt = Ver;
1714+ MaxAlt = Prio;
1715 }
1716 }
1717
1718@@ -175,6 +184,11 @@
1719 break;
1720 }
1721 }
1722+ // If we do not find our candidate, use the one with the highest pin.
1723+ // This means that if there is a version available with pin > 0; there
1724+ // will always be a candidate (Closes: #512318)
1725+ if (!Pref.IsGood() && MaxAlt > 0)
1726+ Pref = PrefAlt;
1727 return Pref;
1728 }
1729 /*}}}*/
1730
1731=== modified file 'apt-pkg/srcrecords.cc'
1732--- apt-pkg/srcrecords.cc 2007-06-14 09:59:13 +0000
1733+++ apt-pkg/srcrecords.cc 2010-06-11 16:24:33 +0000
1734@@ -77,7 +77,7 @@
1735 /* This searches on both source package names and output binary names and
1736 returns the first found. A 'cursor' like system is used to allow this
1737 function to be called multiple times to get successive entries */
1738-pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool SrcOnly)
1739+pkgSrcRecords::Parser *pkgSrcRecords::Find(const char *Package,bool const &SrcOnly)
1740 {
1741 if (Current == Files.end())
1742 return 0;
1743@@ -116,7 +116,7 @@
1744 // Parser::BuildDepType - Convert a build dep to a string /*{{{*/
1745 // ---------------------------------------------------------------------
1746 /* */
1747-const char *pkgSrcRecords::Parser::BuildDepType(unsigned char Type)
1748+const char *pkgSrcRecords::Parser::BuildDepType(unsigned char const &Type)
1749 {
1750 const char *fields[] = {"Build-Depends",
1751 "Build-Depends-Indep",
1752
1753=== modified file 'apt-pkg/srcrecords.h'
1754--- apt-pkg/srcrecords.h 2007-06-14 09:59:13 +0000
1755+++ apt-pkg/srcrecords.h 2010-06-11 16:24:33 +0000
1756@@ -59,7 +59,7 @@
1757
1758 virtual bool Restart() = 0;
1759 virtual bool Step() = 0;
1760- virtual bool Jump(unsigned long Off) = 0;
1761+ virtual bool Jump(unsigned long const &Off) = 0;
1762 virtual unsigned long Offset() = 0;
1763 virtual string AsStr() = 0;
1764
1765@@ -69,8 +69,8 @@
1766 virtual string Section() const = 0;
1767 virtual const char **Binaries() = 0; // Ownership does not transfer
1768
1769- virtual bool BuildDepends(vector<BuildDepRec> &BuildDeps, bool ArchOnly) = 0;
1770- static const char *BuildDepType(unsigned char Type);
1771+ virtual bool BuildDepends(vector<BuildDepRec> &BuildDeps, bool const &ArchOnly, bool const &StripMultiArch = true) = 0;
1772+ static const char *BuildDepType(unsigned char const &Type);
1773
1774 virtual bool Files(vector<pkgSrcRecords::File> &F) = 0;
1775
1776@@ -90,7 +90,7 @@
1777 bool Restart();
1778
1779 // Locate a package by name
1780- Parser *Find(const char *Package,bool SrcOnly = false);
1781+ Parser *Find(const char *Package,bool const &SrcOnly = false);
1782
1783 pkgSrcRecords(pkgSourceList &List);
1784 ~pkgSrcRecords();
1785
1786=== modified file 'buildlib/apti18n.h.in'
1787--- buildlib/apti18n.h.in 2008-11-24 10:16:13 +0000
1788+++ buildlib/apti18n.h.in 2010-06-11 16:24:33 +0000
1789@@ -11,8 +11,10 @@
1790 # include <libintl.h>
1791 # ifdef APT_DOMAIN
1792 # define _(x) dgettext(APT_DOMAIN,x)
1793+# define P_(msg,plural,n) dngettext(APT_DOMAIN,msg,plural,n)
1794 # else
1795 # define _(x) gettext(x)
1796+# define P_(msg,plural,n) ngettext(msg,plural,n)
1797 # endif
1798 # define N_(x) x
1799 #else
1800@@ -21,5 +23,6 @@
1801 # define textdomain(a)
1802 # define bindtextdomain(a, b)
1803 # define _(x) x
1804+# define P_(msg,plural,n) (n == 1 ? msg : plural)
1805 # define N_(x) x
1806 #endif
1807
1808=== modified file 'buildlib/library.mak'
1809--- buildlib/library.mak 2009-12-12 00:54:33 +0000
1810+++ buildlib/library.mak 2010-06-11 16:24:33 +0000
1811@@ -16,11 +16,11 @@
1812 # See defaults.mak for information about LOCAL
1813
1814 # Some local definitions
1815-LOCAL := lib$(LIBRARY)$(LIBEXT).so.$(MAJOR).$(MINOR)
1816+LOCAL := lib$(LIBRARY).so.$(MAJOR).$(MINOR)
1817 $(LOCAL)-OBJS := $(addprefix $(OBJ)/,$(addsuffix .opic,$(notdir $(basename $(SOURCE)))))
1818 $(LOCAL)-DEP := $(addprefix $(DEP)/,$(addsuffix .opic.d,$(notdir $(basename $(SOURCE)))))
1819 $(LOCAL)-HEADERS := $(addprefix $(INCLUDE)/,$(HEADERS))
1820-$(LOCAL)-SONAME := lib$(LIBRARY)$(LIBEXT).so.$(MAJOR)
1821+$(LOCAL)-SONAME := lib$(LIBRARY).so.$(MAJOR)
1822 $(LOCAL)-SLIBS := $(SLIBS)
1823 $(LOCAL)-LIBRARY := $(LIBRARY)
1824
1825@@ -29,7 +29,7 @@
1826
1827 # Install the command hooks
1828 headers: $($(LOCAL)-HEADERS)
1829-library: $(LIB)/lib$(LIBRARY).so $(LIB)/lib$(LIBRARY)$(LIBEXT).so.$(MAJOR)
1830+library: $(LIB)/lib$(LIBRARY).so $(LIB)/lib$(LIBRARY).so.$(MAJOR)
1831 clean: clean/$(LOCAL)
1832 veryclean: veryclean/$(LOCAL)
1833
1834@@ -44,14 +44,14 @@
1835 -rm -f $($(@F)-HEADERS) $(LIB)/lib$($(@F)-LIBRARY)*.so*
1836
1837 # Build rules for the two symlinks
1838-.PHONY: $(LIB)/lib$(LIBRARY)$(LIBEXT).so.$(MAJOR) $(LIB)/lib$(LIBRARY).so
1839-$(LIB)/lib$(LIBRARY)$(LIBEXT).so.$(MAJOR): $(LIB)/lib$(LIBRARY)$(LIBEXT).so.$(MAJOR).$(MINOR)
1840+.PHONY: $(LIB)/lib$(LIBRARY).so.$(MAJOR) $(LIB)/lib$(LIBRARY).so
1841+$(LIB)/lib$(LIBRARY).so.$(MAJOR): $(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR)
1842 ln -sf $(<F) $@
1843-$(LIB)/lib$(LIBRARY).so: $(LIB)/lib$(LIBRARY)$(LIBEXT).so.$(MAJOR).$(MINOR)
1844+$(LIB)/lib$(LIBRARY).so: $(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR)
1845 ln -sf $(<F) $@
1846
1847 # The binary build rule
1848-$(LIB)/lib$(LIBRARY)$(LIBEXT).so.$(MAJOR).$(MINOR): $($(LOCAL)-HEADERS) $($(LOCAL)-OBJS)
1849+$(LIB)/lib$(LIBRARY).so.$(MAJOR).$(MINOR): $($(LOCAL)-HEADERS) $($(LOCAL)-OBJS)
1850 -rm -f $(LIB)/lib$($(@F)-LIBRARY)*.so* 2> /dev/null
1851 echo Building shared library $@
1852 $(CXX) $(CXXFLAGS) $(LDFLAGS) $(PICFLAGS) $(LFLAGS) $(LFLAGS_SO)\
1853
1854=== modified file 'buildlib/libversion.mak'
1855--- buildlib/libversion.mak 2009-12-22 09:01:18 +0000
1856+++ buildlib/libversion.mak 2010-06-11 16:24:33 +0000
1857@@ -12,6 +12,7 @@
1858 # The versionnumber is extracted from apt-inst/makefile - see also there.
1859 LIBAPTINST_MAJOR=$(shell egrep '^MAJOR=' $(BASE)/apt-inst/makefile |cut -d '=' -f 2)
1860 LIBAPTINST_MINOR=$(shell egrep '^MINOR=' $(BASE)/apt-inst/makefile |cut -d '=' -f 2)
1861+<<<<<<< TREE
1862
1863 # FIXME: In previous releases this lovely variable includes
1864 # the detected libc and libdc++ version. As this is bogus we
1865@@ -19,3 +20,5 @@
1866 # And we don't want to do this now. So we hardcode a value here,
1867 # and drop it later on (hopefully as fast as possible).
1868 LIBEXT=-libc6.10-6
1869+=======
1870+>>>>>>> MERGE-SOURCE
1871
1872=== modified file 'cmdline/apt-cache.cc'
1873--- cmdline/apt-cache.cc 2010-02-17 21:40:05 +0000
1874+++ cmdline/apt-cache.cc 2010-06-11 16:24:33 +0000
1875@@ -1500,15 +1500,26 @@
1876 if (_error->PendingError() == true)
1877 return false;
1878
1879+ unsigned found = 0;
1880 for (const char **I = CmdL.FileList + 1; *I != 0; I++)
1881 {
1882 SrcRecs.Restart();
1883
1884 pkgSrcRecords::Parser *Parse;
1885- while ((Parse = SrcRecs.Find(*I,false)) != 0)
1886- cout << Parse->AsStr() << endl;;
1887+ unsigned found_this = 0;
1888+ while ((Parse = SrcRecs.Find(*I,false)) != 0) {
1889+ cout << Parse->AsStr() << endl;;
1890+ found++;
1891+ found_this++;
1892+ }
1893+ if (found_this == 0) {
1894+ _error->Warning(_("Unable to locate package %s"),*I);
1895+ continue;
1896+ }
1897 }
1898- return true;
1899+ if (found > 0)
1900+ return true;
1901+ return _error->Error(_("No packages found"));
1902 }
1903 /*}}}*/
1904 // Policy - Show the results of the preferences file /*{{{*/
1905
1906=== modified file 'cmdline/apt-get.cc'
1907--- cmdline/apt-get.cc 2010-04-08 19:14:03 +0000
1908+++ cmdline/apt-get.cc 2010-06-11 16:24:33 +0000
1909@@ -1520,10 +1520,9 @@
1910 // only show stuff in the list that is not yet marked for removal
1911 if(Cache[Pkg].Delete() == false)
1912 {
1913+ ++autoRemoveCount;
1914 // we don't need to fill the strings if we don't need them
1915- if (smallList == true)
1916- ++autoRemoveCount;
1917- else
1918+ if (smallList == false)
1919 {
1920 autoremovelist += string(Pkg.Name()) + " ";
1921 autoremoveversions += string(Cache[Pkg].CandVersion) + "\n";
1922@@ -1536,9 +1535,12 @@
1923 if (doAutoRemove == false && (autoremovelist.empty() == false || autoRemoveCount != 0))
1924 {
1925 if (smallList == false)
1926- ShowList(c1out, _("The following packages were automatically installed and are no longer required:"), autoremovelist, autoremoveversions);
1927+ ShowList(c1out, P_("The following package is automatically installed and is no longer required:",
1928+ "The following packages were automatically installed and are no longer required:",
1929+ autoRemoveCount), autoremovelist, autoremoveversions);
1930 else
1931- ioprintf(c1out, _("%lu packages were automatically installed and are no longer required.\n"), autoRemoveCount);
1932+ ioprintf(c1out, P_("%lu package was automatically installed and is no longer required.\n",
1933+ "%lu packages were automatically installed and are no longer required.\n", autoRemoveCount), autoRemoveCount);
1934 c1out << _("Use 'apt-get autoremove' to remove them.") << std::endl;
1935 }
1936 // Now see if we had destroyed anything (if we had done anything)
1937
1938=== modified file 'cmdline/apt-key'
1939--- cmdline/apt-key 2010-02-17 21:40:05 +0000
1940+++ cmdline/apt-key 2010-06-11 16:24:33 +0000
1941@@ -143,6 +143,7 @@
1942 else
1943 #echo "generate list"
1944 TRUSTEDFILE="/etc/apt/trusted.gpg"
1945+ eval $(apt-config shell TRUSTEDFILE Apt::GPGV::TrustedKeyring)
1946 if [ -r "$TRUSTEDFILE" ]; then
1947 GPG="$GPG --keyring $TRUSTEDFILE"
1948 fi
1949
1950=== modified file 'cmdline/apt-mark'
1951--- cmdline/apt-mark 2010-03-12 09:16:11 +0000
1952+++ cmdline/apt-mark 2010-06-11 16:24:33 +0000
1953@@ -19,10 +19,10 @@
1954 if not os.path.exists(STATE_FILE):
1955 return
1956 auto = set()
1957- tagfile = apt_pkg.ParseTagFile(open(STATE_FILE))
1958- while tagfile.Step():
1959- pkgname = tagfile.Section.get("Package")
1960- autoInst = tagfile.Section.get("Auto-Installed")
1961+ tagfile = apt_pkg.TagFile(open(STATE_FILE))
1962+ for section in tagfile:
1963+ pkgname = section.get("Package")
1964+ autoInst = section.get("Auto-Installed")
1965 if int(autoInst):
1966 auto.add(pkgname)
1967 print "\n".join(sorted(auto))
1968@@ -33,24 +33,24 @@
1969 # open the statefile
1970 if os.path.exists(STATE_FILE):
1971 try:
1972- tagfile = apt_pkg.ParseTagFile(open(STATE_FILE))
1973+ tagfile = apt_pkg.TagFile(open(STATE_FILE))
1974 outfile = open(STATE_FILE+".tmp","w")
1975 except IOError, msg:
1976 print "%s, are you root?" % (msg)
1977 sys.exit(1)
1978- while tagfile.Step():
1979- pkgname = tagfile.Section.get("Package")
1980- autoInst = tagfile.Section.get("Auto-Installed")
1981+ for section in tagfile:
1982+ pkgname = section.get("Package")
1983+ autoInst = section.get("Auto-Installed")
1984 if pkgname in pkgs:
1985 if options.verbose:
1986 print "changing %s to %s" % (pkgname,action)
1987- newsec = apt_pkg.RewriteSection(tagfile.Section,
1988+ newsec = apt_pkg.rewrite_section(section,
1989 [],
1990 [ ("Auto-Installed",str(action)) ])
1991 pkgs.remove(pkgname)
1992 outfile.write(newsec+"\n")
1993 else:
1994- outfile.write(str(tagfile.Section)+"\n")
1995+ outfile.write(str(section)+"\n")
1996 if action == 1:
1997 for pkgname in pkgs:
1998 if options.verbose:
1999@@ -78,7 +78,7 @@
2000
2001 # get the state-file
2002 if not options.filename:
2003- STATE_FILE = apt_pkg.Config.FindDir("Dir::State") + "extended_states"
2004+ STATE_FILE = apt_pkg.config.find_dir("Dir::State") + "extended_states"
2005 else:
2006 STATE_FILE=options.filename
2007
2008
2009=== modified file 'configure.in'
2010--- configure.in 2010-02-17 21:40:05 +0000
2011+++ configure.in 2010-06-11 16:24:33 +0000
2012@@ -18,7 +18,11 @@
2013 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
2014
2015 dnl -- SET THIS TO THE RELEASE VERSION --
2016+<<<<<<< TREE
2017 AC_DEFINE_UNQUOTED(VERSION,"0.7.25ubuntu1")
2018+=======
2019+AC_DEFINE_UNQUOTED(VERSION,"0.7.25.4")
2020+>>>>>>> MERGE-SOURCE
2021 PACKAGE="apt"
2022 AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE")
2023 AC_SUBST(PACKAGE)
2024@@ -83,6 +87,10 @@
2025
2026 AC_SUBST(BDBLIB)
2027
2028+AC_CHECK_LIB(z, gzopen,
2029+ [AC_CHECK_HEADER(zlib.h, [], AC_MSG_ERROR([failed: zlib.h not found]))],
2030+ AC_MSG_ERROR([failed: Need libz]))
2031+
2032 dnl Converts the ARCH to be something singular for this general CPU family
2033 dnl This is often the dpkg architecture string.
2034 dnl First check against the full canonical canoncial-system-type in $target
2035
2036=== modified file 'debian/NEWS'
2037--- debian/NEWS 2009-11-24 11:26:07 +0000
2038+++ debian/NEWS 2010-06-11 16:24:33 +0000
2039@@ -1,8 +1,15 @@
2040+apt (0.7.26~exp3) experimental; urgency=low
2041+
2042+ * apt-ftparchive now reads the standard configuration files in
2043+ /etc/apt/apt.conf and /etc/apt/apt.conf.d.
2044+
2045+ -- Julian Andres Klode <jak@debian.org> Fri, 26 Mar 2010 15:34:16 +0100
2046+
2047 apt (0.7.24) unstable; urgency=low
2048
2049 * Already included in the last version but now with better documentation
2050 is the possibility to add/prefer different compression types while
2051- downloading archive informations, which can decrease the time needed for
2052+ downloading archive information, which can decrease the time needed for
2053 update on slow machines. See apt.conf (5) manpage for details.
2054 * APT manages his manpage translations now with po4a, thanks to Nicolas
2055 François and Kurasawa Nozomu, who also provide the ja translation.
2056
2057=== modified file 'debian/changelog'
2058--- debian/changelog 2010-06-09 10:04:54 +0000
2059+++ debian/changelog 2010-06-11 16:24:33 +0000
2060@@ -1,3 +1,4 @@
2061+<<<<<<< TREE
2062 apt (0.7.25.3ubuntu10) maverick; urgency=low
2063
2064 [ Michael Vogt ]
2065@@ -78,6 +79,150 @@
2066 - fix memory leaks in error conditions in DoSource()
2067 * apt-pkg/deb/dpkgpm.cc:
2068 - fix error message construction in OpenLog()
2069+=======
2070+apt (0.7.26~exp5) UNRELEASED; urgency=low
2071+
2072+ [ Christian Perrier ]
2073+ * Slovak translation update. Closes: #581159
2074+ * Italian translation update. Closes: #581742
2075+
2076+ [ Martin Pitt ]
2077+ * debian/rules:
2078+ - Make DEB_BUILD_OPTIONS=noopt actually work by passing the right
2079+ CXXFLAGS.
2080+ * apt-pkg/contrib/fileutl.{h,cc}:
2081+ - Add support for transparent reading of gzipped files.
2082+ - Link against zlib (in apt-pkg/makefile) and add zlib build dependency.
2083+ - [Weak internal ABI BREAK] This changes the behaviour of FileFd for
2084+ reading gzipped files.
2085+ * configure.in:
2086+ - Check for zlib library and headers.
2087+ * apt-pkg/deb/debindexfile.cc:
2088+ - If we do not find uncompressed package/source/translation indexes, look
2089+ for gzip compressed ones.
2090+ * apt-pkg/acquire-item.cc:
2091+ - If the Acquire::GzipIndexes option is true and we download a gzipped
2092+ index file, keep it as it is (and rename to .gz) instead of
2093+ uncompressing it.
2094+ * doc/apt.conf.5.xml:
2095+ - Document the new Acquire::GzipIndexes option.
2096+ * doc/po/apt-doc.pot, doc/po/de.po:
2097+ - German translation of new Acquire::GzipIndexes option.
2098+ * Add test/test-indexes.sh:
2099+ - Test behaviour of index retrieval and usage, in particular with
2100+ uncompressed and gzip compressed indexes.
2101+
2102+ -- Christian Perrier <bubulle@debian.org> Tue, 11 May 2010 19:52:00 +0200
2103+
2104+apt (0.7.26~exp4) unstable; urgency=low
2105+
2106+ * [ Abi break ] apt-pkg/acquire-item.{cc,h}:
2107+ - add "IsIndexFile" to constructor of pkgAcqFile so that it sends
2108+ the right cache control headers
2109+ * apt-pkg/depcache.cc:
2110+ - fix incorrect std::cout usage for debug output
2111+ * test/libapt/getlanguages_test.cc:
2112+ - Add test for Esperanto that has nocounty associated with them
2113+ (LP: #560956)
2114+ * apt-pkg/deb/debrecords.cc:
2115+ - fix max tag buffer size (LP: #545336, closes: #578959)
2116+ * debian/rules:
2117+ - install html doxygen in libapt-pkg-doc as well
2118+
2119+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 04 May 2010 09:55:08 +0200
2120+
2121+apt (0.7.26~exp3) UNRELEASED; urgency=low
2122+
2123+ [ Christian Perrier ]
2124+ * German translation update. Closes: #571037
2125+ * Spanish manpages translation update. Closes: #573293
2126+ * Dutch translation update. Closes: #573946
2127+ * Polish manpages translation update. Closes: #574558
2128+ * Add "manpages-pl (<< 20060617-3~)" to avoid file conflicts with
2129+ that package that was providing some manpages for APT utilities.
2130+
2131+ [ Julian Andres Klode ]
2132+ * cmdline/apt-cache.cc:
2133+ - Change behavior of showsrc to match the one of show (Closes: #512046).
2134+ * cmdline/apt-key:
2135+ - Honor Apt::GPGV::TrustedKeyring (Closes: #316390)
2136+ * cmdline/apt-mark:
2137+ - Use the new python-apt API (and conflict with python-apt << 0.7.93.2).
2138+ * apt-inst/contrib/arfile.h:
2139+ - Add public ARArchive::Members() which returns the list of members.
2140+ * apt-pkg/policy.cc:
2141+ - Always return a candidate if there is at least one version pinned > 0
2142+ (Closes: #512318)
2143+ * ftparchive/apt-ftparchive.cc:
2144+ - Read default configuration (Closes: #383257)
2145+ * debian/rules:
2146+ - Fix the libraries name to be e.g. libapt-pkg4.9 instead of
2147+ libapt-pkg-4.9.
2148+
2149+ [ Michael Vogt ]
2150+ * apt-pkg/deb/dpkgpm.cc:
2151+ - fix backgrounding when dpkg runs (closes: #486222)
2152+ * cmdline/apt-mark:
2153+ - show error on incorrect aguments (LP: #517917), thanks to
2154+ Torsten Spindler
2155+ * cmdline/apt-get.cc:
2156+ - if apt-get source foo=version or foo/distro can not be found,
2157+ error out (LP: #502641)
2158+ * apt-pkg/packagemanager.cc:
2159+ - better debug output
2160+ * doc/examples/configure-index:
2161+ - add missing Debug::pkgPackageManager option
2162+
2163+ -- Christian Perrier <bubulle@debian.org> Wed, 24 Feb 2010 22:13:50 +0100
2164+
2165+apt (0.7.26~exp2) experimental; urgency=low
2166+
2167+ * fix crash when LANGUAGE is not set
2168+
2169+ -- Michael Vogt <mvo@debian.org> Thu, 18 Feb 2010 22:07:23 +0100
2170+
2171+apt (0.7.26~exp1) experimental; urgency=low
2172+
2173+ [ David Kalnischkies ]
2174+ * [BREAK] add possibility to download and use multiply
2175+ Translation files, configurable with Acquire::Translation
2176+ (Closes: #444222, #448216, #550564)
2177+ * Ignore :qualifiers after package name in build dependencies
2178+ for now as long we don't understand them (Closes: #558103)
2179+ * apt-pkg/contrib/mmap.{cc,h}:
2180+ - extend it to have a growable flag - unused now but maybe...
2181+ * apt-pkg/pkgcache.h:
2182+ - use long instead of short for {Ver,Desc}File size,
2183+ patch from Víctor Manuel Jáquez Leal, thanks! (Closes: #538917)
2184+ * apt-pkg/acquire-item.cc:
2185+ - allow also to skip the last patch if target is reached,
2186+ thanks Bernhard R. Link! (Closes: #545699)
2187+ * ftparchive/writer.{cc,h}:
2188+ - add --arch option for packages and contents commands
2189+ - if an arch is given accept only *_all.deb and *_arch.deb instead
2190+ of *.deb. Thanks Stephan Bosch for the patch! (Closes: #319710)
2191+ - add APT::FTPArchive::AlwaysStat to disable the too aggressive
2192+ caching if versions are build multiply times (not recommend)
2193+ Patch by Christoph Goehre, thanks! (Closes: #463260)
2194+ * apt-pkg/deb/dpkgpm.cc:
2195+ - stdin redirected to /dev/null takes all CPU (Closes: #569488)
2196+ Thanks to Aurelien Jarno for providing (again) a patch!
2197+ * buildlib/apti18n.h.in, po/makefile:
2198+ - add ngettext support with P_()
2199+ * aptconfiguration.cc:
2200+ - include all existing Translation files in the Cache (Closes: 564137)
2201+ * debian/control:
2202+ - update with no changes to debian policy 3.8.4
2203+ * doc/apt_preferences.5.xml:
2204+ - explicitly warn against careless use (Closes: #567669)
2205+ * debian/rules:
2206+ - remove creation of empty dir /usr/share/apt
2207+ * doc/apt-cdrom.8.xml:
2208+ - fix typo spotted by lintian: proc(c)eed
2209+
2210+ [ Ivan Masár ]
2211+ * Slovak translation update. Closes: #568294
2212+>>>>>>> MERGE-SOURCE
2213
2214 -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 26 Mar 2010 16:57:49 +0100
2215
2216@@ -92,9 +237,23 @@
2217 apt (0.7.25.3ubuntu2) lucid; urgency=low
2218
2219 [ Michael Vogt ]
2220+<<<<<<< TREE
2221+=======
2222+ * [BREAK] merged lp:~mvo/apt/history
2223+ - this writes a /var/log/apt/history tagfile that contains details
2224+ from the transaction (complements term.log)
2225+ * methods/http.cc:
2226+ - add cache-control headers even if no cache is given to allow
2227+ adding options for intercepting proxies
2228+ - add Acquire::http::ProxyAutoDetect configuration that
2229+ can be used to call a external helper to figure out the
2230+ proxy configuration and return it to apt via stdout
2231+ (this is a step towards WPAD and zeroconf/avahi support)
2232+>>>>>>> MERGE-SOURCE
2233 * abicheck/
2234 - add new abitest tester using the ABI Compliance Checker from
2235 http://ispras.linuxfoundation.org/index.php/ABI_compliance_checker
2236+<<<<<<< TREE
2237 * debian/apt.conf.autoremove:
2238 - add "oldlibs" to the APT::Never-MarkAuto-Sections as its used
2239 for transitional packages
2240@@ -118,12 +277,15 @@
2241 From that point on gnome-control-center will have to warn if
2242 the user makes changes to the proxy settings and does not apply
2243 them system wide
2244+=======
2245+>>>>>>> MERGE-SOURCE
2246
2247 [ Robert Collins ]
2248 * Change the package index Info methods to allow apt-cache policy to be
2249 useful when using several different archives on the same host.
2250 (Closes: #329814, LP: #22354)
2251
2252+<<<<<<< TREE
2253 -- Michael Vogt <michael.vogt@ubuntu.com> Fri, 12 Mar 2010 23:10:52 +0100
2254
2255 apt (0.7.25.3ubuntu1) lucid; urgency=low
2256@@ -140,6 +302,9 @@
2257 * Slovak translation update. Closes: #568294
2258
2259 -- Michael Vogt <michael.vogt@ubuntu.com> Wed, 17 Feb 2010 23:33:32 +0100
2260+=======
2261+ -- Michael Vogt <mvo@debian.org> Thu, 18 Feb 2010 16:11:39 +0100
2262+>>>>>>> MERGE-SOURCE
2263
2264 apt (0.7.25.3) unstable; urgency=low
2265
2266
2267=== modified file 'debian/control'
2268--- debian/control 2010-04-22 08:57:37 +0000
2269+++ debian/control 2010-06-11 16:24:33 +0000
2270@@ -6,16 +6,31 @@
2271 Uploaders: Michael Vogt <mvo@debian.org>, Otavio Salvador <otavio@debian.org>,
2272 Christian Perrier <bubulle@debian.org>, Daniel Burrows <dburrows@debian.org>,
2273 Luca Bruno <lethalman88@gmail.com>, Julian Andres Klode <jak@debian.org>
2274+<<<<<<< TREE
2275 Standards-Version: 3.8.3
2276 Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), debiandoc-sgml, xsltproc, docbook-xsl, po4a (>= 0.34-2), autotools-dev, intltool
2277 Vcs-Bzr: https://code.launchpad.net/~ubuntu-core-dev/apt/ubuntu
2278+=======
2279+Standards-Version: 3.8.4
2280+Build-Depends: debhelper (>= 5.0), libdb-dev, gettext (>= 0.12), libcurl4-gnutls-dev | libcurl3-gnutls-dev (>= 7.15.5), zlib1g-dev | libz-dev, debiandoc-sgml, xsltproc, docbook-xsl, po4a (>= 0.34-2), autotools-dev
2281+Vcs-Bzr: http://bzr.debian.org/apt/debian-sid/
2282+>>>>>>> MERGE-SOURCE
2283
2284 Package: apt
2285 Architecture: any
2286+<<<<<<< TREE
2287 Depends: ${shlibs:Depends}, ${misc:Depends}
2288 Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7)
2289+=======
2290+Depends: ${shlibs:Depends}, debian-archive-keyring, ${misc:Depends}
2291+Replaces: libapt-pkg-doc (<< 0.3.7), libapt-pkg-dev (<< 0.3.7), manpages-pl (<< 20060617-3~)
2292+>>>>>>> MERGE-SOURCE
2293 Provides: ${libapt-pkg:provides}
2294+<<<<<<< TREE
2295 Recommends: ubuntu-keyring
2296+=======
2297+Conflicts: python-apt (<< 0.7.93.2~)
2298+>>>>>>> MERGE-SOURCE
2299 Suggests: aptitude | synaptic | wajig, dpkg-dev, apt-doc, bzip2, lzma, python-apt
2300 Description: Advanced front-end for dpkg
2301 This is Debian's next generation front-end for the dpkg package manager.
2302@@ -53,6 +68,9 @@
2303 Description: Documentation for APT development
2304 This package contains documentation for development of the APT
2305 Debian package manipulation program and its libraries.
2306+ .
2307+ This includes the source code documentation generated by doxygen
2308+ in html format.
2309
2310 Package: apt-utils
2311 Architecture: any
2312
2313=== modified file 'debian/rules'
2314--- debian/rules 2010-06-09 08:49:00 +0000
2315+++ debian/rules 2010-06-11 16:24:33 +0000
2316@@ -78,21 +78,21 @@
2317 include buildlib/libversion.mak
2318
2319 # Determine which package we should provide in the control files
2320-LIBAPTPKG_PROVIDE=libapt-pkg$(LIBEXT)-$(LIBAPTPKG_MAJOR)
2321-LIBAPTINST_PROVIDE=libapt-inst$(LIBEXT)-$(LIBAPTINST_MAJOR)
2322+LIBAPTPKG_PROVIDE=libapt-pkg$(LIBAPTPKG_MAJOR)
2323+LIBAPTINST_PROVIDE=libapt-inst$(LIBAPTINST_MAJOR)
2324
2325 debian/shlibs.local: apt-pkg/makefile
2326 # We have 3 shlibs.local files.. One for 'apt', one for 'apt-utils' and
2327 # one for the rest of the packages. This ensures that each package gets
2328 # the right overrides..
2329 rm -rf $@ $@.apt $@.apt-utils
2330- echo "libapt-pkg$(LIBEXT) $(LIBAPTPKG_MAJOR)" > $@.apt
2331-
2332- echo "libapt-pkg$(LIBEXT) $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@.apt-utils
2333- echo "libapt-inst$(LIBEXT) $(LIBAPTINST_MAJOR)" >> $@.apt-utils
2334-
2335- echo "libapt-pkg$(LIBEXT) $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@
2336- echo "libapt-inst$(LIBEXT) $(LIBAPTINST_MAJOR) $(LIBAPTINST_PROVIDE)" >> $@
2337+ echo "libapt-pkg $(LIBAPTPKG_MAJOR)" > $@.apt
2338+
2339+ echo "libapt-pkg $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@.apt-utils
2340+ echo "libapt-inst $(LIBAPTINST_MAJOR)" >> $@.apt-utils
2341+
2342+ echo "libapt-pkg $(LIBAPTPKG_MAJOR) $(LIBAPTPKG_PROVIDE)" > $@
2343+ echo "libapt-inst $(LIBAPTINST_MAJOR) $(LIBAPTINST_PROVIDE)" >> $@
2344
2345 build: build/build-stamp
2346 build-doc: build/build-doc-stamp
2347@@ -108,7 +108,7 @@
2348 dh_testdir
2349 -mkdir build
2350 cp COPYING debian/copyright
2351- cd build && CXXFLAGS="$(confcxxflags)" ../configure $(confflags)
2352+ cd build && CXXFLAGS="$(CXXFLAGS)" ../configure $(confflags)
2353 touch $@
2354
2355 build/build-stamp: build/configure-stamp
2356@@ -144,7 +144,8 @@
2357 #
2358 dh_installdocs -p$@ $(BLD)/docs/cache* $(BLD)/docs/design* $(BLD)/docs/dpkg-tech* \
2359 $(BLD)/docs/files* $(BLD)/docs/method* \
2360- doc/libapt-pkg2_to_3.txt doc/style.txt
2361+ doc/libapt-pkg2_to_3.txt doc/style.txt \
2362+ $(BLD)/doc/doxygen/html/*
2363 dh_installexamples -p$@
2364 # dh_installmenu -p$@
2365 # dh_installinit -p$@
2366@@ -190,7 +191,7 @@
2367 dh_testdir -p$@
2368 dh_testroot -p$@
2369 dh_clean -p$@ -k
2370- dh_installdirs -p$@ /usr/share/bug/$@ /usr/share/$@
2371+ dh_installdirs -p$@
2372 #
2373 # apt install
2374 #
2375
2376=== modified file 'doc/apt-cdrom.8.xml'
2377--- doc/apt-cdrom.8.xml 2009-08-26 10:21:54 +0000
2378+++ doc/apt-cdrom.8.xml 2010-06-11 16:24:33 +0000
2379@@ -65,7 +65,7 @@
2380 <varlistentry><term>add</term>
2381 <listitem><para><literal>add</literal> is used to add a new disc to the
2382 source list. It will unmount the
2383- CDROM device, prompt for a disk to be inserted and then procceed to
2384+ CDROM device, prompt for a disk to be inserted and then proceed to
2385 scan it and copy the index files. If the disc does not have a proper
2386 <filename>disk</filename> directory you will be prompted for a descriptive
2387 title.
2388
2389=== modified file 'doc/apt-ftparchive.1.xml'
2390--- doc/apt-ftparchive.1.xml 2009-12-12 15:32:18 +0000
2391+++ doc/apt-ftparchive.1.xml 2010-06-11 16:24:33 +0000
2392@@ -39,6 +39,7 @@
2393 <arg><option>--delink</option></arg>
2394 <arg><option>--readonly</option></arg>
2395 <arg><option>--contents</option></arg>
2396+ <arg><option>--arch <replaceable>architecture</replaceable></option></arg>
2397 <arg><option>-o <replaceable>config</replaceable>=<replaceable>string</replaceable></option></arg>
2398 <arg><option>-c=<replaceable>file</replaceable></option></arg>
2399 <group choice="req">
2400@@ -542,7 +543,26 @@
2401 <listitem><para>
2402 Make the caching databases read only.
2403 Configuration Item: <literal>APT::FTPArchive::ReadOnlyDB</literal>.</para></listitem>
2404- </varlistentry>
2405+ </varlistentry>
2406+
2407+ <varlistentry><term><option>-a</option></term><term><option>--arch</option></term>
2408+ <listitem><para>Accept in the <literal>packages</literal> and <literal>contents</literal>
2409+ commands only package files matching <literal>*_arch.deb</literal> or
2410+ <literal>*_all.deb</literal> instead of all package files in the given path.
2411+ Configuration Item: <literal>APT::FTPArchive::Architecture</literal>.</para></listitem>
2412+ </varlistentry>
2413+
2414+ <varlistentry><term><option>APT::FTPArchive::AlwaysStat</option></term>
2415+ <listitem><para>
2416+ &apt-ftparchive; caches as much as possible of metadata in a cachedb. If packages
2417+ are recompiled and/or republished with the same version again, this will lead to problems
2418+ as the now outdated cached metadata like size and checksums will be used. With this option
2419+ enabled this will no longer happen as it will be checked if the file was changed.
2420+ Note that this option is set to "<literal>false</literal>" by default as it is not recommend
2421+ to upload multiply versions/builds of a package with the same versionnumber, so in theory
2422+ nobody will have these problems and therefore all these extra checks are useless.
2423+ </para></listitem>
2424+ </varlistentry>
2425
2426 <varlistentry><term><option>APT::FTPArchive::LongDescription</option></term>
2427 <listitem><para>
2428
2429=== modified file 'doc/apt.conf.5.xml'
2430--- doc/apt.conf.5.xml 2010-01-22 23:37:21 +0000
2431+++ doc/apt.conf.5.xml 2010-06-11 16:24:33 +0000
2432@@ -153,7 +153,7 @@
2433 <listitem><para>Default release to install packages from if more than one
2434 version available. Contains release name, codename or release version. Examples: 'stable', 'testing', 'unstable', 'lenny', 'squeeze', '4.0', '5.0*'. See also &apt-preferences;.</para></listitem>
2435 </varlistentry>
2436-
2437+
2438 <varlistentry><term>Ignore-Hold</term>
2439 <listitem><para>Ignore Held packages; This global option causes the problem resolver to
2440 ignore held packages in its decision making.</para></listitem>
2441@@ -410,6 +410,36 @@
2442 these warnings are most of the time false negatives. Future versions will maybe include a way to
2443 really prefer uncompressed files to support the usage of local mirrors.</para></listitem>
2444 </varlistentry>
2445+
2446+ <varlistentry><term>GzipIndexes</term>
2447+ <listitem><para>
2448+ When downloading <literal>gzip</literal> compressed indexes (Packages, Sources, or
2449+ Translations), keep them gzip compressed locally instead of unpacking
2450+ them. This saves quite a lot of disk space at the expense of more CPU
2451+ requirements when building the local package caches. False by default.
2452+ </para></listitem>
2453+ </varlistentry>
2454+
2455+ <varlistentry><term>Languages</term>
2456+ <listitem><para>The Languages subsection controls which <filename>Translation</filename> files are downloaded
2457+ and in which order APT tries to display the Description-Translations. APT will try to display the first
2458+ available Description in the Language which is listed at first. Languages can be defined with their
2459+ short or long Languagecodes. Note that not all archives provide <filename>Translation</filename>
2460+ files for every Language - especially the long Languagecodes are rare, so please
2461+ inform you which ones are available before you set here impossible values.</para>
2462+ <para>The default list includes "environment" and "en". "<literal>environment</literal>" has a special meaning here:
2463+ It will be replaced at runtime with the languagecodes extracted from the <literal>LC_MESSAGES</literal> environment variable.
2464+ It will also ensure that these codes are not included twice in the list. If <literal>LC_MESSAGES</literal>
2465+ is set to "C" only the <filename>Translation-en</filename> file (if available) will be used.
2466+ To force apt to use no Translation file use the setting <literal>Acquire::Languages=none</literal>. "<literal>none</literal>"
2467+ is another special meaning code which will stop the search for a fitting <filename>Translation</filename> file.
2468+ This can be used by the system administrator to let APT know that it should download also this files without
2469+ actually use them if the environment doesn't specify this languages. So the following example configuration will
2470+ result in the order "en, de" in an english and in "de, en" in a german localization. Note that "fr" is downloaded,
2471+ but not used if APT is not used in a french localization, in such an environment the order would be "fr, de, en".
2472+ <programlisting>Acquire::Languages { "environment"; "de"; "en"; "none"; "fr"; };</programlisting></para></listitem>
2473+ </varlistentry>
2474+
2475 </variablelist>
2476 </para>
2477 </refsect1>
2478@@ -1001,6 +1031,7 @@
2479 </listitem>
2480 </varlistentry>
2481 -->
2482+
2483 </variablelist>
2484 </refsect1>
2485
2486
2487=== modified file 'doc/apt_preferences.5.xml'
2488--- doc/apt_preferences.5.xml 2010-02-17 21:40:05 +0000
2489+++ doc/apt_preferences.5.xml 2010-06-11 16:24:33 +0000
2490@@ -14,7 +14,7 @@
2491 &apt-email;
2492 &apt-product;
2493 <!-- The last update date -->
2494- <date>04 May 2009</date>
2495+ <date>16 February 2010</date>
2496 </refentryinfo>
2497
2498 <refmeta>
2499@@ -53,6 +53,14 @@
2500 The APT preferences file does not affect the choice of instance, only
2501 the choice of version.</para>
2502
2503+<para>Preferences are a strong power in the hands of a system administrator
2504+but they can become also their biggest nightmare if used without care!
2505+APT will not questioning the preferences so wrong settings will therefore
2506+lead to uninstallable packages or wrong decisions while upgrading packages.
2507+Even more problems will arise if multiply distribution releases are mixed
2508+without a good understanding of the following paragraphs.
2509+You have been warned.</para>
2510+
2511 <para>Note that the files in the <filename>/etc/apt/preferences.d</filename>
2512 directory are parsed in alphanumeric ascending order and need to obey the
2513 following naming convention: The files have no or "<literal>pref</literal>"
2514
2515=== modified file 'doc/examples/configure-index'
2516--- doc/examples/configure-index 2010-04-14 17:51:40 +0000
2517+++ doc/examples/configure-index 2010-06-11 16:24:33 +0000
2518@@ -289,6 +289,15 @@
2519
2520 Order { "gz"; "lzma"; "bz2"; };
2521 };
2522+
2523+ Languages
2524+ {
2525+ "environment";
2526+ "de";
2527+ "en";
2528+ "none";
2529+ "fr";
2530+ };
2531 };
2532
2533 // Directory layout
2534
2535=== modified file 'doc/po/apt-doc.pot'
2536--- doc/po/apt-doc.pot 2010-01-22 23:37:21 +0000
2537+++ doc/po/apt-doc.pot 2010-06-11 16:24:33 +0000
2538@@ -7,7 +7,7 @@
2539 msgid ""
2540 msgstr ""
2541 "Project-Id-Version: PACKAGE VERSION\n"
2542-"POT-Creation-Date: 2010-01-20 12:18+0100\n"
2543+"POT-Creation-Date: 2010-06-11 10:56+0300\n"
2544 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
2545 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
2546 "Language-Team: LANGUAGE <LL@li.org>\n"
2547@@ -894,7 +894,7 @@
2548 msgstr ""
2549
2550 #. type: Content of: <refentry><refsect1><title>
2551-#: apt-cache.8.xml:62 apt-cdrom.8.xml:47 apt-config.8.xml:47 apt-extracttemplates.1.xml:43 apt-ftparchive.1.xml:55 apt-get.8.xml:125 apt-key.8.xml:35 apt-mark.8.xml:52 apt-secure.8.xml:40 apt-sortpkgs.1.xml:44 apt.conf.5.xml:39 apt_preferences.5.xml:33 sources.list.5.xml:33
2552+#: apt-cache.8.xml:62 apt-cdrom.8.xml:47 apt-config.8.xml:47 apt-extracttemplates.1.xml:43 apt-ftparchive.1.xml:56 apt-get.8.xml:125 apt-key.8.xml:35 apt-mark.8.xml:52 apt-secure.8.xml:40 apt-sortpkgs.1.xml:44 apt.conf.5.xml:39 apt_preferences.5.xml:33 sources.list.5.xml:33
2553 msgid "Description"
2554 msgstr ""
2555
2556@@ -1284,7 +1284,7 @@
2557 msgstr ""
2558
2559 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2560-#: apt-cache.8.xml:281 apt-config.8.xml:93 apt-extracttemplates.1.xml:56 apt-ftparchive.1.xml:492 apt-get.8.xml:319 apt-mark.8.xml:89 apt-sortpkgs.1.xml:54 apt.conf.5.xml:502 apt.conf.5.xml:524
2561+#: apt-cache.8.xml:281 apt-config.8.xml:93 apt-extracttemplates.1.xml:56 apt-ftparchive.1.xml:493 apt-get.8.xml:319 apt-mark.8.xml:89 apt-sortpkgs.1.xml:54 apt.conf.5.xml:511 apt.conf.5.xml:533
2562 msgid "options"
2563 msgstr ""
2564
2565@@ -1307,7 +1307,7 @@
2566 msgstr ""
2567
2568 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2569-#: apt-cache.8.xml:291 apt-ftparchive.1.xml:535 apt-get.8.xml:376 apt-sortpkgs.1.xml:58
2570+#: apt-cache.8.xml:291 apt-ftparchive.1.xml:536 apt-get.8.xml:376 apt-sortpkgs.1.xml:58
2571 msgid "<option>-s</option>"
2572 msgstr ""
2573
2574@@ -1327,12 +1327,12 @@
2575 msgstr ""
2576
2577 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2578-#: apt-cache.8.xml:299 apt-ftparchive.1.xml:509 apt-get.8.xml:366
2579+#: apt-cache.8.xml:299 apt-ftparchive.1.xml:510 apt-get.8.xml:366
2580 msgid "<option>-q</option>"
2581 msgstr ""
2582
2583 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2584-#: apt-cache.8.xml:299 apt-ftparchive.1.xml:509 apt-get.8.xml:366
2585+#: apt-cache.8.xml:299 apt-ftparchive.1.xml:510 apt-get.8.xml:366
2586 msgid "<option>--quiet</option>"
2587 msgstr ""
2588
2589@@ -1381,7 +1381,7 @@
2590 msgstr ""
2591
2592 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2593-#: apt-cache.8.xml:317 apt-cdrom.8.xml:131
2594+#: apt-cache.8.xml:317 apt-cdrom.8.xml:131 apt-ftparchive.1.xml:548
2595 msgid "<option>-a</option>"
2596 msgstr ""
2597
2598@@ -1477,12 +1477,12 @@
2599 msgstr ""
2600
2601 #. type: Content of: <refentry><refsect1><variablelist>
2602-#: apt-cache.8.xml:356 apt-cdrom.8.xml:150 apt-config.8.xml:98 apt-extracttemplates.1.xml:67 apt-ftparchive.1.xml:568 apt-get.8.xml:554 apt-sortpkgs.1.xml:64
2603+#: apt-cache.8.xml:356 apt-cdrom.8.xml:150 apt-config.8.xml:98 apt-extracttemplates.1.xml:67 apt-ftparchive.1.xml:576 apt-get.8.xml:554 apt-sortpkgs.1.xml:64
2604 msgid "&apt-commonoptions;"
2605 msgstr ""
2606
2607 #. type: Content of: <refentry><refsect1><title>
2608-#: apt-cache.8.xml:361 apt-get.8.xml:559 apt-key.8.xml:153 apt-mark.8.xml:122 apt.conf.5.xml:1035 apt_preferences.5.xml:622
2609+#: apt-cache.8.xml:361 apt-get.8.xml:559 apt-key.8.xml:153 apt-mark.8.xml:122 apt.conf.5.xml:1044 apt_preferences.5.xml:630
2610 msgid "Files"
2611 msgstr ""
2612
2613@@ -1492,7 +1492,7 @@
2614 msgstr ""
2615
2616 #. type: Content of: <refentry><refsect1><title>
2617-#: apt-cache.8.xml:368 apt-cdrom.8.xml:155 apt-config.8.xml:103 apt-extracttemplates.1.xml:74 apt-ftparchive.1.xml:584 apt-get.8.xml:569 apt-key.8.xml:174 apt-mark.8.xml:133 apt-secure.8.xml:181 apt-sortpkgs.1.xml:69 apt.conf.5.xml:1041 apt_preferences.5.xml:629 sources.list.5.xml:233
2618+#: apt-cache.8.xml:368 apt-cdrom.8.xml:155 apt-config.8.xml:103 apt-extracttemplates.1.xml:74 apt-ftparchive.1.xml:592 apt-get.8.xml:569 apt-key.8.xml:174 apt-mark.8.xml:133 apt-secure.8.xml:181 apt-sortpkgs.1.xml:69 apt.conf.5.xml:1050 apt_preferences.5.xml:637 sources.list.5.xml:233
2619 msgid "See Also"
2620 msgstr ""
2621
2622@@ -1502,7 +1502,7 @@
2623 msgstr ""
2624
2625 #. type: Content of: <refentry><refsect1><title>
2626-#: apt-cache.8.xml:373 apt-cdrom.8.xml:160 apt-config.8.xml:108 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:588 apt-get.8.xml:575 apt-mark.8.xml:137 apt-sortpkgs.1.xml:73
2627+#: apt-cache.8.xml:373 apt-cdrom.8.xml:160 apt-config.8.xml:108 apt-extracttemplates.1.xml:78 apt-ftparchive.1.xml:596 apt-get.8.xml:575 apt-mark.8.xml:137 apt-sortpkgs.1.xml:73
2628 msgid "Diagnostics"
2629 msgstr ""
2630
2631@@ -1566,7 +1566,7 @@
2632 #: apt-cdrom.8.xml:66
2633 msgid ""
2634 "<literal>add</literal> is used to add a new disc to the source list. It will "
2635-"unmount the CDROM device, prompt for a disk to be inserted and then procceed "
2636+"unmount the CDROM device, prompt for a disk to be inserted and then proceed "
2637 "to scan it and copy the index files. If the disc does not have a proper "
2638 "<filename>disk</filename> directory you will be prompted for a descriptive "
2639 "title."
2640@@ -1606,7 +1606,7 @@
2641 msgstr ""
2642
2643 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2644-#: apt-cdrom.8.xml:95 apt-ftparchive.1.xml:503 apt-get.8.xml:328
2645+#: apt-cdrom.8.xml:95 apt-ftparchive.1.xml:504 apt-get.8.xml:328
2646 msgid "<option>-d</option>"
2647 msgstr ""
2648
2649@@ -1750,7 +1750,7 @@
2650 msgstr ""
2651
2652 #. type: Content of: <refentry><refsect1><para>
2653-#: apt-config.8.xml:53 apt-ftparchive.1.xml:71
2654+#: apt-config.8.xml:53 apt-ftparchive.1.xml:72
2655 msgid ""
2656 "Unless the <option>-h</option>, or <option>--help</option> option is given "
2657 "one of the commands below must be present."
2658@@ -1801,7 +1801,7 @@
2659 msgstr ""
2660
2661 #. type: Content of: <refentry><refsect1><para>
2662-#: apt-config.8.xml:104 apt-extracttemplates.1.xml:75 apt-ftparchive.1.xml:585 apt-sortpkgs.1.xml:70
2663+#: apt-config.8.xml:104 apt-extracttemplates.1.xml:75 apt-ftparchive.1.xml:593 apt-sortpkgs.1.xml:70
2664 msgid "&apt-conf;"
2665 msgstr ""
2666
2667@@ -1910,7 +1910,8 @@
2668 "<command>apt-ftparchive</command> <arg><option>-hvdsq</option></arg> "
2669 "<arg><option>--md5</option></arg> <arg><option>--delink</option></arg> "
2670 "<arg><option>--readonly</option></arg> "
2671-"<arg><option>--contents</option></arg> <arg><option>-o "
2672+"<arg><option>--contents</option></arg> <arg><option>--arch "
2673+"<replaceable>architecture</replaceable></option></arg> <arg><option>-o "
2674 "<replaceable>config</replaceable>=<replaceable>string</replaceable></option></arg> "
2675 "<arg><option>-c=<replaceable>file</replaceable></option></arg> <group "
2676 "choice=\"req\"> <arg>packages<arg choice=\"plain\" "
2677@@ -1929,7 +1930,7 @@
2678 msgstr ""
2679
2680 #. type: Content of: <refentry><refsect1><para>
2681-#: apt-ftparchive.1.xml:56
2682+#: apt-ftparchive.1.xml:57
2683 msgid ""
2684 "<command>apt-ftparchive</command> is the command line tool that generates "
2685 "the index files that APT uses to access a distribution source. The index "
2686@@ -1938,7 +1939,7 @@
2687 msgstr ""
2688
2689 #. type: Content of: <refentry><refsect1><para>
2690-#: apt-ftparchive.1.xml:60
2691+#: apt-ftparchive.1.xml:61
2692 msgid ""
2693 "<command>apt-ftparchive</command> is a superset of the &dpkg-scanpackages; "
2694 "program, incorporating its entire functionality via the "
2695@@ -1948,7 +1949,7 @@
2696 msgstr ""
2697
2698 #. type: Content of: <refentry><refsect1><para>
2699-#: apt-ftparchive.1.xml:66
2700+#: apt-ftparchive.1.xml:67
2701 msgid ""
2702 "Internally <command>apt-ftparchive</command> can make use of binary "
2703 "databases to cache the contents of a .deb file and it does not rely on any "
2704@@ -1958,12 +1959,12 @@
2705 msgstr ""
2706
2707 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2708-#: apt-ftparchive.1.xml:75
2709+#: apt-ftparchive.1.xml:76
2710 msgid "packages"
2711 msgstr ""
2712
2713 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2714-#: apt-ftparchive.1.xml:77
2715+#: apt-ftparchive.1.xml:78
2716 msgid ""
2717 "The packages command generates a package file from a directory tree. It "
2718 "takes the given directory and recursively searches it for .deb files, "
2719@@ -1972,17 +1973,17 @@
2720 msgstr ""
2721
2722 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2723-#: apt-ftparchive.1.xml:82 apt-ftparchive.1.xml:106
2724+#: apt-ftparchive.1.xml:83 apt-ftparchive.1.xml:107
2725 msgid "The option <option>--db</option> can be used to specify a binary caching DB."
2726 msgstr ""
2727
2728 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2729-#: apt-ftparchive.1.xml:85
2730+#: apt-ftparchive.1.xml:86
2731 msgid "sources"
2732 msgstr ""
2733
2734 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2735-#: apt-ftparchive.1.xml:87
2736+#: apt-ftparchive.1.xml:88
2737 msgid ""
2738 "The <literal>sources</literal> command generates a source index file from a "
2739 "directory tree. It takes the given directory and recursively searches it "
2740@@ -1991,7 +1992,7 @@
2741 msgstr ""
2742
2743 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2744-#: apt-ftparchive.1.xml:92
2745+#: apt-ftparchive.1.xml:93
2746 msgid ""
2747 "If an override file is specified then a source override file will be looked "
2748 "for with an extension of .src. The --source-override option can be used to "
2749@@ -1999,12 +2000,12 @@
2750 msgstr ""
2751
2752 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2753-#: apt-ftparchive.1.xml:97
2754+#: apt-ftparchive.1.xml:98
2755 msgid "contents"
2756 msgstr ""
2757
2758 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2759-#: apt-ftparchive.1.xml:99
2760+#: apt-ftparchive.1.xml:100
2761 msgid ""
2762 "The <literal>contents</literal> command generates a contents file from a "
2763 "directory tree. It takes the given directory and recursively searches it for "
2764@@ -2015,12 +2016,12 @@
2765 msgstr ""
2766
2767 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2768-#: apt-ftparchive.1.xml:109
2769+#: apt-ftparchive.1.xml:110
2770 msgid "release"
2771 msgstr ""
2772
2773 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2774-#: apt-ftparchive.1.xml:111
2775+#: apt-ftparchive.1.xml:112
2776 msgid ""
2777 "The <literal>release</literal> command generates a Release file from a "
2778 "directory tree. It recursively searches the given directory for Packages, "
2779@@ -2030,7 +2031,7 @@
2780 msgstr ""
2781
2782 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2783-#: apt-ftparchive.1.xml:118
2784+#: apt-ftparchive.1.xml:119
2785 msgid ""
2786 "Values for the additional metadata fields in the Release file are taken from "
2787 "the corresponding variables under "
2788@@ -2044,12 +2045,12 @@
2789 msgstr ""
2790
2791 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2792-#: apt-ftparchive.1.xml:128
2793+#: apt-ftparchive.1.xml:129
2794 msgid "generate"
2795 msgstr ""
2796
2797 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2798-#: apt-ftparchive.1.xml:130
2799+#: apt-ftparchive.1.xml:131
2800 msgid ""
2801 "The <literal>generate</literal> command is designed to be runnable from a "
2802 "cron script and builds indexes according to the given config file. The "
2803@@ -2059,24 +2060,24 @@
2804 msgstr ""
2805
2806 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
2807-#: apt-ftparchive.1.xml:137 apt-get.8.xml:292
2808+#: apt-ftparchive.1.xml:138 apt-get.8.xml:292
2809 msgid "clean"
2810 msgstr ""
2811
2812 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
2813-#: apt-ftparchive.1.xml:139
2814+#: apt-ftparchive.1.xml:140
2815 msgid ""
2816 "The <literal>clean</literal> command tidies the databases used by the given "
2817 "configuration file by removing any records that are no longer necessary."
2818 msgstr ""
2819
2820 #. type: Content of: <refentry><refsect1><title>
2821-#: apt-ftparchive.1.xml:145
2822+#: apt-ftparchive.1.xml:146
2823 msgid "The Generate Configuration"
2824 msgstr ""
2825
2826 #. type: Content of: <refentry><refsect1><para>
2827-#: apt-ftparchive.1.xml:147
2828+#: apt-ftparchive.1.xml:148
2829 msgid ""
2830 "The <literal>generate</literal> command uses a configuration file to "
2831 "describe the archives that are going to be generated. It follows the typical "
2832@@ -2087,17 +2088,17 @@
2833 msgstr ""
2834
2835 #. type: Content of: <refentry><refsect1><para>
2836-#: apt-ftparchive.1.xml:155
2837+#: apt-ftparchive.1.xml:156
2838 msgid "The generate configuration has 4 separate sections, each described below."
2839 msgstr ""
2840
2841 #. type: Content of: <refentry><refsect1><refsect2><title>
2842-#: apt-ftparchive.1.xml:157
2843+#: apt-ftparchive.1.xml:158
2844 msgid "Dir Section"
2845 msgstr ""
2846
2847 #. type: Content of: <refentry><refsect1><refsect2><para>
2848-#: apt-ftparchive.1.xml:159
2849+#: apt-ftparchive.1.xml:160
2850 msgid ""
2851 "The <literal>Dir</literal> section defines the standard directories needed "
2852 "to locate the files required during the generation process. These "
2853@@ -2106,12 +2107,12 @@
2854 msgstr ""
2855
2856 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2857-#: apt-ftparchive.1.xml:164
2858+#: apt-ftparchive.1.xml:165
2859 msgid "ArchiveDir"
2860 msgstr ""
2861
2862 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2863-#: apt-ftparchive.1.xml:166
2864+#: apt-ftparchive.1.xml:167
2865 msgid ""
2866 "Specifies the root of the FTP archive, in a standard Debian configuration "
2867 "this is the directory that contains the <filename>ls-LR</filename> and dist "
2868@@ -2119,44 +2120,44 @@
2869 msgstr ""
2870
2871 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2872-#: apt-ftparchive.1.xml:171
2873+#: apt-ftparchive.1.xml:172
2874 msgid "OverrideDir"
2875 msgstr ""
2876
2877 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2878-#: apt-ftparchive.1.xml:173
2879+#: apt-ftparchive.1.xml:174
2880 msgid "Specifies the location of the override files."
2881 msgstr ""
2882
2883 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2884-#: apt-ftparchive.1.xml:176
2885+#: apt-ftparchive.1.xml:177
2886 msgid "CacheDir"
2887 msgstr ""
2888
2889 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2890-#: apt-ftparchive.1.xml:178
2891+#: apt-ftparchive.1.xml:179
2892 msgid "Specifies the location of the cache files"
2893 msgstr ""
2894
2895 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2896-#: apt-ftparchive.1.xml:181
2897+#: apt-ftparchive.1.xml:182
2898 msgid "FileListDir"
2899 msgstr ""
2900
2901 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2902-#: apt-ftparchive.1.xml:183
2903+#: apt-ftparchive.1.xml:184
2904 msgid ""
2905 "Specifies the location of the file list files, if the "
2906 "<literal>FileList</literal> setting is used below."
2907 msgstr ""
2908
2909 #. type: Content of: <refentry><refsect1><refsect2><title>
2910-#: apt-ftparchive.1.xml:189
2911+#: apt-ftparchive.1.xml:190
2912 msgid "Default Section"
2913 msgstr ""
2914
2915 #. type: Content of: <refentry><refsect1><refsect2><para>
2916-#: apt-ftparchive.1.xml:191
2917+#: apt-ftparchive.1.xml:192
2918 msgid ""
2919 "The <literal>Default</literal> section specifies default values, and "
2920 "settings that control the operation of the generator. Other sections may "
2921@@ -2164,12 +2165,12 @@
2922 msgstr ""
2923
2924 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2925-#: apt-ftparchive.1.xml:195
2926+#: apt-ftparchive.1.xml:196
2927 msgid "Packages::Compress"
2928 msgstr ""
2929
2930 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2931-#: apt-ftparchive.1.xml:197
2932+#: apt-ftparchive.1.xml:198
2933 msgid ""
2934 "Sets the default compression schemes to use for the Package index files. It "
2935 "is a string that contains a space separated list of at least one of: '.' (no "
2936@@ -2178,60 +2179,60 @@
2937 msgstr ""
2938
2939 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2940-#: apt-ftparchive.1.xml:203
2941+#: apt-ftparchive.1.xml:204
2942 msgid "Packages::Extensions"
2943 msgstr ""
2944
2945 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2946-#: apt-ftparchive.1.xml:205
2947+#: apt-ftparchive.1.xml:206
2948 msgid ""
2949 "Sets the default list of file extensions that are package files. This "
2950 "defaults to '.deb'."
2951 msgstr ""
2952
2953 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2954-#: apt-ftparchive.1.xml:209
2955+#: apt-ftparchive.1.xml:210
2956 msgid "Sources::Compress"
2957 msgstr ""
2958
2959 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2960-#: apt-ftparchive.1.xml:211
2961+#: apt-ftparchive.1.xml:212
2962 msgid ""
2963 "This is similar to <literal>Packages::Compress</literal> except that it "
2964 "controls the compression for the Sources files."
2965 msgstr ""
2966
2967 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2968-#: apt-ftparchive.1.xml:215
2969+#: apt-ftparchive.1.xml:216
2970 msgid "Sources::Extensions"
2971 msgstr ""
2972
2973 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2974-#: apt-ftparchive.1.xml:217
2975+#: apt-ftparchive.1.xml:218
2976 msgid ""
2977 "Sets the default list of file extensions that are source files. This "
2978 "defaults to '.dsc'."
2979 msgstr ""
2980
2981 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2982-#: apt-ftparchive.1.xml:221
2983+#: apt-ftparchive.1.xml:222
2984 msgid "Contents::Compress"
2985 msgstr ""
2986
2987 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
2988-#: apt-ftparchive.1.xml:223
2989+#: apt-ftparchive.1.xml:224
2990 msgid ""
2991 "This is similar to <literal>Packages::Compress</literal> except that it "
2992 "controls the compression for the Contents files."
2993 msgstr ""
2994
2995 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
2996-#: apt-ftparchive.1.xml:227
2997+#: apt-ftparchive.1.xml:228
2998 msgid "DeLinkLimit"
2999 msgstr ""
3000
3001 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3002-#: apt-ftparchive.1.xml:229
3003+#: apt-ftparchive.1.xml:230
3004 msgid ""
3005 "Specifies the number of kilobytes to delink (and replace with hard links) "
3006 "per run. This is used in conjunction with the per-section "
3007@@ -2239,24 +2240,24 @@
3008 msgstr ""
3009
3010 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3011-#: apt-ftparchive.1.xml:234
3012+#: apt-ftparchive.1.xml:235
3013 msgid "FileMode"
3014 msgstr ""
3015
3016 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3017-#: apt-ftparchive.1.xml:236
3018+#: apt-ftparchive.1.xml:237
3019 msgid ""
3020 "Specifies the mode of all created index files. It defaults to 0644. All "
3021 "index files are set to this mode with no regard to the umask."
3022 msgstr ""
3023
3024 #. type: Content of: <refentry><refsect1><refsect2><title>
3025-#: apt-ftparchive.1.xml:243
3026+#: apt-ftparchive.1.xml:244
3027 msgid "TreeDefault Section"
3028 msgstr ""
3029
3030 #. type: Content of: <refentry><refsect1><refsect2><para>
3031-#: apt-ftparchive.1.xml:245
3032+#: apt-ftparchive.1.xml:246
3033 msgid ""
3034 "Sets defaults specific to <literal>Tree</literal> sections. All of these "
3035 "variables are substitution variables and have the strings $(DIST), "
3036@@ -2264,12 +2265,12 @@
3037 msgstr ""
3038
3039 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3040-#: apt-ftparchive.1.xml:250
3041+#: apt-ftparchive.1.xml:251
3042 msgid "MaxContentsChange"
3043 msgstr ""
3044
3045 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3046-#: apt-ftparchive.1.xml:252
3047+#: apt-ftparchive.1.xml:253
3048 msgid ""
3049 "Sets the number of kilobytes of contents files that are generated each "
3050 "day. The contents files are round-robined so that over several days they "
3051@@ -2277,12 +2278,12 @@
3052 msgstr ""
3053
3054 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3055-#: apt-ftparchive.1.xml:257
3056+#: apt-ftparchive.1.xml:258
3057 msgid "ContentsAge"
3058 msgstr ""
3059
3060 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3061-#: apt-ftparchive.1.xml:259
3062+#: apt-ftparchive.1.xml:260
3063 msgid ""
3064 "Controls the number of days a contents file is allowed to be checked without "
3065 "changing. If this limit is passed the mtime of the contents file is "
3066@@ -2293,60 +2294,60 @@
3067 msgstr ""
3068
3069 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3070-#: apt-ftparchive.1.xml:268
3071+#: apt-ftparchive.1.xml:269
3072 msgid "Directory"
3073 msgstr ""
3074
3075 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3076-#: apt-ftparchive.1.xml:270
3077+#: apt-ftparchive.1.xml:271
3078 msgid ""
3079 "Sets the top of the .deb directory tree. Defaults to "
3080 "<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/</filename>"
3081 msgstr ""
3082
3083 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3084-#: apt-ftparchive.1.xml:274
3085+#: apt-ftparchive.1.xml:275
3086 msgid "SrcDirectory"
3087 msgstr ""
3088
3089 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3090-#: apt-ftparchive.1.xml:276
3091+#: apt-ftparchive.1.xml:277
3092 msgid ""
3093 "Sets the top of the source package directory tree. Defaults to "
3094 "<filename>$(DIST)/$(SECTION)/source/</filename>"
3095 msgstr ""
3096
3097 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3098-#: apt-ftparchive.1.xml:280 apt-ftparchive.1.xml:406
3099+#: apt-ftparchive.1.xml:281 apt-ftparchive.1.xml:407
3100 msgid "Packages"
3101 msgstr ""
3102
3103 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3104-#: apt-ftparchive.1.xml:282
3105+#: apt-ftparchive.1.xml:283
3106 msgid ""
3107 "Sets the output Packages file. Defaults to "
3108 "<filename>$(DIST)/$(SECTION)/binary-$(ARCH)/Packages</filename>"
3109 msgstr ""
3110
3111 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3112-#: apt-ftparchive.1.xml:286 apt-ftparchive.1.xml:411
3113+#: apt-ftparchive.1.xml:287 apt-ftparchive.1.xml:412
3114 msgid "Sources"
3115 msgstr ""
3116
3117 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3118-#: apt-ftparchive.1.xml:288
3119+#: apt-ftparchive.1.xml:289
3120 msgid ""
3121 "Sets the output Sources file. Defaults to "
3122 "<filename>$(DIST)/$(SECTION)/source/Sources</filename>"
3123 msgstr ""
3124
3125 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3126-#: apt-ftparchive.1.xml:292
3127+#: apt-ftparchive.1.xml:293
3128 msgid "InternalPrefix"
3129 msgstr ""
3130
3131 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3132-#: apt-ftparchive.1.xml:294
3133+#: apt-ftparchive.1.xml:295
3134 msgid ""
3135 "Sets the path prefix that causes a symlink to be considered an internal link "
3136 "instead of an external link. Defaults to "
3137@@ -2354,12 +2355,12 @@
3138 msgstr ""
3139
3140 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3141-#: apt-ftparchive.1.xml:299 apt-ftparchive.1.xml:417
3142+#: apt-ftparchive.1.xml:300 apt-ftparchive.1.xml:418
3143 msgid "Contents"
3144 msgstr ""
3145
3146 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3147-#: apt-ftparchive.1.xml:301
3148+#: apt-ftparchive.1.xml:302
3149 msgid ""
3150 "Sets the output Contents file. Defaults to "
3151 "<filename>$(DIST)/Contents-$(ARCH)</filename>. If this setting causes "
3152@@ -2369,34 +2370,34 @@
3153 msgstr ""
3154
3155 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3156-#: apt-ftparchive.1.xml:308
3157+#: apt-ftparchive.1.xml:309
3158 msgid "Contents::Header"
3159 msgstr ""
3160
3161 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3162-#: apt-ftparchive.1.xml:310
3163+#: apt-ftparchive.1.xml:311
3164 msgid "Sets header file to prepend to the contents output."
3165 msgstr ""
3166
3167 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3168-#: apt-ftparchive.1.xml:313 apt-ftparchive.1.xml:442
3169+#: apt-ftparchive.1.xml:314 apt-ftparchive.1.xml:443
3170 msgid "BinCacheDB"
3171 msgstr ""
3172
3173 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3174-#: apt-ftparchive.1.xml:315
3175+#: apt-ftparchive.1.xml:316
3176 msgid ""
3177 "Sets the binary cache database to use for this section. Multiple sections "
3178 "can share the same database."
3179 msgstr ""
3180
3181 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3182-#: apt-ftparchive.1.xml:319
3183+#: apt-ftparchive.1.xml:320
3184 msgid "FileList"
3185 msgstr ""
3186
3187 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3188-#: apt-ftparchive.1.xml:321
3189+#: apt-ftparchive.1.xml:322
3190 msgid ""
3191 "Specifies that instead of walking the directory tree, "
3192 "<command>apt-ftparchive</command> should read the list of files from the "
3193@@ -2404,12 +2405,12 @@
3194 msgstr ""
3195
3196 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3197-#: apt-ftparchive.1.xml:326
3198+#: apt-ftparchive.1.xml:327
3199 msgid "SourceFileList"
3200 msgstr ""
3201
3202 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3203-#: apt-ftparchive.1.xml:328
3204+#: apt-ftparchive.1.xml:329
3205 msgid ""
3206 "Specifies that instead of walking the directory tree, "
3207 "<command>apt-ftparchive</command> should read the list of files from the "
3208@@ -2418,12 +2419,12 @@
3209 msgstr ""
3210
3211 #. type: Content of: <refentry><refsect1><refsect2><title>
3212-#: apt-ftparchive.1.xml:336
3213+#: apt-ftparchive.1.xml:337
3214 msgid "Tree Section"
3215 msgstr ""
3216
3217 #. type: Content of: <refentry><refsect1><refsect2><para>
3218-#: apt-ftparchive.1.xml:338
3219+#: apt-ftparchive.1.xml:339
3220 msgid ""
3221 "The <literal>Tree</literal> section defines a standard Debian file tree "
3222 "which consists of a base directory, then multiple sections in that base "
3223@@ -2433,7 +2434,7 @@
3224 msgstr ""
3225
3226 #. type: Content of: <refentry><refsect1><refsect2><para>
3227-#: apt-ftparchive.1.xml:343
3228+#: apt-ftparchive.1.xml:344
3229 msgid ""
3230 "The <literal>Tree</literal> section takes a scope tag which sets the "
3231 "<literal>$(DIST)</literal> variable and defines the root of the tree (the "
3232@@ -2442,7 +2443,7 @@
3233 msgstr ""
3234
3235 #. type: Content of: <refentry><refsect1><refsect2><para>
3236-#: apt-ftparchive.1.xml:348
3237+#: apt-ftparchive.1.xml:349
3238 msgid ""
3239 "All of the settings defined in the <literal>TreeDefault</literal> section "
3240 "can be use in a <literal>Tree</literal> section as well as three new "
3241@@ -2450,7 +2451,7 @@
3242 msgstr ""
3243
3244 #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
3245-#: apt-ftparchive.1.xml:354
3246+#: apt-ftparchive.1.xml:355
3247 #, no-wrap
3248 msgid ""
3249 "for i in Sections do \n"
3250@@ -2460,7 +2461,7 @@
3251 msgstr ""
3252
3253 #. type: Content of: <refentry><refsect1><refsect2><para>
3254-#: apt-ftparchive.1.xml:351
3255+#: apt-ftparchive.1.xml:352
3256 msgid ""
3257 "When processing a <literal>Tree</literal> section "
3258 "<command>apt-ftparchive</command> performs an operation similar to: "
3259@@ -2468,12 +2469,12 @@
3260 msgstr ""
3261
3262 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3263-#: apt-ftparchive.1.xml:360
3264+#: apt-ftparchive.1.xml:361
3265 msgid "Sections"
3266 msgstr ""
3267
3268 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3269-#: apt-ftparchive.1.xml:362
3270+#: apt-ftparchive.1.xml:363
3271 msgid ""
3272 "This is a space separated list of sections which appear under the "
3273 "distribution, typically this is something like <literal>main contrib "
3274@@ -2481,12 +2482,12 @@
3275 msgstr ""
3276
3277 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3278-#: apt-ftparchive.1.xml:367
3279+#: apt-ftparchive.1.xml:368
3280 msgid "Architectures"
3281 msgstr ""
3282
3283 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3284-#: apt-ftparchive.1.xml:369
3285+#: apt-ftparchive.1.xml:370
3286 msgid ""
3287 "This is a space separated list of all the architectures that appear under "
3288 "search section. The special architecture 'source' is used to indicate that "
3289@@ -2494,56 +2495,56 @@
3290 msgstr ""
3291
3292 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3293-#: apt-ftparchive.1.xml:374 apt-ftparchive.1.xml:422
3294+#: apt-ftparchive.1.xml:375 apt-ftparchive.1.xml:423
3295 msgid "BinOverride"
3296 msgstr ""
3297
3298 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3299-#: apt-ftparchive.1.xml:376
3300+#: apt-ftparchive.1.xml:377
3301 msgid ""
3302 "Sets the binary override file. The override file contains section, priority "
3303 "and maintainer address information."
3304 msgstr ""
3305
3306 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3307-#: apt-ftparchive.1.xml:380 apt-ftparchive.1.xml:427
3308+#: apt-ftparchive.1.xml:381 apt-ftparchive.1.xml:428
3309 msgid "SrcOverride"
3310 msgstr ""
3311
3312 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3313-#: apt-ftparchive.1.xml:382
3314+#: apt-ftparchive.1.xml:383
3315 msgid ""
3316 "Sets the source override file. The override file contains section "
3317 "information."
3318 msgstr ""
3319
3320 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3321-#: apt-ftparchive.1.xml:386 apt-ftparchive.1.xml:432
3322+#: apt-ftparchive.1.xml:387 apt-ftparchive.1.xml:433
3323 msgid "ExtraOverride"
3324 msgstr ""
3325
3326 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3327-#: apt-ftparchive.1.xml:388 apt-ftparchive.1.xml:434
3328+#: apt-ftparchive.1.xml:389 apt-ftparchive.1.xml:435
3329 msgid "Sets the binary extra override file."
3330 msgstr ""
3331
3332 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3333-#: apt-ftparchive.1.xml:391 apt-ftparchive.1.xml:437
3334+#: apt-ftparchive.1.xml:392 apt-ftparchive.1.xml:438
3335 msgid "SrcExtraOverride"
3336 msgstr ""
3337
3338 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3339-#: apt-ftparchive.1.xml:393 apt-ftparchive.1.xml:439
3340+#: apt-ftparchive.1.xml:394 apt-ftparchive.1.xml:440
3341 msgid "Sets the source extra override file."
3342 msgstr ""
3343
3344 #. type: Content of: <refentry><refsect1><refsect2><title>
3345-#: apt-ftparchive.1.xml:398
3346+#: apt-ftparchive.1.xml:399
3347 msgid "BinDirectory Section"
3348 msgstr ""
3349
3350 #. type: Content of: <refentry><refsect1><refsect2><para>
3351-#: apt-ftparchive.1.xml:400
3352+#: apt-ftparchive.1.xml:401
3353 msgid ""
3354 "The <literal>bindirectory</literal> section defines a binary directory tree "
3355 "with no special structure. The scope tag specifies the location of the "
3356@@ -2553,64 +2554,64 @@
3357 msgstr ""
3358
3359 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3360-#: apt-ftparchive.1.xml:408
3361+#: apt-ftparchive.1.xml:409
3362 msgid "Sets the Packages file output."
3363 msgstr ""
3364
3365 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3366-#: apt-ftparchive.1.xml:413
3367+#: apt-ftparchive.1.xml:414
3368 msgid ""
3369 "Sets the Sources file output. At least one of <literal>Packages</literal> or "
3370 "<literal>Sources</literal> is required."
3371 msgstr ""
3372
3373 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3374-#: apt-ftparchive.1.xml:419
3375+#: apt-ftparchive.1.xml:420
3376 msgid "Sets the Contents file output. (optional)"
3377 msgstr ""
3378
3379 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3380-#: apt-ftparchive.1.xml:424
3381+#: apt-ftparchive.1.xml:425
3382 msgid "Sets the binary override file."
3383 msgstr ""
3384
3385 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3386-#: apt-ftparchive.1.xml:429
3387+#: apt-ftparchive.1.xml:430
3388 msgid "Sets the source override file."
3389 msgstr ""
3390
3391 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3392-#: apt-ftparchive.1.xml:444
3393+#: apt-ftparchive.1.xml:445
3394 msgid "Sets the cache DB."
3395 msgstr ""
3396
3397 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3398-#: apt-ftparchive.1.xml:447
3399+#: apt-ftparchive.1.xml:448
3400 msgid "PathPrefix"
3401 msgstr ""
3402
3403 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3404-#: apt-ftparchive.1.xml:449
3405+#: apt-ftparchive.1.xml:450
3406 msgid "Appends a path to all the output paths."
3407 msgstr ""
3408
3409 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3410-#: apt-ftparchive.1.xml:452
3411+#: apt-ftparchive.1.xml:453
3412 msgid "FileList, SourceFileList"
3413 msgstr ""
3414
3415 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3416-#: apt-ftparchive.1.xml:454
3417+#: apt-ftparchive.1.xml:455
3418 msgid "Specifies the file list file."
3419 msgstr ""
3420
3421 #. type: Content of: <refentry><refsect1><title>
3422-#: apt-ftparchive.1.xml:461
3423+#: apt-ftparchive.1.xml:462
3424 msgid "The Binary Override File"
3425 msgstr ""
3426
3427 #. type: Content of: <refentry><refsect1><para>
3428-#: apt-ftparchive.1.xml:462
3429+#: apt-ftparchive.1.xml:463
3430 msgid ""
3431 "The binary override file is fully compatible with &dpkg-scanpackages;. It "
3432 "contains 4 fields separated by spaces. The first field is the package name, "
3433@@ -2620,19 +2621,19 @@
3434 msgstr ""
3435
3436 #. type: Content of: <refentry><refsect1><para><literallayout>
3437-#: apt-ftparchive.1.xml:468
3438+#: apt-ftparchive.1.xml:469
3439 #, no-wrap
3440 msgid "old [// oldn]* => new"
3441 msgstr ""
3442
3443 #. type: Content of: <refentry><refsect1><para><literallayout>
3444-#: apt-ftparchive.1.xml:470
3445+#: apt-ftparchive.1.xml:471
3446 #, no-wrap
3447 msgid "new"
3448 msgstr ""
3449
3450 #. type: Content of: <refentry><refsect1><para>
3451-#: apt-ftparchive.1.xml:467
3452+#: apt-ftparchive.1.xml:468
3453 msgid ""
3454 "The general form of the maintainer field is: <placeholder "
3455 "type=\"literallayout\" id=\"0\"/> or simply, <placeholder "
3456@@ -2643,12 +2644,12 @@
3457 msgstr ""
3458
3459 #. type: Content of: <refentry><refsect1><title>
3460-#: apt-ftparchive.1.xml:478
3461+#: apt-ftparchive.1.xml:479
3462 msgid "The Source Override File"
3463 msgstr ""
3464
3465 #. type: Content of: <refentry><refsect1><para>
3466-#: apt-ftparchive.1.xml:480
3467+#: apt-ftparchive.1.xml:481
3468 msgid ""
3469 "The source override file is fully compatible with &dpkg-scansources;. It "
3470 "contains 2 fields separated by spaces. The first fields is the source "
3471@@ -2656,12 +2657,12 @@
3472 msgstr ""
3473
3474 #. type: Content of: <refentry><refsect1><title>
3475-#: apt-ftparchive.1.xml:485
3476+#: apt-ftparchive.1.xml:486
3477 msgid "The Extra Override File"
3478 msgstr ""
3479
3480 #. type: Content of: <refentry><refsect1><para>
3481-#: apt-ftparchive.1.xml:487
3482+#: apt-ftparchive.1.xml:488
3483 msgid ""
3484 "The extra override file allows any arbitrary tag to be added or replaced in "
3485 "the output. It has 3 columns, the first is the package, the second is the "
3486@@ -2669,12 +2670,12 @@
3487 msgstr ""
3488
3489 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3490-#: apt-ftparchive.1.xml:496
3491+#: apt-ftparchive.1.xml:497
3492 msgid "<option>--md5</option>"
3493 msgstr ""
3494
3495 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3496-#: apt-ftparchive.1.xml:498
3497+#: apt-ftparchive.1.xml:499
3498 msgid ""
3499 "Generate MD5 sums. This defaults to on, when turned off the generated index "
3500 "files will not have MD5Sum fields where possible. Configuration Item: "
3501@@ -2682,19 +2683,19 @@
3502 msgstr ""
3503
3504 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3505-#: apt-ftparchive.1.xml:503
3506+#: apt-ftparchive.1.xml:504
3507 msgid "<option>--db</option>"
3508 msgstr ""
3509
3510 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3511-#: apt-ftparchive.1.xml:505
3512+#: apt-ftparchive.1.xml:506
3513 msgid ""
3514 "Use a binary caching DB. This has no effect on the generate command. "
3515 "Configuration Item: <literal>APT::FTPArchive::DB</literal>."
3516 msgstr ""
3517
3518 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3519-#: apt-ftparchive.1.xml:511
3520+#: apt-ftparchive.1.xml:512
3521 msgid ""
3522 "Quiet; produces output suitable for logging, omitting progress indicators. "
3523 "More q's will produce more quiet up to a maximum of 2. You can also use "
3524@@ -2703,12 +2704,12 @@
3525 msgstr ""
3526
3527 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3528-#: apt-ftparchive.1.xml:517
3529+#: apt-ftparchive.1.xml:518
3530 msgid "<option>--delink</option>"
3531 msgstr ""
3532
3533 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3534-#: apt-ftparchive.1.xml:519
3535+#: apt-ftparchive.1.xml:520
3536 msgid ""
3537 "Perform Delinking. If the <literal>External-Links</literal> setting is used "
3538 "then this option actually enables delinking of the files. It defaults to on "
3539@@ -2717,12 +2718,12 @@
3540 msgstr ""
3541
3542 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3543-#: apt-ftparchive.1.xml:525
3544+#: apt-ftparchive.1.xml:526
3545 msgid "<option>--contents</option>"
3546 msgstr ""
3547
3548 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3549-#: apt-ftparchive.1.xml:527
3550+#: apt-ftparchive.1.xml:528
3551 msgid ""
3552 "Perform contents generation. When this option is set and package indexes are "
3553 "being generated with a cache DB then the file listing will also be extracted "
3554@@ -2732,12 +2733,12 @@
3555 msgstr ""
3556
3557 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3558-#: apt-ftparchive.1.xml:535
3559+#: apt-ftparchive.1.xml:536
3560 msgid "<option>--source-override</option>"
3561 msgstr ""
3562
3563 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3564-#: apt-ftparchive.1.xml:537
3565+#: apt-ftparchive.1.xml:538
3566 msgid ""
3567 "Select the source override file to use with the <literal>sources</literal> "
3568 "command. Configuration Item: "
3569@@ -2745,26 +2746,40 @@
3570 msgstr ""
3571
3572 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3573-#: apt-ftparchive.1.xml:541
3574+#: apt-ftparchive.1.xml:542
3575 msgid "<option>--readonly</option>"
3576 msgstr ""
3577
3578 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3579-#: apt-ftparchive.1.xml:543
3580+#: apt-ftparchive.1.xml:544
3581 msgid ""
3582 "Make the caching databases read only. Configuration Item: "
3583 "<literal>APT::FTPArchive::ReadOnlyDB</literal>."
3584 msgstr ""
3585
3586 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3587-#: apt-ftparchive.1.xml:547
3588+#: apt-ftparchive.1.xml:548
3589+msgid "<option>--arch</option>"
3590+msgstr ""
3591+
3592+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3593+#: apt-ftparchive.1.xml:549
3594+msgid ""
3595+"Accept in the <literal>packages</literal> and <literal>contents</literal> "
3596+"commands only package files matching <literal>*_arch.deb</literal> or "
3597+"<literal>*_all.deb</literal> instead of all package files in the given "
3598+"path. Configuration Item: <literal>APT::FTPArchive::Architecture</literal>."
3599+msgstr ""
3600+
3601+#. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3602+#: apt-ftparchive.1.xml:555
3603 msgid "<option>APT::FTPArchive::AlwaysStat</option>"
3604 msgstr ""
3605
3606 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3607-#: apt-ftparchive.1.xml:549
3608+#: apt-ftparchive.1.xml:557
3609 msgid ""
3610-"&apt-ftparchive; caches as much as possible of metadata in it is cachedb. If "
3611+"&apt-ftparchive; caches as much as possible of metadata in a cachedb. If "
3612 "packages are recompiled and/or republished with the same version again, this "
3613 "will lead to problems as the now outdated cached metadata like size and "
3614 "checksums will be used. With this option enabled this will no longer happen "
3615@@ -2776,12 +2791,12 @@
3616 msgstr ""
3617
3618 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3619-#: apt-ftparchive.1.xml:559
3620+#: apt-ftparchive.1.xml:567
3621 msgid "<option>APT::FTPArchive::LongDescription</option>"
3622 msgstr ""
3623
3624 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3625-#: apt-ftparchive.1.xml:561
3626+#: apt-ftparchive.1.xml:569
3627 msgid ""
3628 "This configuration option defaults to \"<literal>true</literal>\" and should "
3629 "only be set to <literal>\"false\"</literal> if the Archive generated with "
3630@@ -2791,12 +2806,12 @@
3631 msgstr ""
3632
3633 #. type: Content of: <refentry><refsect1><title>
3634-#: apt-ftparchive.1.xml:573 apt.conf.5.xml:1029 apt_preferences.5.xml:469 sources.list.5.xml:193
3635+#: apt-ftparchive.1.xml:581 apt.conf.5.xml:1038 apt_preferences.5.xml:477 sources.list.5.xml:193
3636 msgid "Examples"
3637 msgstr ""
3638
3639 #. type: Content of: <refentry><refsect1><para><programlisting>
3640-#: apt-ftparchive.1.xml:579
3641+#: apt-ftparchive.1.xml:587
3642 #, no-wrap
3643 msgid ""
3644 "<command>apt-ftparchive</command> packages "
3645@@ -2805,14 +2820,14 @@
3646 msgstr ""
3647
3648 #. type: Content of: <refentry><refsect1><para>
3649-#: apt-ftparchive.1.xml:575
3650+#: apt-ftparchive.1.xml:583
3651 msgid ""
3652 "To create a compressed Packages file for a directory containing binary "
3653 "packages (.deb): <placeholder type=\"programlisting\" id=\"0\"/>"
3654 msgstr ""
3655
3656 #. type: Content of: <refentry><refsect1><para>
3657-#: apt-ftparchive.1.xml:589
3658+#: apt-ftparchive.1.xml:597
3659 msgid ""
3660 "<command>apt-ftparchive</command> returns zero on normal operation, decimal "
3661 "100 on error."
3662@@ -5028,11 +5043,25 @@
3663
3664 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
3665 #: apt.conf.5.xml:414
3666+msgid "GzipIndexes"
3667+msgstr ""
3668+
3669+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
3670+#: apt.conf.5.xml:416
3671+msgid ""
3672+"When downloading <literal>gzip</literal> compressed indexes (Packages, "
3673+"Sources, or Translations), keep them gzip compressed locally instead of "
3674+"unpacking them. This saves quite a lot of disk space at the expense of more "
3675+"CPU requirements when building the local package caches. False by default."
3676+msgstr ""
3677+
3678+#. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><term>
3679+#: apt.conf.5.xml:423
3680 msgid "Languages"
3681 msgstr ""
3682
3683 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
3684-#: apt.conf.5.xml:415
3685+#: apt.conf.5.xml:424
3686 msgid ""
3687 "The Languages subsection controls which <filename>Translation</filename> "
3688 "files are downloaded and in which order APT tries to display the "
3689@@ -5045,13 +5074,13 @@
3690 msgstr ""
3691
3692 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para><programlisting>
3693-#: apt.conf.5.xml:431
3694+#: apt.conf.5.xml:440
3695 #, no-wrap
3696 msgid "Acquire::Languages { \"environment\"; \"de\"; \"en\"; \"none\"; \"fr\"; };"
3697 msgstr ""
3698
3699 #. type: Content of: <refentry><refsect1><para><variablelist><varlistentry><listitem><para>
3700-#: apt.conf.5.xml:421
3701+#: apt.conf.5.xml:430
3702 msgid ""
3703 "The default list includes \"environment\" and "
3704 "\"en\". \"<literal>environment</literal>\" has a special meaning here: It "
3705@@ -5082,12 +5111,12 @@
3706 msgstr ""
3707
3708 #. type: Content of: <refentry><refsect1><title>
3709-#: apt.conf.5.xml:438
3710+#: apt.conf.5.xml:447
3711 msgid "Directories"
3712 msgstr ""
3713
3714 #. type: Content of: <refentry><refsect1><para>
3715-#: apt.conf.5.xml:440
3716+#: apt.conf.5.xml:449
3717 msgid ""
3718 "The <literal>Dir::State</literal> section has directories that pertain to "
3719 "local state information. <literal>lists</literal> is the directory to place "
3720@@ -5099,7 +5128,7 @@
3721 msgstr ""
3722
3723 #. type: Content of: <refentry><refsect1><para>
3724-#: apt.conf.5.xml:447
3725+#: apt.conf.5.xml:456
3726 msgid ""
3727 "<literal>Dir::Cache</literal> contains locations pertaining to local cache "
3728 "information, such as the two package caches <literal>srcpkgcache</literal> "
3729@@ -5112,7 +5141,7 @@
3730 msgstr ""
3731
3732 #. type: Content of: <refentry><refsect1><para>
3733-#: apt.conf.5.xml:456
3734+#: apt.conf.5.xml:465
3735 msgid ""
3736 "<literal>Dir::Etc</literal> contains the location of configuration files, "
3737 "<literal>sourcelist</literal> gives the location of the sourcelist and "
3738@@ -5122,7 +5151,7 @@
3739 msgstr ""
3740
3741 #. type: Content of: <refentry><refsect1><para>
3742-#: apt.conf.5.xml:462
3743+#: apt.conf.5.xml:471
3744 msgid ""
3745 "The <literal>Dir::Parts</literal> setting reads in all the config fragments "
3746 "in lexical order from the directory specified. After this is done then the "
3747@@ -5130,7 +5159,7 @@
3748 msgstr ""
3749
3750 #. type: Content of: <refentry><refsect1><para>
3751-#: apt.conf.5.xml:466
3752+#: apt.conf.5.xml:475
3753 msgid ""
3754 "Binary programs are pointed to by "
3755 "<literal>Dir::Bin</literal>. <literal>Dir::Bin::Methods</literal> specifies "
3756@@ -5142,7 +5171,7 @@
3757 msgstr ""
3758
3759 #. type: Content of: <refentry><refsect1><para>
3760-#: apt.conf.5.xml:474
3761+#: apt.conf.5.xml:483
3762 msgid ""
3763 "The configuration item <literal>RootDir</literal> has a special meaning. If "
3764 "set, all paths in <literal>Dir::</literal> will be relative to "
3765@@ -5155,12 +5184,12 @@
3766 msgstr ""
3767
3768 #. type: Content of: <refentry><refsect1><title>
3769-#: apt.conf.5.xml:487
3770+#: apt.conf.5.xml:496
3771 msgid "APT in DSelect"
3772 msgstr ""
3773
3774 #. type: Content of: <refentry><refsect1><para>
3775-#: apt.conf.5.xml:489
3776+#: apt.conf.5.xml:498
3777 msgid ""
3778 "When APT is used as a &dselect; method several configuration directives "
3779 "control the default behaviour. These are in the <literal>DSelect</literal> "
3780@@ -5168,12 +5197,12 @@
3781 msgstr ""
3782
3783 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3784-#: apt.conf.5.xml:493
3785+#: apt.conf.5.xml:502
3786 msgid "Clean"
3787 msgstr ""
3788
3789 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3790-#: apt.conf.5.xml:494
3791+#: apt.conf.5.xml:503
3792 msgid ""
3793 "Cache Clean mode; this value may be one of always, prompt, auto, pre-auto "
3794 "and never. always and prompt will remove all packages from the cache after "
3795@@ -5184,50 +5213,50 @@
3796 msgstr ""
3797
3798 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3799-#: apt.conf.5.xml:503
3800+#: apt.conf.5.xml:512
3801 msgid ""
3802 "The contents of this variable is passed to &apt-get; as command line options "
3803 "when it is run for the install phase."
3804 msgstr ""
3805
3806 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3807-#: apt.conf.5.xml:507
3808+#: apt.conf.5.xml:516
3809 msgid "Updateoptions"
3810 msgstr ""
3811
3812 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3813-#: apt.conf.5.xml:508
3814+#: apt.conf.5.xml:517
3815 msgid ""
3816 "The contents of this variable is passed to &apt-get; as command line options "
3817 "when it is run for the update phase."
3818 msgstr ""
3819
3820 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3821-#: apt.conf.5.xml:512
3822+#: apt.conf.5.xml:521
3823 msgid "PromptAfterUpdate"
3824 msgstr ""
3825
3826 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3827-#: apt.conf.5.xml:513
3828+#: apt.conf.5.xml:522
3829 msgid ""
3830 "If true the [U]pdate operation in &dselect; will always prompt to continue. "
3831 "The default is to prompt only on error."
3832 msgstr ""
3833
3834 #. type: Content of: <refentry><refsect1><title>
3835-#: apt.conf.5.xml:519
3836+#: apt.conf.5.xml:528
3837 msgid "How APT calls dpkg"
3838 msgstr ""
3839
3840 #. type: Content of: <refentry><refsect1><para>
3841-#: apt.conf.5.xml:520
3842+#: apt.conf.5.xml:529
3843 msgid ""
3844 "Several configuration directives control how APT invokes &dpkg;. These are "
3845 "in the <literal>DPkg</literal> section."
3846 msgstr ""
3847
3848 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3849-#: apt.conf.5.xml:525
3850+#: apt.conf.5.xml:534
3851 msgid ""
3852 "This is a list of options to pass to dpkg. The options must be specified "
3853 "using the list notation and each list item is passed as a single argument to "
3854@@ -5235,17 +5264,17 @@
3855 msgstr ""
3856
3857 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3858-#: apt.conf.5.xml:530
3859+#: apt.conf.5.xml:539
3860 msgid "Pre-Invoke"
3861 msgstr ""
3862
3863 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3864-#: apt.conf.5.xml:530
3865+#: apt.conf.5.xml:539
3866 msgid "Post-Invoke"
3867 msgstr ""
3868
3869 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3870-#: apt.conf.5.xml:531
3871+#: apt.conf.5.xml:540
3872 msgid ""
3873 "This is a list of shell commands to run before/after invoking &dpkg;. Like "
3874 "<literal>options</literal> this must be specified in list notation. The "
3875@@ -5254,12 +5283,12 @@
3876 msgstr ""
3877
3878 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3879-#: apt.conf.5.xml:537
3880+#: apt.conf.5.xml:546
3881 msgid "Pre-Install-Pkgs"
3882 msgstr ""
3883
3884 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3885-#: apt.conf.5.xml:538
3886+#: apt.conf.5.xml:547
3887 msgid ""
3888 "This is a list of shell commands to run before invoking dpkg. Like "
3889 "<literal>options</literal> this must be specified in list notation. The "
3890@@ -5269,7 +5298,7 @@
3891 msgstr ""
3892
3893 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3894-#: apt.conf.5.xml:544
3895+#: apt.conf.5.xml:553
3896 msgid ""
3897 "Version 2 of this protocol dumps more information, including the protocol "
3898 "version, the APT configuration space and the packages, files and versions "
3899@@ -5280,36 +5309,36 @@
3900 msgstr ""
3901
3902 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3903-#: apt.conf.5.xml:551
3904+#: apt.conf.5.xml:560
3905 msgid "Run-Directory"
3906 msgstr ""
3907
3908 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3909-#: apt.conf.5.xml:552
3910+#: apt.conf.5.xml:561
3911 msgid ""
3912 "APT chdirs to this directory before invoking dpkg, the default is "
3913 "<filename>/</filename>."
3914 msgstr ""
3915
3916 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
3917-#: apt.conf.5.xml:556
3918+#: apt.conf.5.xml:565
3919 msgid "Build-options"
3920 msgstr ""
3921
3922 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
3923-#: apt.conf.5.xml:557
3924+#: apt.conf.5.xml:566
3925 msgid ""
3926 "These options are passed to &dpkg-buildpackage; when compiling packages, the "
3927 "default is to disable signing and produce all binaries."
3928 msgstr ""
3929
3930 #. type: Content of: <refentry><refsect1><refsect2><title>
3931-#: apt.conf.5.xml:562
3932+#: apt.conf.5.xml:571
3933 msgid "dpkg trigger usage (and related options)"
3934 msgstr ""
3935
3936 #. type: Content of: <refentry><refsect1><refsect2><para>
3937-#: apt.conf.5.xml:563
3938+#: apt.conf.5.xml:572
3939 msgid ""
3940 "APT can call dpkg in a way so it can make aggressive use of triggers over "
3941 "multiply calls of dpkg. Without further options dpkg will use triggers only "
3942@@ -5324,7 +5353,7 @@
3943 msgstr ""
3944
3945 #. type: Content of: <refentry><refsect1><refsect2><para><literallayout>
3946-#: apt.conf.5.xml:578
3947+#: apt.conf.5.xml:587
3948 #, no-wrap
3949 msgid ""
3950 "DPkg::NoTriggers \"true\";\n"
3951@@ -5334,7 +5363,7 @@
3952 msgstr ""
3953
3954 #. type: Content of: <refentry><refsect1><refsect2><para>
3955-#: apt.conf.5.xml:572
3956+#: apt.conf.5.xml:581
3957 msgid ""
3958 "Note that it is not guaranteed that APT will support these options or that "
3959 "these options will not cause (big) trouble in the future. If you have "
3960@@ -5348,12 +5377,12 @@
3961 msgstr ""
3962
3963 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3964-#: apt.conf.5.xml:584
3965+#: apt.conf.5.xml:593
3966 msgid "DPkg::NoTriggers"
3967 msgstr ""
3968
3969 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3970-#: apt.conf.5.xml:585
3971+#: apt.conf.5.xml:594
3972 msgid ""
3973 "Add the no triggers flag to all dpkg calls (except the ConfigurePending "
3974 "call). See &dpkg; if you are interested in what this actually means. In "
3975@@ -5365,12 +5394,12 @@
3976 msgstr ""
3977
3978 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3979-#: apt.conf.5.xml:592
3980+#: apt.conf.5.xml:601
3981 msgid "PackageManager::Configure"
3982 msgstr ""
3983
3984 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
3985-#: apt.conf.5.xml:593
3986+#: apt.conf.5.xml:602
3987 msgid ""
3988 "Valid values are \"<literal>all</literal>\", \"<literal>smart</literal>\" "
3989 "and \"<literal>no</literal>\". \"<literal>all</literal>\" is the default "
3990@@ -5387,12 +5416,12 @@
3991 msgstr ""
3992
3993 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
3994-#: apt.conf.5.xml:603
3995+#: apt.conf.5.xml:612
3996 msgid "DPkg::ConfigurePending"
3997 msgstr ""
3998
3999 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
4000-#: apt.conf.5.xml:604
4001+#: apt.conf.5.xml:613
4002 msgid ""
4003 "If this option is set apt will call <command>dpkg --configure "
4004 "--pending</command> to let dpkg handle all required configurations and "
4005@@ -5404,12 +5433,12 @@
4006 msgstr ""
4007
4008 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
4009-#: apt.conf.5.xml:610
4010+#: apt.conf.5.xml:619
4011 msgid "DPkg::TriggersPending"
4012 msgstr ""
4013
4014 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
4015-#: apt.conf.5.xml:611
4016+#: apt.conf.5.xml:620
4017 msgid ""
4018 "Useful for <literal>smart</literal> configuration as a package which has "
4019 "pending triggers is not considered as <literal>installed</literal> and dpkg "
4020@@ -5419,12 +5448,12 @@
4021 msgstr ""
4022
4023 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
4024-#: apt.conf.5.xml:616
4025+#: apt.conf.5.xml:625
4026 msgid "PackageManager::UnpackAll"
4027 msgstr ""
4028
4029 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
4030-#: apt.conf.5.xml:617
4031+#: apt.conf.5.xml:626
4032 msgid ""
4033 "As the configuration can be deferred to be done at the end by dpkg it can be "
4034 "tried to order the unpack series only by critical needs, e.g. by "
4035@@ -5436,12 +5465,12 @@
4036 msgstr ""
4037
4038 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><term>
4039-#: apt.conf.5.xml:624
4040+#: apt.conf.5.xml:633
4041 msgid "OrderList::Score::Immediate"
4042 msgstr ""
4043
4044 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para><literallayout>
4045-#: apt.conf.5.xml:632
4046+#: apt.conf.5.xml:641
4047 #, no-wrap
4048 msgid ""
4049 "OrderList::Score {\n"
4050@@ -5453,7 +5482,7 @@
4051 msgstr ""
4052
4053 #. type: Content of: <refentry><refsect1><refsect2><variablelist><varlistentry><listitem><para>
4054-#: apt.conf.5.xml:625
4055+#: apt.conf.5.xml:634
4056 msgid ""
4057 "Essential packages (and there dependencies) should be configured immediately "
4058 "after unpacking. It will be a good idea to do this quite early in the "
4059@@ -5467,12 +5496,12 @@
4060 msgstr ""
4061
4062 #. type: Content of: <refentry><refsect1><title>
4063-#: apt.conf.5.xml:645
4064+#: apt.conf.5.xml:654
4065 msgid "Periodic and Archives options"
4066 msgstr ""
4067
4068 #. type: Content of: <refentry><refsect1><para>
4069-#: apt.conf.5.xml:646
4070+#: apt.conf.5.xml:655
4071 msgid ""
4072 "<literal>APT::Periodic</literal> and <literal>APT::Archives</literal> groups "
4073 "of options configure behavior of apt periodic updates, which is done by "
4074@@ -5481,12 +5510,12 @@
4075 msgstr ""
4076
4077 #. type: Content of: <refentry><refsect1><title>
4078-#: apt.conf.5.xml:654
4079+#: apt.conf.5.xml:663
4080 msgid "Debug options"
4081 msgstr ""
4082
4083 #. type: Content of: <refentry><refsect1><para>
4084-#: apt.conf.5.xml:656
4085+#: apt.conf.5.xml:665
4086 msgid ""
4087 "Enabling options in the <literal>Debug::</literal> section will cause "
4088 "debugging information to be sent to the standard error stream of the program "
4089@@ -5497,7 +5526,7 @@
4090 msgstr ""
4091
4092 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
4093-#: apt.conf.5.xml:667
4094+#: apt.conf.5.xml:676
4095 msgid ""
4096 "<literal>Debug::pkgProblemResolver</literal> enables output about the "
4097 "decisions made by <literal>dist-upgrade, upgrade, install, remove, "
4098@@ -5505,7 +5534,7 @@
4099 msgstr ""
4100
4101 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
4102-#: apt.conf.5.xml:675
4103+#: apt.conf.5.xml:684
4104 msgid ""
4105 "<literal>Debug::NoLocking</literal> disables all file locking. This can be "
4106 "used to run some operations (for instance, <literal>apt-get -s "
4107@@ -5513,7 +5542,7 @@
4108 msgstr ""
4109
4110 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
4111-#: apt.conf.5.xml:684
4112+#: apt.conf.5.xml:693
4113 msgid ""
4114 "<literal>Debug::pkgDPkgPM</literal> prints out the actual command line each "
4115 "time that <literal>apt</literal> invokes &dpkg;."
4116@@ -5523,110 +5552,110 @@
4117 #. motivating example, except I haven't a clue why you'd want
4118 #. to do this.
4119 #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para>
4120-#: apt.conf.5.xml:692
4121+#: apt.conf.5.xml:701
4122 msgid ""
4123 "<literal>Debug::IdentCdrom</literal> disables the inclusion of statfs data "
4124 "in CDROM IDs."
4125 msgstr ""
4126
4127 #. type: Content of: <refentry><refsect1><para>
4128-#: apt.conf.5.xml:702
4129+#: apt.conf.5.xml:711
4130 msgid "A full list of debugging options to apt follows."
4131 msgstr ""
4132
4133 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4134-#: apt.conf.5.xml:707
4135+#: apt.conf.5.xml:716
4136 msgid "<literal>Debug::Acquire::cdrom</literal>"
4137 msgstr ""
4138
4139 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4140-#: apt.conf.5.xml:711
4141+#: apt.conf.5.xml:720
4142 msgid "Print information related to accessing <literal>cdrom://</literal> sources."
4143 msgstr ""
4144
4145 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4146-#: apt.conf.5.xml:718
4147+#: apt.conf.5.xml:727
4148 msgid "<literal>Debug::Acquire::ftp</literal>"
4149 msgstr ""
4150
4151 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4152-#: apt.conf.5.xml:722
4153+#: apt.conf.5.xml:731
4154 msgid "Print information related to downloading packages using FTP."
4155 msgstr ""
4156
4157 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4158-#: apt.conf.5.xml:729
4159+#: apt.conf.5.xml:738
4160 msgid "<literal>Debug::Acquire::http</literal>"
4161 msgstr ""
4162
4163 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4164-#: apt.conf.5.xml:733
4165+#: apt.conf.5.xml:742
4166 msgid "Print information related to downloading packages using HTTP."
4167 msgstr ""
4168
4169 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4170-#: apt.conf.5.xml:740
4171+#: apt.conf.5.xml:749
4172 msgid "<literal>Debug::Acquire::https</literal>"
4173 msgstr ""
4174
4175 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4176-#: apt.conf.5.xml:744
4177+#: apt.conf.5.xml:753
4178 msgid "Print information related to downloading packages using HTTPS."
4179 msgstr ""
4180
4181 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4182-#: apt.conf.5.xml:751
4183+#: apt.conf.5.xml:760
4184 msgid "<literal>Debug::Acquire::gpgv</literal>"
4185 msgstr ""
4186
4187 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4188-#: apt.conf.5.xml:755
4189+#: apt.conf.5.xml:764
4190 msgid ""
4191 "Print information related to verifying cryptographic signatures using "
4192 "<literal>gpg</literal>."
4193 msgstr ""
4194
4195 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4196-#: apt.conf.5.xml:762
4197+#: apt.conf.5.xml:771
4198 msgid "<literal>Debug::aptcdrom</literal>"
4199 msgstr ""
4200
4201 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4202-#: apt.conf.5.xml:766
4203+#: apt.conf.5.xml:775
4204 msgid ""
4205 "Output information about the process of accessing collections of packages "
4206 "stored on CD-ROMs."
4207 msgstr ""
4208
4209 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4210-#: apt.conf.5.xml:773
4211+#: apt.conf.5.xml:782
4212 msgid "<literal>Debug::BuildDeps</literal>"
4213 msgstr ""
4214
4215 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4216-#: apt.conf.5.xml:776
4217+#: apt.conf.5.xml:785
4218 msgid "Describes the process of resolving build-dependencies in &apt-get;."
4219 msgstr ""
4220
4221 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4222-#: apt.conf.5.xml:783
4223+#: apt.conf.5.xml:792
4224 msgid "<literal>Debug::Hashes</literal>"
4225 msgstr ""
4226
4227 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4228-#: apt.conf.5.xml:786
4229+#: apt.conf.5.xml:795
4230 msgid ""
4231 "Output each cryptographic hash that is generated by the "
4232 "<literal>apt</literal> libraries."
4233 msgstr ""
4234
4235 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4236-#: apt.conf.5.xml:793
4237+#: apt.conf.5.xml:802
4238 msgid "<literal>Debug::IdentCDROM</literal>"
4239 msgstr ""
4240
4241 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4242-#: apt.conf.5.xml:796
4243+#: apt.conf.5.xml:805
4244 msgid ""
4245 "Do not include information from <literal>statfs</literal>, namely the number "
4246 "of used and free blocks on the CD-ROM filesystem, when generating an ID for "
4247@@ -5634,92 +5663,92 @@
4248 msgstr ""
4249
4250 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4251-#: apt.conf.5.xml:804
4252+#: apt.conf.5.xml:813
4253 msgid "<literal>Debug::NoLocking</literal>"
4254 msgstr ""
4255
4256 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4257-#: apt.conf.5.xml:807
4258+#: apt.conf.5.xml:816
4259 msgid ""
4260 "Disable all file locking. For instance, this will allow two instances of "
4261 "<quote><literal>apt-get update</literal></quote> to run at the same time."
4262 msgstr ""
4263
4264 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4265-#: apt.conf.5.xml:815
4266+#: apt.conf.5.xml:824
4267 msgid "<literal>Debug::pkgAcquire</literal>"
4268 msgstr ""
4269
4270 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4271-#: apt.conf.5.xml:819
4272+#: apt.conf.5.xml:828
4273 msgid "Log when items are added to or removed from the global download queue."
4274 msgstr ""
4275
4276 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4277-#: apt.conf.5.xml:826
4278+#: apt.conf.5.xml:835
4279 msgid "<literal>Debug::pkgAcquire::Auth</literal>"
4280 msgstr ""
4281
4282 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4283-#: apt.conf.5.xml:829
4284+#: apt.conf.5.xml:838
4285 msgid ""
4286 "Output status messages and errors related to verifying checksums and "
4287 "cryptographic signatures of downloaded files."
4288 msgstr ""
4289
4290 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4291-#: apt.conf.5.xml:836
4292+#: apt.conf.5.xml:845
4293 msgid "<literal>Debug::pkgAcquire::Diffs</literal>"
4294 msgstr ""
4295
4296 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4297-#: apt.conf.5.xml:839
4298+#: apt.conf.5.xml:848
4299 msgid ""
4300 "Output information about downloading and applying package index list diffs, "
4301 "and errors relating to package index list diffs."
4302 msgstr ""
4303
4304 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4305-#: apt.conf.5.xml:847
4306+#: apt.conf.5.xml:856
4307 msgid "<literal>Debug::pkgAcquire::RRed</literal>"
4308 msgstr ""
4309
4310 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4311-#: apt.conf.5.xml:851
4312+#: apt.conf.5.xml:860
4313 msgid ""
4314 "Output information related to patching apt package lists when downloading "
4315 "index diffs instead of full indices."
4316 msgstr ""
4317
4318 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4319-#: apt.conf.5.xml:858
4320+#: apt.conf.5.xml:867
4321 msgid "<literal>Debug::pkgAcquire::Worker</literal>"
4322 msgstr ""
4323
4324 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4325-#: apt.conf.5.xml:862
4326+#: apt.conf.5.xml:871
4327 msgid "Log all interactions with the sub-processes that actually perform downloads."
4328 msgstr ""
4329
4330 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4331-#: apt.conf.5.xml:869
4332+#: apt.conf.5.xml:878
4333 msgid "<literal>Debug::pkgAutoRemove</literal>"
4334 msgstr ""
4335
4336 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4337-#: apt.conf.5.xml:873
4338+#: apt.conf.5.xml:882
4339 msgid ""
4340 "Log events related to the automatically-installed status of packages and to "
4341 "the removal of unused packages."
4342 msgstr ""
4343
4344 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4345-#: apt.conf.5.xml:880
4346+#: apt.conf.5.xml:889
4347 msgid "<literal>Debug::pkgDepCache::AutoInstall</literal>"
4348 msgstr ""
4349
4350 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4351-#: apt.conf.5.xml:883
4352+#: apt.conf.5.xml:892
4353 msgid ""
4354 "Generate debug messages describing which packages are being automatically "
4355 "installed to resolve dependencies. This corresponds to the initial "
4356@@ -5729,12 +5758,12 @@
4357 msgstr ""
4358
4359 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4360-#: apt.conf.5.xml:894
4361+#: apt.conf.5.xml:903
4362 msgid "<literal>Debug::pkgDepCache::Marker</literal>"
4363 msgstr ""
4364
4365 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4366-#: apt.conf.5.xml:897
4367+#: apt.conf.5.xml:906
4368 msgid ""
4369 "Generate debug messages describing which package is marked as "
4370 "keep/install/remove while the ProblemResolver does his work. Each addition "
4371@@ -5752,90 +5781,90 @@
4372 msgstr ""
4373
4374 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4375-#: apt.conf.5.xml:916
4376+#: apt.conf.5.xml:925
4377 msgid "<literal>Debug::pkgInitConfig</literal>"
4378 msgstr ""
4379
4380 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4381-#: apt.conf.5.xml:919
4382+#: apt.conf.5.xml:928
4383 msgid "Dump the default configuration to standard error on startup."
4384 msgstr ""
4385
4386 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4387-#: apt.conf.5.xml:926
4388+#: apt.conf.5.xml:935
4389 msgid "<literal>Debug::pkgDPkgPM</literal>"
4390 msgstr ""
4391
4392 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4393-#: apt.conf.5.xml:929
4394+#: apt.conf.5.xml:938
4395 msgid ""
4396 "When invoking &dpkg;, output the precise command line with which it is being "
4397 "invoked, with arguments separated by a single space character."
4398 msgstr ""
4399
4400 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4401-#: apt.conf.5.xml:937
4402+#: apt.conf.5.xml:946
4403 msgid "<literal>Debug::pkgDPkgProgressReporting</literal>"
4404 msgstr ""
4405
4406 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4407-#: apt.conf.5.xml:940
4408+#: apt.conf.5.xml:949
4409 msgid ""
4410 "Output all the data received from &dpkg; on the status file descriptor and "
4411 "any errors encountered while parsing it."
4412 msgstr ""
4413
4414 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4415-#: apt.conf.5.xml:947
4416+#: apt.conf.5.xml:956
4417 msgid "<literal>Debug::pkgOrderList</literal>"
4418 msgstr ""
4419
4420 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4421-#: apt.conf.5.xml:951
4422+#: apt.conf.5.xml:960
4423 msgid ""
4424 "Generate a trace of the algorithm that decides the order in which "
4425 "<literal>apt</literal> should pass packages to &dpkg;."
4426 msgstr ""
4427
4428 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4429-#: apt.conf.5.xml:959
4430+#: apt.conf.5.xml:968
4431 msgid "<literal>Debug::pkgPackageManager</literal>"
4432 msgstr ""
4433
4434 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4435-#: apt.conf.5.xml:963
4436+#: apt.conf.5.xml:972
4437 msgid "Output status messages tracing the steps performed when invoking &dpkg;."
4438 msgstr ""
4439
4440 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4441-#: apt.conf.5.xml:970
4442+#: apt.conf.5.xml:979
4443 msgid "<literal>Debug::pkgPolicy</literal>"
4444 msgstr ""
4445
4446 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4447-#: apt.conf.5.xml:974
4448+#: apt.conf.5.xml:983
4449 msgid "Output the priority of each package list on startup."
4450 msgstr ""
4451
4452 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4453-#: apt.conf.5.xml:980
4454+#: apt.conf.5.xml:989
4455 msgid "<literal>Debug::pkgProblemResolver</literal>"
4456 msgstr ""
4457
4458 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4459-#: apt.conf.5.xml:984
4460+#: apt.conf.5.xml:993
4461 msgid ""
4462 "Trace the execution of the dependency resolver (this applies only to what "
4463 "happens when a complex dependency problem is encountered)."
4464 msgstr ""
4465
4466 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4467-#: apt.conf.5.xml:992
4468+#: apt.conf.5.xml:1001
4469 msgid "<literal>Debug::pkgProblemResolver::ShowScores</literal>"
4470 msgstr ""
4471
4472 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4473-#: apt.conf.5.xml:995
4474+#: apt.conf.5.xml:1004
4475 msgid ""
4476 "Display a list of all installed packages with their calculated score used by "
4477 "the pkgProblemResolver. The description of the package is the same as "
4478@@ -5843,39 +5872,39 @@
4479 msgstr ""
4480
4481 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><term>
4482-#: apt.conf.5.xml:1003
4483+#: apt.conf.5.xml:1012
4484 msgid "<literal>Debug::sourceList</literal>"
4485 msgstr ""
4486
4487 #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para>
4488-#: apt.conf.5.xml:1007
4489+#: apt.conf.5.xml:1016
4490 msgid ""
4491 "Print information about the vendors read from "
4492 "<filename>/etc/apt/vendors.list</filename>."
4493 msgstr ""
4494
4495 #. type: Content of: <refentry><refsect1><para>
4496-#: apt.conf.5.xml:1030
4497+#: apt.conf.5.xml:1039
4498 msgid ""
4499 "&configureindex; is a configuration file showing example values for all "
4500 "possible options."
4501 msgstr ""
4502
4503 #. type: Content of: <refentry><refsect1><variablelist>
4504-#: apt.conf.5.xml:1037
4505+#: apt.conf.5.xml:1046
4506 msgid "&file-aptconf;"
4507 msgstr ""
4508
4509 #. ? reading apt.conf
4510 #. type: Content of: <refentry><refsect1><para>
4511-#: apt.conf.5.xml:1042
4512+#: apt.conf.5.xml:1051
4513 msgid "&apt-cache;, &apt-config;, &apt-preferences;."
4514 msgstr ""
4515
4516 #. The last update date
4517 #. type: Content of: <refentry><refentryinfo>
4518 #: apt_preferences.5.xml:13
4519-msgid "&apt-author.team; &apt-email; &apt-product; <date>04 May 2009</date>"
4520+msgid "&apt-author.team; &apt-email; &apt-product; <date>16 February 2010</date>"
4521 msgstr ""
4522
4523 #. type: Content of: <refentry><refnamediv><refname>
4524@@ -5923,6 +5952,17 @@
4525 #. type: Content of: <refentry><refsect1><para>
4526 #: apt_preferences.5.xml:56
4527 msgid ""
4528+"Preferences are a strong power in the hands of a system administrator but "
4529+"they can become also their biggest nightmare if used without care! APT will "
4530+"not questioning the preferences so wrong settings will therefore lead to "
4531+"uninstallable packages or wrong decisions while upgrading packages. Even "
4532+"more problems will arise if multiply distribution releases are mixed without "
4533+"a good understanding of the following paragraphs. You have been warned."
4534+msgstr ""
4535+
4536+#. type: Content of: <refentry><refsect1><para>
4537+#: apt_preferences.5.xml:64
4538+msgid ""
4539 "Note that the files in the <filename>/etc/apt/preferences.d</filename> "
4540 "directory are parsed in alphanumeric ascending order and need to obey the "
4541 "following naming convention: The files have no or "
4542@@ -5932,12 +5972,12 @@
4543 msgstr ""
4544
4545 #. type: Content of: <refentry><refsect1><refsect2><title>
4546-#: apt_preferences.5.xml:63
4547+#: apt_preferences.5.xml:71
4548 msgid "APT's Default Priority Assignments"
4549 msgstr ""
4550
4551 #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
4552-#: apt_preferences.5.xml:78
4553+#: apt_preferences.5.xml:86
4554 #, no-wrap
4555 msgid ""
4556 "<command>apt-get install -t testing "
4557@@ -5945,13 +5985,13 @@
4558 msgstr ""
4559
4560 #. type: Content of: <refentry><refsect1><refsect2><para><programlisting>
4561-#: apt_preferences.5.xml:81
4562+#: apt_preferences.5.xml:89
4563 #, no-wrap
4564 msgid "APT::Default-Release \"stable\";\n"
4565 msgstr ""
4566
4567 #. type: Content of: <refentry><refsect1><refsect2><para>
4568-#: apt_preferences.5.xml:65
4569+#: apt_preferences.5.xml:73
4570 msgid ""
4571 "If there is no preferences file or if there is no entry in the file that "
4572 "applies to a particular version then the priority assigned to that version "
4573@@ -5968,39 +6008,39 @@
4574 msgstr ""
4575
4576 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4577-#: apt_preferences.5.xml:90
4578+#: apt_preferences.5.xml:98
4579 msgid "priority 100"
4580 msgstr ""
4581
4582 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4583-#: apt_preferences.5.xml:91
4584+#: apt_preferences.5.xml:99
4585 msgid "to the version that is already installed (if any)."
4586 msgstr ""
4587
4588 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4589-#: apt_preferences.5.xml:95
4590+#: apt_preferences.5.xml:103
4591 msgid "priority 500"
4592 msgstr ""
4593
4594 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4595-#: apt_preferences.5.xml:96
4596+#: apt_preferences.5.xml:104
4597 msgid ""
4598 "to the versions that are not installed and do not belong to the target "
4599 "release."
4600 msgstr ""
4601
4602 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4603-#: apt_preferences.5.xml:100
4604+#: apt_preferences.5.xml:108
4605 msgid "priority 990"
4606 msgstr ""
4607
4608 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4609-#: apt_preferences.5.xml:101
4610+#: apt_preferences.5.xml:109
4611 msgid "to the versions that are not installed and belong to the target release."
4612 msgstr ""
4613
4614 #. type: Content of: <refentry><refsect1><refsect2><para>
4615-#: apt_preferences.5.xml:85
4616+#: apt_preferences.5.xml:93
4617 msgid ""
4618 "If the target release has been specified then APT uses the following "
4619 "algorithm to set the priorities of the versions of a package. Assign: "
4620@@ -6008,7 +6048,7 @@
4621 msgstr ""
4622
4623 #. type: Content of: <refentry><refsect1><refsect2><para>
4624-#: apt_preferences.5.xml:106
4625+#: apt_preferences.5.xml:114
4626 msgid ""
4627 "If the target release has not been specified then APT simply assigns "
4628 "priority 100 to all installed package versions and priority 500 to all "
4629@@ -6016,14 +6056,14 @@
4630 msgstr ""
4631
4632 #. type: Content of: <refentry><refsect1><refsect2><para>
4633-#: apt_preferences.5.xml:110
4634+#: apt_preferences.5.xml:118
4635 msgid ""
4636 "APT then applies the following rules, listed in order of precedence, to "
4637 "determine which version of a package to install."
4638 msgstr ""
4639
4640 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4641-#: apt_preferences.5.xml:113
4642+#: apt_preferences.5.xml:121
4643 msgid ""
4644 "Never downgrade unless the priority of an available version exceeds 1000. "
4645 "(\"Downgrading\" is installing a less recent version of a package in place "
4646@@ -6033,19 +6073,19 @@
4647 msgstr ""
4648
4649 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4650-#: apt_preferences.5.xml:119
4651+#: apt_preferences.5.xml:127
4652 msgid "Install the highest priority version."
4653 msgstr ""
4654
4655 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4656-#: apt_preferences.5.xml:120
4657+#: apt_preferences.5.xml:128
4658 msgid ""
4659 "If two or more versions have the same priority, install the most recent one "
4660 "(that is, the one with the higher version number)."
4661 msgstr ""
4662
4663 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4664-#: apt_preferences.5.xml:123
4665+#: apt_preferences.5.xml:131
4666 msgid ""
4667 "If two or more versions have the same priority and version number but either "
4668 "the packages differ in some of their metadata or the "
4669@@ -6053,7 +6093,7 @@
4670 msgstr ""
4671
4672 #. type: Content of: <refentry><refsect1><refsect2><para>
4673-#: apt_preferences.5.xml:129
4674+#: apt_preferences.5.xml:137
4675 msgid ""
4676 "In a typical situation, the installed version of a package (priority 100) "
4677 "is not as recent as one of the versions available from the sources listed in "
4678@@ -6064,7 +6104,7 @@
4679 msgstr ""
4680
4681 #. type: Content of: <refentry><refsect1><refsect2><para>
4682-#: apt_preferences.5.xml:136
4683+#: apt_preferences.5.xml:144
4684 msgid ""
4685 "More rarely, the installed version of a package is <emphasis>more</emphasis> "
4686 "recent than any of the other available versions. The package will not be "
4687@@ -6074,7 +6114,7 @@
4688 msgstr ""
4689
4690 #. type: Content of: <refentry><refsect1><refsect2><para>
4691-#: apt_preferences.5.xml:141
4692+#: apt_preferences.5.xml:149
4693 msgid ""
4694 "Sometimes the installed version of a package is more recent than the version "
4695 "belonging to the target release, but not as recent as a version belonging to "
4696@@ -6086,12 +6126,12 @@
4697 msgstr ""
4698
4699 #. type: Content of: <refentry><refsect1><refsect2><title>
4700-#: apt_preferences.5.xml:150
4701+#: apt_preferences.5.xml:158
4702 msgid "The Effect of APT Preferences"
4703 msgstr ""
4704
4705 #. type: Content of: <refentry><refsect1><refsect2><para>
4706-#: apt_preferences.5.xml:152
4707+#: apt_preferences.5.xml:160
4708 msgid ""
4709 "The APT preferences file allows the system administrator to control the "
4710 "assignment of priorities. The file consists of one or more multi-line "
4711@@ -6100,7 +6140,7 @@
4712 msgstr ""
4713
4714 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4715-#: apt_preferences.5.xml:158
4716+#: apt_preferences.5.xml:166
4717 msgid ""
4718 "The specific form assigns a priority (a \"Pin-Priority\") to one or more "
4719 "specified packages and specified version or version range. For example, the "
4720@@ -6110,7 +6150,7 @@
4721 msgstr ""
4722
4723 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
4724-#: apt_preferences.5.xml:165
4725+#: apt_preferences.5.xml:173
4726 #, no-wrap
4727 msgid ""
4728 "Package: perl\n"
4729@@ -6119,7 +6159,7 @@
4730 msgstr ""
4731
4732 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4733-#: apt_preferences.5.xml:171
4734+#: apt_preferences.5.xml:179
4735 msgid ""
4736 "The general form assigns a priority to all of the package versions in a "
4737 "given distribution (that is, to all the versions of packages that are listed "
4738@@ -6129,7 +6169,7 @@
4739 msgstr ""
4740
4741 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4742-#: apt_preferences.5.xml:177
4743+#: apt_preferences.5.xml:185
4744 msgid ""
4745 "This general-form entry in the APT preferences file applies only to groups "
4746 "of packages. For example, the following record assigns a high priority to "
4747@@ -6137,7 +6177,7 @@
4748 msgstr ""
4749
4750 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
4751-#: apt_preferences.5.xml:182
4752+#: apt_preferences.5.xml:190
4753 #, no-wrap
4754 msgid ""
4755 "Package: *\n"
4756@@ -6146,7 +6186,7 @@
4757 msgstr ""
4758
4759 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4760-#: apt_preferences.5.xml:187
4761+#: apt_preferences.5.xml:195
4762 msgid ""
4763 "A note of caution: the keyword used here is \"<literal>origin</literal>\". "
4764 "This should not be confused with the Origin of a distribution as specified "
4765@@ -6156,7 +6196,7 @@
4766 msgstr ""
4767
4768 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4769-#: apt_preferences.5.xml:193
4770+#: apt_preferences.5.xml:201
4771 msgid ""
4772 "The following record assigns a low priority to all package versions "
4773 "belonging to any distribution whose Archive name is "
4774@@ -6164,7 +6204,7 @@
4775 msgstr ""
4776
4777 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
4778-#: apt_preferences.5.xml:197
4779+#: apt_preferences.5.xml:205
4780 #, no-wrap
4781 msgid ""
4782 "Package: *\n"
4783@@ -6173,7 +6213,7 @@
4784 msgstr ""
4785
4786 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4787-#: apt_preferences.5.xml:202
4788+#: apt_preferences.5.xml:210
4789 msgid ""
4790 "The following record assigns a high priority to all package versions "
4791 "belonging to any distribution whose Codename is "
4792@@ -6181,7 +6221,7 @@
4793 msgstr ""
4794
4795 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
4796-#: apt_preferences.5.xml:206
4797+#: apt_preferences.5.xml:214
4798 #, no-wrap
4799 msgid ""
4800 "Package: *\n"
4801@@ -6190,7 +6230,7 @@
4802 msgstr ""
4803
4804 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4805-#: apt_preferences.5.xml:211
4806+#: apt_preferences.5.xml:219
4807 msgid ""
4808 "The following record assigns a high priority to all package versions "
4809 "belonging to any release whose Archive name is \"<literal>stable</literal>\" "
4810@@ -6198,7 +6238,7 @@
4811 msgstr ""
4812
4813 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><programlisting>
4814-#: apt_preferences.5.xml:216
4815+#: apt_preferences.5.xml:224
4816 #, no-wrap
4817 msgid ""
4818 "Package: *\n"
4819@@ -6207,82 +6247,82 @@
4820 msgstr ""
4821
4822 #. type: Content of: <refentry><refsect1><refsect2><title>
4823-#: apt_preferences.5.xml:227
4824+#: apt_preferences.5.xml:235
4825 msgid "How APT Interprets Priorities"
4826 msgstr ""
4827
4828 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4829-#: apt_preferences.5.xml:235
4830+#: apt_preferences.5.xml:243
4831 msgid "P &gt; 1000"
4832 msgstr ""
4833
4834 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4835-#: apt_preferences.5.xml:236
4836+#: apt_preferences.5.xml:244
4837 msgid ""
4838 "causes a version to be installed even if this constitutes a downgrade of the "
4839 "package"
4840 msgstr ""
4841
4842 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4843-#: apt_preferences.5.xml:240
4844+#: apt_preferences.5.xml:248
4845 msgid "990 &lt; P &lt;=1000"
4846 msgstr ""
4847
4848 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4849-#: apt_preferences.5.xml:241
4850+#: apt_preferences.5.xml:249
4851 msgid ""
4852 "causes a version to be installed even if it does not come from the target "
4853 "release, unless the installed version is more recent"
4854 msgstr ""
4855
4856 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4857-#: apt_preferences.5.xml:246
4858+#: apt_preferences.5.xml:254
4859 msgid "500 &lt; P &lt;=990"
4860 msgstr ""
4861
4862 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4863-#: apt_preferences.5.xml:247
4864+#: apt_preferences.5.xml:255
4865 msgid ""
4866 "causes a version to be installed unless there is a version available "
4867 "belonging to the target release or the installed version is more recent"
4868 msgstr ""
4869
4870 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4871-#: apt_preferences.5.xml:252
4872+#: apt_preferences.5.xml:260
4873 msgid "100 &lt; P &lt;=500"
4874 msgstr ""
4875
4876 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4877-#: apt_preferences.5.xml:253
4878+#: apt_preferences.5.xml:261
4879 msgid ""
4880 "causes a version to be installed unless there is a version available "
4881 "belonging to some other distribution or the installed version is more recent"
4882 msgstr ""
4883
4884 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4885-#: apt_preferences.5.xml:258
4886+#: apt_preferences.5.xml:266
4887 msgid "0 &lt; P &lt;=100"
4888 msgstr ""
4889
4890 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4891-#: apt_preferences.5.xml:259
4892+#: apt_preferences.5.xml:267
4893 msgid ""
4894 "causes a version to be installed only if there is no installed version of "
4895 "the package"
4896 msgstr ""
4897
4898 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4899-#: apt_preferences.5.xml:263
4900+#: apt_preferences.5.xml:271
4901 msgid "P &lt; 0"
4902 msgstr ""
4903
4904 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
4905-#: apt_preferences.5.xml:264
4906+#: apt_preferences.5.xml:272
4907 msgid "prevents the version from being installed"
4908 msgstr ""
4909
4910 #. type: Content of: <refentry><refsect1><refsect2><para>
4911-#: apt_preferences.5.xml:230
4912+#: apt_preferences.5.xml:238
4913 msgid ""
4914 "Priorities (P) assigned in the APT preferences file must be positive or "
4915 "negative integers. They are interpreted as follows (roughly speaking): "
4916@@ -6290,7 +6330,7 @@
4917 msgstr ""
4918
4919 #. type: Content of: <refentry><refsect1><refsect2><para>
4920-#: apt_preferences.5.xml:269
4921+#: apt_preferences.5.xml:277
4922 msgid ""
4923 "If any specific-form records match an available package version then the "
4924 "first such record determines the priority of the package version. Failing "
4925@@ -6299,14 +6339,14 @@
4926 msgstr ""
4927
4928 #. type: Content of: <refentry><refsect1><refsect2><para>
4929-#: apt_preferences.5.xml:275
4930+#: apt_preferences.5.xml:283
4931 msgid ""
4932 "For example, suppose the APT preferences file contains the three records "
4933 "presented earlier:"
4934 msgstr ""
4935
4936 #. type: Content of: <refentry><refsect1><refsect2><programlisting>
4937-#: apt_preferences.5.xml:279
4938+#: apt_preferences.5.xml:287
4939 #, no-wrap
4940 msgid ""
4941 "Package: perl\n"
4942@@ -6323,12 +6363,12 @@
4943 msgstr ""
4944
4945 #. type: Content of: <refentry><refsect1><refsect2><para>
4946-#: apt_preferences.5.xml:292
4947+#: apt_preferences.5.xml:300
4948 msgid "Then:"
4949 msgstr ""
4950
4951 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4952-#: apt_preferences.5.xml:294
4953+#: apt_preferences.5.xml:302
4954 msgid ""
4955 "The most recent available version of the <literal>perl</literal> package "
4956 "will be installed, so long as that version's version number begins with "
4957@@ -6338,7 +6378,7 @@
4958 msgstr ""
4959
4960 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4961-#: apt_preferences.5.xml:299
4962+#: apt_preferences.5.xml:307
4963 msgid ""
4964 "A version of any package other than <literal>perl</literal> that is "
4965 "available from the local system has priority over other versions, even "
4966@@ -6346,7 +6386,7 @@
4967 msgstr ""
4968
4969 #. type: Content of: <refentry><refsect1><refsect2><para><itemizedlist><listitem><simpara>
4970-#: apt_preferences.5.xml:303
4971+#: apt_preferences.5.xml:311
4972 msgid ""
4973 "A version of a package whose origin is not the local system but some other "
4974 "site listed in &sources-list; and which belongs to an "
4975@@ -6355,12 +6395,12 @@
4976 msgstr ""
4977
4978 #. type: Content of: <refentry><refsect1><refsect2><title>
4979-#: apt_preferences.5.xml:313
4980+#: apt_preferences.5.xml:321
4981 msgid "Determination of Package Version and Distribution Properties"
4982 msgstr ""
4983
4984 #. type: Content of: <refentry><refsect1><refsect2><para>
4985-#: apt_preferences.5.xml:315
4986+#: apt_preferences.5.xml:323
4987 msgid ""
4988 "The locations listed in the &sources-list; file should provide "
4989 "<filename>Packages</filename> and <filename>Release</filename> files to "
4990@@ -6368,27 +6408,27 @@
4991 msgstr ""
4992
4993 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><term>
4994-#: apt_preferences.5.xml:327
4995+#: apt_preferences.5.xml:335
4996 msgid "the <literal>Package:</literal> line"
4997 msgstr ""
4998
4999 #. type: Content of: <refentry><refsect1><refsect2><para><variablelist><varlistentry><listitem><simpara>
5000-#: apt_preferences.5.xml:328
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: