[BACK]Return to ctm.html CVS log [TXT][DIR] Up to [local] / www

Annotation of www/ctm.html, Revision 1.5

1.1       graichen    1: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
                      2: <HTML>
                      3: <HEAD>
                      4:    <TITLE>CTM</TITLE>
                      5: </HEAD>
1.5     ! flipk       6: <BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#23238E">
1.1       graichen    7:
1.5     ! flipk       8: <center>
        !             9: <img alt="CTM for OpenBSD" src=bsdctm.gif width=401 height=126>
        !            10: </center>
1.1       graichen   11:
1.5     ! flipk      12: <H3>What is ctm?</H3>
1.1       graichen   13:
                     14: <P>
1.5     ! flipk      15: Ctm is a system which was designed by Poul-Henning Kamp for making
        !            16: changes to a source tree available on a daily basis by email.
        !            17: This is a good way to stay up to date with the current source- or
        !            18: cvs-tree if you have a bad internet connection - for instance via modem.
1.1       graichen   19:
1.5     ! flipk      20: <P>
        !            21: Ctm uses very low bandwith for distributing the changes to the
        !            22: tree, and compresses them using gzip -9.
1.1       graichen   23:
1.5     ! flipk      24: <H3>How does it work?</H3>
1.1       graichen   25:
1.5     ! flipk      26: <P>
        !            27: The basic idea of ctm is that you subscribe to a special mailing list
        !            28: for a particular source tree. Each day you receive an email message
        !            29: containing all the changes to that tree during that period.
        !            30: One set of differences is called a &quot;delta&quot;.
1.1       graichen   31:
1.5     ! flipk      32: <P>
        !            33: You begin with a base set against which later deltas are patched.
        !            34: To begin using ctm you must grab the latest base set and all deltas
        !            35: after that; once you have processed those you can process later
        !            36: deltas you receive on the mailing list.
1.1       graichen   37:
1.5     ! flipk      38: <P>
        !            39: Bases are generated once approximate each 100 relative deltas, so you never
        !            40: have to grab more than 100 deltas to catch up.
1.1       graichen   41:
1.5     ! flipk      42: <H3>How much bandwidth does ctm use?</H3>
1.1       graichen   43:
1.5     ! flipk      44: <P>
        !            45: As mentioned above, the base set contains a full source tree in TAR format,
        !            46: and is thus quite large.  You must obtain the base set and all relative
        !            47: deltas up to present via ftp from the site listed below.  Sizes are:
        !            48:
        !            49: <ul>
        !            50: <li> approximately 55Mb for base/OpenBSD-src.XXXX.tar.gz
        !            51: <li> uncompressed, this is 250M or so
        !            52: <li> approximately 80Mb for base/OpenBSD-cvs.XXXX.tar.gz
        !            53: <li> uncompressed, this is 370M or so
        !            54: <li> relative deltas vary from 10k to 100k, and occasionally a couple of meg
        !            55: <li> ctm always splits deltas into 100k messages which are reassembled
        !            56:      automatically
        !            57: </ul>
1.1       graichen   58:
1.5     ! flipk      59: <P>
        !            60: Larger ctm updates are rare, though, usually occuring only after a major
        !            61: import of something like binutils, perl, etc.
1.1       graichen   62:
1.5     ! flipk      63: <H3>How do I use ctm?</H3>
1.1       graichen   64:
                     65: <UL>
