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 "delta".
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>