/[gentoo]/xml/htdocs/proj/en/glep/glep-0009.html
Gentoo

Contents of /xml/htdocs/proj/en/glep/glep-0009.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download) (as text)
Tue Oct 10 20:25:14 2006 UTC (7 years, 10 months ago) by g2boojum
Branch: MAIN
Changes since 1.3: +287 -44 lines
File MIME type: text/html
regenerate all .html files

1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <!--
5 This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new
6 PEP, see http://www.python.org/peps/pep-0001.html for instructions and links
7 to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE!
8 -->
9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 9 -- Gentoo Package Update System</title>
13 <style type="text/css">
14
15 /*
16 :Author: David Goodger
17 :Contact: goodger@users.sourceforge.net
18 :date: $Date: 2003/06/02 17:03:08 $
19 :version: $Revision: 1.1 $
20 :copyright: This stylesheet has been placed in the public domain.
21
22 Default cascading style sheet for the PEP HTML output of Docutils.
23 */
24
25 .first {
26 margin-top: 0 }
27
28 .last {
29 margin-bottom: 0 }
30
31 .navigation {
32 width: 100% ;
33 background: #cc99ff ;
34 margin-top: 0px ;
35 margin-bottom: 0px }
36
37 .navigation .navicon {
38 width: 150px ;
39 height: 35px }
40
41 .navigation .textlinks {
42 padding-left: 1em ;
43 text-align: left }
44
45 .navigation td, .navigation th {
46 padding-left: 0em ;
47 padding-right: 0em ;
48 vertical-align: middle }
49
50 .rfc2822 {
51 margin-top: 0.5em ;
52 margin-left: 0.5em ;
53 margin-right: 0.5em ;
54 margin-bottom: 0em }
55
56 .rfc2822 td {
57 text-align: left }
58
59 .rfc2822 th.field-name {
60 text-align: right ;
61 font-family: sans-serif ;
62 padding-right: 0.5em ;
63 font-weight: bold ;
64 margin-bottom: 0em }
65
66 a.toc-backref {
67 text-decoration: none ;
68 color: black }
69
70 body {
71 margin: 0px ;
72 margin-bottom: 1em ;
73 padding: 0px }
74
75 dd {
76 margin-bottom: 0.5em }
77
78 div.section {
79 margin-left: 1em ;
80 margin-right: 1em ;
81 margin-bottom: 1.5em }
82
83 div.section div.section {
84 margin-left: 0em ;
85 margin-right: 0em ;
86 margin-top: 1.5em }
87
88 div.abstract {
89 margin: 2em 5em }
90
91 div.abstract p.topic-title {
92 font-weight: bold ;
93 text-align: center }
94
95 div.attention, div.caution, div.danger, div.error, div.hint,
96 div.important, div.note, div.tip, div.warning {
97 margin: 2em ;
98 border: medium outset ;
99 padding: 1em }
100
101 div.attention p.admonition-title, div.caution p.admonition-title,
102 div.danger p.admonition-title, div.error p.admonition-title,
103 div.warning p.admonition-title {
104 color: red ;
105 font-weight: bold ;
106 font-family: sans-serif }
107
108 div.hint p.admonition-title, div.important p.admonition-title,
109 div.note p.admonition-title, div.tip p.admonition-title {
110 font-weight: bold ;
111 font-family: sans-serif }
112
113 div.figure {
114 margin-left: 2em }
115
116 div.footer, div.header {
117 font-size: smaller }
118
119 div.footer {
120 margin-left: 1em ;
121 margin-right: 1em }
122
123 div.system-messages {
124 margin: 5em }
125
126 div.system-messages h1 {
127 color: red }
128
129 div.system-message {
130 border: medium outset ;
131 padding: 1em }
132
133 div.system-message p.system-message-title {
134 color: red ;
135 font-weight: bold }
136
137 div.topic {
138 margin: 2em }
139
140 h1 {
141 font-family: sans-serif ;
142 font-size: large }
143
144 h2 {
145 font-family: sans-serif ;
146 font-size: medium }
147
148 h3 {
149 font-family: sans-serif ;
150 font-size: small }
151
152 h4 {
153 font-family: sans-serif ;
154 font-style: italic ;
155 font-size: small }
156
157 h5 {
158 font-family: sans-serif;
159 font-size: x-small }
160
161 h6 {
162 font-family: sans-serif;
163 font-style: italic ;
164 font-size: x-small }
165
166 .section hr {
167 width: 75% }
168
169 ol.simple, ul.simple {
170 margin-bottom: 1em }
171
172 ol.arabic {
173 list-style: decimal }
174
175 ol.loweralpha {
176 list-style: lower-alpha }
177
178 ol.upperalpha {
179 list-style: upper-alpha }
180
181 ol.lowerroman {
182 list-style: lower-roman }
183
184 ol.upperroman {
185 list-style: upper-roman }
186
187 p.caption {
188 font-style: italic }
189
190 p.credits {
191 font-style: italic ;
192 font-size: smaller }
193
194 p.label {
195 white-space: nowrap }
196
197 p.topic-title {
198 font-family: sans-serif ;
199 font-weight: bold }
200
201 pre.line-block {
202 font-family: serif ;
203 font-size: 100% }
204
205 pre.literal-block, pre.doctest-block {
206 margin-left: 2em ;
207 margin-right: 2em ;
208 background-color: #eeeeee }
209
210 span.classifier {
211 font-family: sans-serif ;
212 font-style: oblique }
213
214 span.classifier-delimiter {
215 font-family: sans-serif ;
216 font-weight: bold }
217
218 span.interpreted {
219 font-family: sans-serif }
220
221 span.option-argument {
222 font-style: italic }
223
224 span.pre {
225 white-space: pre }
226
227 span.problematic {
228 color: red }
229
230 table {
231 margin-top: 0.5em ;
232 margin-bottom: 0.5em }
233
234 td, th {
235 padding-left: 0.5em ;
236 padding-right: 0.5em ;
237 vertical-align: top }
238
239 td.num {
240 text-align: right }
241
242 th.field-name {
243 font-weight: bold ;
244 text-align: left ;
245 white-space: nowrap }
246
247 h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
248 font-size: 100% }
249
250 tt {
251 background-color: #eeeeee }
252
253 ul.auto-toc {
254 list-style-type: none }
255
256 </style>
257 </head>
258 <body bgcolor="white">
259 <table class="navigation" cellpadding="0" cellspacing="0"
260 width="100%" border="0">
261 <tr><td class="navicon" width="150" height="35">
262 <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
263 <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
264 border="0" width="150" height="35" /></a></td>
265 <td class="textlinks" align="left">
266 [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
267 [<b><a href="http://www.gentoo.org/peps">GLEP Index</a></b>]
268 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0009.txt">GLEP Source</a></b>]
269 </td></tr></table>
270 <table class="rfc2822 docutils field-list" frame="void" rules="none">
271 <col class="field-name" />
272 <col class="field-body" />
273 <tbody valign="top">
274 <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">9</td>
275 </tr>
276 <tr class="field"><th class="field-name">Title:</th><td class="field-body">Gentoo Package Update System</td>
277 </tr>
278 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.3</td>
279 </tr>
280 <tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0009.txt?cvsroot=gentoo">2004/01/13 20:47:35</a></td>
281 </tr>
282 <tr class="field"><th class="field-name">Author:</th><td class="field-body">John J. Whitney &lt;jjw&#32;&#97;t&#32;linuxmail.org&gt;</td>
283 </tr>
284 <tr class="field"><th class="field-name">Status:</th><td class="field-body">deferred</td>
285 </tr>
286 <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
287 </tr>
288 <tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0002.html">text/x-rst</a></td>
289 </tr>
290 <tr class="field"><th class="field-name">Created:</th><td class="field-body">19-Jul-2003</td>
291 </tr>
292 <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">25-Jul-2003</td>
293 </tr>
294 </tbody>
295 </table>
296 <hr />
297 <div class="contents topic">
298 <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
299 <ul class="simple">
300 <li><a class="reference" href="#abstract" id="id3" name="id3">Abstract</a></li>
301 <li><a class="reference" href="#motivation" id="id4" name="id4">Motivation</a></li>
302 <li><a class="reference" href="#server-implementation" id="id5" name="id5">Server Implementation</a></li>
303 <li><a class="reference" href="#client-implementation" id="id6" name="id6">Client Implementation</a></li>
304 <li><a class="reference" href="#rationale" id="id7" name="id7">Rationale</a></li>
305 <li><a class="reference" href="#backwards-compatibility" id="id8" name="id8">Backwards Compatibility</a></li>
306 <li><a class="reference" href="#conclusion" id="id9" name="id9">Conclusion</a></li>
307 <li><a class="reference" href="#references" id="id10" name="id10">References</a></li>
308 <li><a class="reference" href="#copyright" id="id11" name="id11">Copyright</a></li>
309 </ul>
310 </div>
311 <div class="section">
312 <h1><a class="toc-backref" href="#id3" id="abstract" name="abstract">Abstract</a></h1>
313 <p>This document proposes an official package updating system for Gentoo Linux.
314 The Deltup project has been developed for this purpose. <a class="footnote-reference" href="#deltup" id="id1" name="id1">[1]</a></p>
315 <p>As packages grow larger the amount of redundant data keeps increasing. Updating
316 existing tarballs by patching is the natural way to handle source updates.</p>
317 </div>
318 <div class="section">
319 <h1><a class="toc-backref" href="#id4" id="motivation" name="motivation">Motivation</a></h1>
320 <p>This system will reduce mirror loads (potentially mirror size as well) and
321 significantly speed up downloads, making Gentoo much more attractive for users
322 with low-bandwidth connections.</p>
323 </div>
324 <div class="section">
325 <h1><a class="toc-backref" href="#id5" id="server-implementation" name="server-implementation">Server Implementation</a></h1>
326 <p>I propose that the patches be put onto the Gentoo Mirrors and stored in a new
327 directory called &quot;patchfiles&quot; which could be placed beside &quot;distfiles&quot;.</p>
328 <p>It would be advantageous to have a list of available patches within the portage
329 tree so that it can be updated during &quot;emerge sync&quot;. A file named &quot;dtu.list&quot;
330 can be created and placed in $PORTDIR/profiles.</p>
331 <p>If a machine can be set up to generate patches it should contain a local mirror
332 of distfiles which it can monitor for added packages. When a package is added
333 to distfiles the machine can try to determine the previous tarball so a patch
334 can be made and placed in the patchfiles dir. In addition, special-case patches
335 can be added manually.</p>
336 <p>The dtu.list file will be maintained by a special script. Whenever patches
337 are added or removed to the patchfiles dir, the script will make necessary
338 additions/removals in dtu.list. This will be done with minimal changes in the
339 file so it can be synchronized efficiently.</p>
340 </div>
341 <div class="section">
342 <h1><a class="toc-backref" href="#id6" id="client-implementation" name="client-implementation">Client Implementation</a></h1>
343 <p>The system will be optional for users and can be enabled by making portage
344 invoke efetch through the FETCHCOMMAND environment variable <a class="footnote-reference" href="#tinyhowto" id="id2" name="id2">[3]</a>.</p>
345 <p>When a package fetch is requested, the efetch/fetchcommand scripts (part of
346 Deltup) will scan the dtu.list file for updates and try downloading and applying
347 them if they exist, or fall back to a full package download if they don't or if
348 the patching process fails.</p>
349 </div>
350 <div class="section">
351 <h1><a class="toc-backref" href="#id7" id="rationale" name="rationale">Rationale</a></h1>
352 <p>The most controversial feature has been the addition of dtu.list to the portage
353 tree, so in this section I will list the reasons I support it.</p>
354 <ul class="simple">
355 <li>Flexibility. Without it, there must be a standard naming scheme which we
356 would be stuck with once the system is in place. Changing the system would
357 require serious compatibility breaks. With the dtu.list file we can change
358 the naming scheme easily without problems, or even have several different
359 naming schemes.</li>
360 <li>Features. Without patch information detecting different upgrade paths would
361 be impossible. Split package patching would also be impossible. If the info
362 is available we can use it to find the quickest upgrade path, like jumping
363 from a .0 release, or even disable certain patches if there are problems with
364 them.</li>
365 <li>It would be impossible to know which packages to upgrade from in some cases,
366 including renamed packages.</li>
367 <li>Knowing which patches are available will eliminate the overhead of attempting
368 to download patches which don't exist.</li>
369 </ul>
370 <p>The dtu.list file will contain several hundred kilobytes of data. That has
371 caused some concern over how efficiently it can be rsynced. To address these
372 concerns the file's format will be plaintext and care has been taken to
373 minimize the number of changes as removals/additions are made.</p>
374 </div>
375 <div class="section">
376 <h1><a class="toc-backref" href="#id8" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
377 <p>There are no backwards compatibility issues since Deltup can generate correct
378 package MD5sums.</p>
379 </div>
380 <div class="section">
381 <h1><a class="toc-backref" href="#id9" id="conclusion" name="conclusion">Conclusion</a></h1>
382 <p>I suggest we start with a scaled-down implementation and provide more as the
383 demand increases. All of the necesary code is already written and working in
384 non-official tests.</p>
385 </div>
386 <div class="section">
387 <h1><a class="toc-backref" href="#id10" id="references" name="references">References</a></h1>
388 <table class="docutils footnote" frame="void" id="deltup" rules="none">
389 <colgroup><col class="label" /><col /></colgroup>
390 <tbody valign="top">
391 <tr><td class="label"><a class="fn-backref" href="#id1" name="deltup">[1]</a></td><td><a class="reference" href="http://sourceforge.net/projects/deltup">http://sourceforge.net/projects/deltup</a></td></tr>
392 </tbody>
393 </table>
394 <table class="docutils footnote" frame="void" id="patches" rules="none">
395 <colgroup><col class="label" /><col /></colgroup>
396 <tbody valign="top">
397 <tr><td class="label"><a name="patches">[2]</a></td><td><a class="reference" href="ftp://sunsite.dk/projects/deltup/patchfiles">ftp://sunsite.dk/projects/deltup/patchfiles</a></td></tr>
398 </tbody>
399 </table>
400 <table class="docutils footnote" frame="void" id="tinyhowto" rules="none">
401 <colgroup><col class="label" /><col /></colgroup>
402 <tbody valign="top">
403 <tr><td class="label"><a class="fn-backref" href="#id2" name="tinyhowto">[3]</a></td><td>Tiny Deltup HOWTO
404 (<a class="reference" href="http://www.thedoh.com/linux/HOWTO/deltup">http://www.thedoh.com/linux/HOWTO/deltup</a>)</td></tr>
405 </tbody>
406 </table>
407 </div>
408 <div class="section">
409 <h1><a class="toc-backref" href="#id11" id="copyright" name="copyright">Copyright</a></h1>
410 <p>This document has been placed in the public domain.</p>
411 </div>
412
413 </div>
414 <div class="footer">
415 <hr class="footer" />
416 <a class="reference" href="glep-0009.txt">View document source</a>.
417 Generated on: 2006-10-10 20:23 UTC.
418 Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
419
420 </div>
421 </body>
422 </html>

  ViewVC Help
Powered by ViewVC 1.1.20