1.5     ! flipk      66: <LI>Subscribe to the ctm mailing list for the source set you want.
        !            67: <p>
        !            68:    There are several mailing lists related to ctm.  There is a list for
        !            69:    updates to the source tree, a list for updates to the cvs tree, a list
        !            70:    for announcements where I'll post important announcements to ctm users,
        !            71:    and a list for seeing log messages from the ctm delta generator runs.
        !            72:    <p>
        !            73:    The following commands will subscribe you to the appropriate lists:
        !            74: <br><br><tt>
        !            75: For the source tree: <br>
        !            76:     <b>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</b><br>
        !            77: For the cvs tree:<br>
        !            78:     <b>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</b><br>
        !            79: For the announce list:<br>
        !            80:     <b>echo subscribe ctm-announce | mail majordomo@OpenBSD.org</b><br>
        !            81: For the ctm log list:<br>
        !            82:     <b>echo subscribe ctm-log | mail majordomo@OpenBSD.org</b><br>
        !            83: </tt><br>
        !            84:
        !            85: <LI>Wait until you get your first delta.
        !            86:
        !            87: <LI>Unpack and assemble the ctm delta using ctm_rmail.
        !            88: <br>
        !            89: <br>
        !            90: <tt>
        !            91:     <b>ctm_rmail -p. -d. -b. folder</b>
        !            92: </tt>
        !            93: <br><br>
        !            94: where <b>folder</b> is the mail folder containing the delta mail.
        !            95: <br>
        !            96: This will decode the ctm delta and place it in the working directory.
        !            97: The delta will be a file of the form OpenBSD-XXX.YYYY.gz, where XXX is
        !            98: either "src" or "cvs", and YYYY is the number of the delta.
        !            99: <p>
        !           100:
        !           101: <li>Grab the base set from the ftp site below, in the subdirectory
        !           102: <b>base-splitted/src</b> (for OpenBSD-src) or <b>base-splitted/cvs</b>
        !           103: (for OpenBSD-cvs).  Grab all files in that directory, and once you have
        !           104: them all you can create the base source tree with the following command:
        !           105:
        !           106: <br><br>
        !           107: <tt>
        !           108:     <b>cd target <br>
        !           109:     cat /splitted/OpenBSD-* | tar zxf - <br>
        !           110: </b></tt><br>
        !           111:
        !           112: where <b>splitted</b> is the directory in which you placed the files you
        !           113: grabbed.
        !           114:
        !           115: <p>
        !           116: It is no longer necessary to keep these files around, if you're sure
        !           117: you've got a complete tree.  However, be sure to note the number of the
        !           118: base, before continuing.
        !           119:
        !           120: <p>
        !           121: You now need to grab the deltas which have been generated since the base
        !           122: was generated.  Go to the ftp site below in the subdirectory <b>src</b> or
        !           123: <b>cvs</b> and grab every file whose number is <it>larger</it> than the
        !           124: number of the base you used.
        !           125:
        !           126: <p>
        !           127: The address of the base and deltas is:
        !           128:
        !           129: <ul>
        !           130: <li><a href="ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD/">
        !           131:      ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD/
        !           132: </a>
        !           133: </ul>
        !           134:
        !           135: <p>
        !           136: <ul>
        !           137: <li><b>NOTE:</b> I'm very interested in finding other sites around the world
        !           138:    that would be interested in mirroring these deltas.
        !           139: </ul>
        !           140: <p>
        !           141:
        !           142: <LI> Run ctm.
        !           143: <br>
        !           144:   <br>
        !           145:   <tt>
        !           146:      <b>cd target<br>
        !           147:      ctm -v -v /deltas/OpenBSD-src.*</b><br></tt>
        !           148: or<br><tt>
        !           149:      <b>cd target<br>
        !           150:      ctm -v -v /deltas/OpenBSD-cvs.*</b><br>
        !           151:   </tt><br>
        !           152: where <b>target</b> is the directory where you want your source tree to be,
        !           153: and <b>deltas</b> is where you have stored the deltas.
        !           154: <p>
        !           155: It will take some time to run all of the deltas, but the daily invocations
        !           156: of <b>ctm_rmail</b> and <b>ctm</b> will not take nearly as long.
        !           157: </ul>
1.1       graichen  158:
1.5     ! flipk     159: <h3>Should I choose the source or cvs tree?</h3>
1.1       graichen  160:
1.5     ! flipk     161: <P>
        !           162: This depends on your diskspace, among other factors.  Since ctm doesn't
        !           163: yet deal with files which have been modified outside of the ctm process,
        !           164: the "better" choice is probably the cvs-tree.  Then you can check out
        !           165: your working source tree from your cvs-tree, and keep your local mods
        !           166: in your source tree, leaving only ctm to touch your cvs tree.
        !           167:
        !           168: <p>
        !           169: The drawback, however, is the amount of diskspace it takes.  A checked-out
        !           170: source tree takes about 250MB or so, but if you have your own cvs tree you
        !           171: need 370MB or so for it, <b>plus</b> another 250MB for the checked out tree.
        !           172:
        !           173: <p>
        !           174: This doesn't count the 100MB or more you will need to do a build (depending
        !           175: on the architecture).
        !           176:
        !           177: <p>
        !           178: If you just get the source tree, you will need to deal with local
        !           179: modifications.  One way to do this is to use the <b>union</b> filesystem,
        !           180: although there have been reports that the <b>union</b> filesystem can be
        !           181: unstable if both the upper and lower layers reside on the same physical
        !           182: filesystem.  If you place your upper and lower layers on separate filesytems
        !           183: you should have no problems.  A sample of this is as follows:
        !           184:
        !           185: <p>
        !           186: Suppose your ctm-updated tree is in <b>/usr/src-ctm</b>, and your real
        !           187: source tree, the one you make your modifications to and do your builds from,
        !           188: is in <b>/usr/src</b>.  <b>/usr/src</b> should be initially an empty
        !           189: directory.  The following command will set up the union mount:
        !           190: <br><br>
        !           191: <tt>
        !           192:     <b>mount -t union -o -b /usr/src-ctm /usr/src</b>
        !           193: </tt>
        !           194: <br><br>
        !           195: Modifications made to files in /usr/src will become a file contained within
        !           196: /usr/src, hiding the one in src-ctm.  If changes are made via ctm to the
        !           197: underlying src-ctm tree, those changes will <b>not</b> be seen if there is
        !           198: a file in the upper layer hiding it.
        !           199:
        !           200: <p>
        !           201: You should periodically unmount the
        !           202: union and search for files which are local to the union filesystem.
        !           203: <br><br>
        !           204: <tt>
        !           205:     <b>umount /usr/src <br>
        !           206:     find /usr/src -type f</b> <br>
        !           207: </tt>
        !           208: <br><br>
        !           209: The commands <b>ls -W</b> and <b>rm -W</b> will be useful too, as objects
        !           210: named "whiteouts" in /usr/src will also hide files in src-ctm.
        !           211:
        !           212: <p>
        !           213: If you get the cvs-tree, you can use the "cvs checkout" command to check
        !           214: out a source tree from it, and each time you update with ctm you can use
        !           215: the "cvs update" command to update your source tree.
        !           216:
        !           217: <br><br>
        !           218: To get an initial src tree:<br>
        !           219: <tt>
        !           220:     <b>cd /usr <br>
        !           221:     cvs -qd YOUR_CVS_TREE checkout src</b> <br><br>
        !           222: </tt>
        !           223: and after each ctm update:<br>
        !           224: <tt>
        !           225:     <b>cd /usr/src <br>
        !           226:     cvs -q update -PAd</b> <br>
        !           227: </tt>
        !           228:
        !           229: <H3>How stable is ctm for OpenBSD?</H3>
        !           230:
        !           231: Ctm has been in use for over a year for OpenBSD, and for FreeBSD for a
        !           232: number of years.  Ctm is quite reliable and stable.
        !           233:
        !           234: <H3>More information</H3>
        !           235:
        !           236: If you have problems with ctm, a good place to start is the FreeBSD
        !           237: handbook:
        !           238:
        !           239: <ul>
        !           240: <li> <a href="http://www.FreeBSD.org/handbook/ctm.html">
        !           241:          http://www.FreeBSD.org/handbook/ctm.html
        !           242:      </a>
        !           243: </ul>
        !           244:
        !           245: There are also man pages for all of the ctm utilities included in the
        !           246: source package.  If you have OpenBSD, you should already have the man
        !           247: pages, source, and binaries.  If not you can obtain them from the same
        !           248: ftp site as the deltas below.
        !           249:
        !           250: <p>
        !           251: You can also contact the OpenBSD mailing lists or myself if you have
        !           252: difficulties with ctm, although my free time tends to be rather limited.
        !           253:
        !           254: <p>
        !           255: Summary:
        !           256:
        !           257: <p>
        !           258:
        !           259: <ul>
        !           260: <li> Mailing lists:
        !           261:
        !           262:    <ul>
        !           263:    <li> <b>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</b>
        !           264:    <li> <b>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</b>
        !           265:    <li> <b>echo subscribe ctm-announce | mail majordomo@OpenBSD.org</b>
        !           266:    <li> <b>echo subscribe ctm-log | mail majordomo@OpenBSD.org</b>
        !           267:    </ul>
        !           268:
        !           269: <li> FTP (for base and relative deltas; and OpenBSD has ctm in the source
        !           270:      tree, but if you don't have source or binaries, the source is here too):
        !           271:
        !           272:    <ul>
        !           273:    <li> <a href="ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD">
        !           274:          ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD
        !           275:           </a>
        !           276:    <li> <a href="ftp://ftp6.de.FreeBSD.org:/pub/bsd/CTM/OpenBSD">
        !           277:          ftp://ftp6.de.FreeBSD.org:/pub/bsd/CTM/OpenBSD
        !           278:           </a>
        !           279:    </ul>
        !           280: </ul>
        !           281:
        !           282: <p>
        !           283: I will make any important notes and announcements about ctm in:
        !           284: <ul>
        !           285: <li> ctm-announce@OpenBSD.org
        !           286: <li> misc@OpenBSD.org
        !           287: <li> announce@OpenBSD.org
        !           288: </ul>
        !           289:
        !           290: <p>
        !           291: <b>NOTE:</b> If you use ctm for OpenBSD, please send me email so I
        !           292: know how many people are using it!
        !           293:
        !           294: <H3>Acknowledgements</H3>
        !           295:
        !           296: <li> Poul-Henning Kamp (phk@FreeBSD.org) for making ctm possible and helping
        !           297:      me getting the delta generation running.
        !           298:
        !           299: <li> Theo de Raadt (deraadt@theos.com) for making OpenBSD possible and
        !           300:      giving me the resources i needed for creating the ctm
        !           301:      deltas on cvs.OpenBSD.org
1.1       graichen  302:
1.5     ! flipk     303: <li> Wolfram Schneider (wosch@FreeBSD.org) for setting up the ftp space
        !           304:      for the deltas on ctm.OpenBSD.org
1.1       graichen  305:
1.5     ! flipk     306: <li> ... and all the others who contributed indirectly ..
        !           307: </ul>
1.1       graichen  308:
1.5     ! flipk     309: <P>
        !           310: Good luck!
1.1       graichen  311:
1.5     ! flipk     312: <P>
        !           313: t
1.1       graichen  314:
1.5     ! flipk     315: <HR>
1.1       graichen  316:
                    317: <ADDRESS><A HREF="mailto:graichen@OpenBSD.org">Thomas Graichen</A></ADDRESS>
1.5     ! flipk     318: <br>
        !           319: OpenBSD/CTM logo designed for the OpenBSD Project by
        !           320:    <a href="mailto:flipk@openbsd.org">Phillip F Knaack</a>.
1.1       graichen  321:
1.5     ! flipk     322: <P>
        !           323: <!-- Created: Mon Oct 28 22:20:54 MET 1996 -->
        !           324: <!-- hhmts start -->
        !           325:   $Id$
        !           326: <!-- hhmts end -->
1.1       graichen  327:
                    328: </BODY>
                    329: </HTML>