version 1.4, 1997/01/20 09:55:53 |
version 1.5, 1997/09/04 21:57:18 |
|
|
<HEAD> |
<HEAD> |
<TITLE>CTM</TITLE> |
<TITLE>CTM</TITLE> |
</HEAD> |
</HEAD> |
<BODY> |
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#23238E"> |
|
|
<H1>CTM for OpenBSD </H1> |
<center> |
|
<img alt="CTM for OpenBSD" src=bsdctm.gif width=401 height=126> |
|
</center> |
|
|
<P><FONT SIZE=+1>... get the current OpenBSD source- or cvs-tree daily |
<H3>What is ctm?</H3> |
via email </FONT></P> |
|
|
|
<P> |
<P> |
<HR WIDTH="100%"></P> |
Ctm is a system which was designed by Poul-Henning Kamp for making |
|
changes to a source tree available on a daily basis by email. |
|
This is a good way to stay up to date with the current source- or |
|
cvs-tree if you have a bad internet connection - for instance via modem. |
|
|
<H3>WHAT IS CTM ?</H3> |
<P> |
|
Ctm uses very low bandwith for distributing the changes to the |
|
tree, and compresses them using gzip -9. |
|
|
<P>ctm is a system which was designed by Poul-Henning Kamp for making all |
<H3>How does it work?</H3> |
the changes to the FreeBSD source- and cvs-tree (and some other trees - |
|
like the FreeBSD ports-tree) available on a daily (or multiple time per |
|
day) basis by email. this is a very good way to stay up to date with the |
|
current source- or cvs-tree if you have a bad internet connection - for |
|
instance via modem. </P> |
|
|
|
<P>ctm uses only very low bandwith for distributing the changes to the |
<P> |
tree - and it compresses these differences using gzip -9.</P> |
The basic idea of ctm is that you subscribe to a special mailing list |
|
for a particular source tree. Each day you receive an email message |
|
containing all the changes to that tree during that period. |
|
One set of differences is called a "delta". |
|
|
<H3>HOW DOES IT WORK ?</H3> |
<P> |
|
You begin with a base set against which later deltas are patched. |
|
To begin using ctm you must grab the latest base set and all deltas |
|
after that; once you have processed those you can process later |
|
deltas you receive on the mailing list. |
|
|
<P>the basic idea of ctm is - that you subscribe to a special mailinglist |
<P> |
to get the daily changes of the OpenBSD source- or cvs-tree and then you'll |
Bases are generated once approximate each 100 relative deltas, so you never |
get a mail each day containing all the changes to the tree (maybe we increase |
have to grab more than 100 deltas to catch up. |
the number of ctm files sent per day in the future) - one such set of differences |
|
is called a "delta".</P> |
|
|
|
<P>if you received your first delta - you have to download all the delta's |
<H3>How much bandwidth does ctm use?</H3> |
until the first delta you received by email - this always starts with a |
|
big - so called "base delta" - which contains the full source |
|
tree you start with. starting from this big one all other deltas only contain |
|
the changes to the tree of the day of the delta generation. to avoid that |
|
you have to get the base delta and then some hundred relative deltas a |
|
new base delta is generated as a startpoint each 100 relative delta's - |
|
so that you always have to get less than hundred relative deltas for starting |
|
ctm :-)</P> |
|
|
|
<H3>HOW MUCH BANDWIDTH DOES CTM USE ?</H3> |
<P> |
|
As mentioned above, the base set contains a full source tree in TAR format, |
|
and is thus quite large. You must obtain the base set and all relative |
|
deltas up to present via ftp from the site listed below. Sizes are: |
|
|
<P>as said above the base delta contains the full source- or cvs-tree so |
<ul> |
it is really big - you'll have to get it via ftp from the site below. here |
<li> approximately 55Mb for base/OpenBSD-src.XXXX.tar.gz |
are the sizes of the current base deltas: ~ 45 mbyte for OpenBSD-src.0001.gz |
<li> uncompressed, this is 250M or so |
- the base delta for the source-tree ~ 55 mbyte for OpenBSD-cvs.0001.gz |
<li> approximately 80Mb for base/OpenBSD-cvs.XXXX.tar.gz |
- the base delta for the cvs-tree and the size of the relative deltas vary |
<li> uncompressed, this is 370M or so |
from ~ 10 kbyte to ~ 100 kbyte usually and sometimes they are some (1,2 |
<li> relative deltas vary from 10k to 100k, and occasionally a couple of meg |
or 3) mbytes - but they are always split into 100 kbyte mails which will |
<li> ctm always splits deltas into 100k messages which are reassembled |
automatically assembled from the ctm-programs - the bigger sizes come from |
automatically |
bigger changes in the source- or cvs-tree (update of the binutils, import |
</ul> |
of perl etc.)</P> |
|
|
|
<H3>HOW DO I USE CTM ?</H3> |
<P> |
|
Larger ctm updates are rare, though, usually occuring only after a major |
|
import of something like binutils, perl, etc. |
|
|
<P>ctm is very simple to use: </P> |
<H3>How do I use ctm?</H3> |
|
|
<LI>subscribe to the ctm mailinglist you want</LI> |
|
|
|
<UL> |
<UL> |
<P><TT>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org for the |
<LI>Subscribe to the ctm mailing list for the source set you want. |
source-tree</TT></P> |
<p> |
</UL> |
There are several mailing lists related to ctm. There is a list for |
|
updates to the source tree, a list for updates to the cvs tree, a list |
|
for announcements where I'll post important announcements to ctm users, |
|
and a list for seeing log messages from the ctm delta generator runs. |
|
<p> |
|
The following commands will subscribe you to the appropriate lists: |
|
<br><br><tt> |
|
For the source tree: <br> |
|
<b>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</b><br> |
|
For the cvs tree:<br> |
|
<b>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</b><br> |
|
For the announce list:<br> |
|
<b>echo subscribe ctm-announce | mail majordomo@OpenBSD.org</b><br> |
|
For the ctm log list:<br> |
|
<b>echo subscribe ctm-log | mail majordomo@OpenBSD.org</b><br> |
|
</tt><br> |
|
|
<P>or</P> |
<LI>Wait until you get your first delta. |
|
|
<UL> |
<LI>Unpack and assemble the ctm delta using ctm_rmail. |
<P><TT>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org for the |
<br> |
cvs-tree</TT></P> |
<br> |
</UL> |
<tt> |
|
<b>ctm_rmail -p. -d. -b. folder</b> |
|
</tt> |
|
<br><br> |
|
where <b>folder</b> is the mail folder containing the delta mail. |
|
<br> |
|
This will decode the ctm delta and place it in the working directory. |
|
The delta will be a file of the form OpenBSD-XXX.YYYY.gz, where XXX is |
|
either "src" or "cvs", and YYYY is the number of the delta. |
|
<p> |
|
|
<P>you should also subscribe to</P> |
<li>Grab the base set from the ftp site below, in the subdirectory |
|
<b>base-splitted/src</b> (for OpenBSD-src) or <b>base-splitted/cvs</b> |
|
(for OpenBSD-cvs). Grab all files in that directory, and once you have |
|
them all you can create the base source tree with the following command: |
|
|
<UL> |
<br><br> |
<P><TT>echo subscribe ctm-announce | mail majordomo@OpenBSD.org</TT></P> |
<tt> |
</UL> |
<b>cd target <br> |
|
cat /splitted/OpenBSD-* | tar zxf - <br> |
|
</b></tt><br> |
|
|
<P>on this list i'll post announcements for users of ctm and there is also |
where <b>splitted</b> is the directory in which you placed the files you |
a list for somekind of a log of the ctm delta generation - so you can see |
grabbed. |
what is all in the ctm delta and if the assembling of it succeeded - you |
|
should really subscribe to this list if you use ctm using</P> |
|
|
|
<UL> |
<p> |
<P><TT>echo subscribe ctm-log | mail majordomo@OpenBSD.org</TT></P> |
It is no longer necessary to keep these files around, if you're sure |
</UL> |
you've got a complete tree. However, be sure to note the number of the |
|
base, before continuing. |
|
|
<LI>wait until you get your first delta</LI> |
<p> |
|
You now need to grab the deltas which have been generated since the base |
|
was generated. Go to the ftp site below in the subdirectory <b>src</b> or |
|
<b>cvs</b> and grab every file whose number is <it>larger</it> than the |
|
number of the base you used. |
|
|
<LI>unpack and assemble the ctm delta using ctm_rmail (for the sources |
<p> |
to all the ctm-programs see below)</LI> |
The address of the base and deltas is: |
|
|
<UL> |
<ul> |
<P><TT>ctm_rmail -p. -d. -b. the_mail_folder_containing_the_ctm_delta_mail</TT></P> |
<li><a href="ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD/"> |
</UL> |
ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD/ |
|
</a> |
|
</ul> |
|
|
<P>after that you should have the bare ctm delta there (something like |
<p> |
OpenBSD-cvs.0015.gz or so)</P> |
<ul> |
|
<li><b>NOTE:</b> I'm very interested in finding other sites around the world |
|
that would be interested in mirroring these deltas. |
|
</ul> |
|
<p> |
|
|
<LI>if you have this - get all the deltas beginning with 0001 up to your |
<LI> Run ctm. |
first mail-received one via ftp from ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD |
<br> |
also known as ftp6.de.FreeBSD.org:/pub/bsd/CTM/OpenBSD for the tree you |
<br> |
subscribed too - i'm very interested in sites all over the world who wan't |
<tt> |
to mirror this or want to put up the ctm deltas there too</LI> |
<b>cd target<br> |
|
ctm -v -v /deltas/OpenBSD-src.*</b><br></tt> |
|
or<br><tt> |
|
<b>cd target<br> |
|
ctm -v -v /deltas/OpenBSD-cvs.*</b><br> |
|
</tt><br> |
|
where <b>target</b> is the directory where you want your source tree to be, |
|
and <b>deltas</b> is where you have stored the deltas. |
|
<p> |
|
It will take some time to run all of the deltas, but the daily invocations |
|
of <b>ctm_rmail</b> and <b>ctm</b> will not take nearly as long. |
|
</ul> |
|
|
<LI>then run ctm (you can get the sources of ctm which should compile at |
<h3>Should I choose the source or cvs tree?</h3> |
least on OpenBSD just fine from the same ftp adress - maybe you have to |
|
tweak it a bit for other systems - you may need the libmd from the FreeBSD |
|
sources there eventually)</LI> |
|
|
|
<UL> |
<P> |
<P><TT>cd where_you_want_your_source_tree_to_be</TT></P> |
This depends on your diskspace, among other factors. Since ctm doesn't |
|
yet deal with files which have been modified outside of the ctm process, |
|
the "better" choice is probably the cvs-tree. Then you can check out |
|
your working source tree from your cvs-tree, and keep your local mods |
|
in your source tree, leaving only ctm to touch your cvs tree. |
|
|
<P><TT>ctm -v -v /where_your_ctm_deltas_are_stored/OpenBSD-src.*</TT></P> |
<p> |
</UL> |
The drawback, however, is the amount of diskspace it takes. A checked-out |
|
source tree takes about 250MB or so, but if you have your own cvs tree you |
|
need 370MB or so for it, <b>plus</b> another 250MB for the checked out tree. |
|
|
<P>or</P> |
<p> |
|
This doesn't count the 100MB or more you will need to do a build (depending |
|
on the architecture). |
|
|
<UL> |
<p> |
<P><TT>cd where_you_want_your_cvs_tree_to_be</TT></P> |
If you just get the source tree, you will need to deal with local |
|
modifications. One way to do this is to use the <b>union</b> filesystem, |
|
although there have been reports that the <b>union</b> filesystem can be |
|
unstable if both the upper and lower layers reside on the same physical |
|
filesystem. If you place your upper and lower layers on separate filesytems |
|
you should have no problems. A sample of this is as follows: |
|
|
<P><TT>ctm -v -v /where_your_ctm_deltas_are_stored/OpenBSD-cvs.*</TT></P> |
<p> |
</UL> |
Suppose your ctm-updated tree is in <b>/usr/src-ctm</b>, and your real |
|
source tree, the one you make your modifications to and do your builds from, |
|
is in <b>/usr/src</b>. <b>/usr/src</b> should be initially an empty |
|
directory. The following command will set up the union mount: |
|
<br><br> |
|
<tt> |
|
<b>mount -t union -o -b /usr/src-ctm /usr/src</b> |
|
</tt> |
|
<br><br> |
|
Modifications made to files in /usr/src will become a file contained within |
|
/usr/src, hiding the one in src-ctm. If changes are made via ctm to the |
|
underlying src-ctm tree, those changes will <b>not</b> be seen if there is |
|
a file in the upper layer hiding it. |
|
|
<LI>this will take some time for the base delta - and less time for the |
<p> |
relative ones * now you can run ctm_rmail and ctm on every new ctm delta |
You should periodically unmount the |
to get up to date</LI> |
union and search for files which are local to the union filesystem. |
|
<br><br> |
|
<tt> |
|
<b>umount /usr/src <br> |
|
find /usr/src -type f</b> <br> |
|
</tt> |
|
<br><br> |
|
The commands <b>ls -W</b> and <b>rm -W</b> will be useful too, as objects |
|
named "whiteouts" in /usr/src will also hide files in src-ctm. |
|
|
<H3>WHAT SHOULD I CHOOSE - SOURCE- OR CVS-TREE VIA CTM ?</H3> |
<p> |
|
If you get the cvs-tree, you can use the "cvs checkout" command to check |
|
out a source tree from it, and each time you update with ctm you can use |
|
the "cvs update" command to update your source tree. |
|
|
<P>this simply depends on your diskspace - the better is the cvs-tree - |
<br><br> |
because you can make modifications to the local checked out copy (ctm can't |
To get an initial src tree:<br> |
yet handle modifications in files it want to update) - but the drawback |
<tt> |
is a _lot_ of diskspace - you need currently ~ 240 mbyte for the full cvs-tree |
<b>cd /usr <br> |
and ~ 200 mbyte for the checked out source tree plus ~ 100 mbyte for the |
cvs -qd YOUR_CVS_TREE checkout src</b> <br><br> |
obj files while "make build" if you have enough space then go |
</tt> |
for the cvs-tree - then you simply have to check out a local copy of the |
and after each ctm update:<br> |
source tree after the first ctm -v -v command using cd /usr cvs -q checkout |
<tt> |
-PA src and after each new applied ctm relative delta you have to run cd |
<b>cd /usr/src <br> |
/usr cvs -q update -PAd src to get your local copy up to date if you don't |
cvs -q update -PAd</b> <br> |
have enough space so you can use ctm for getting the checked out copy of |
</tt> |
the source tree - but then you have to think about the handling of local |
|
modifications - at this point someone from the NetBSD people is using a |
|
mixture of null and union mounts and some scripts for doing this - if i |
|
remember right it was something like this /usr/src-local is null mounted |
|
to /usr/src - /usr/src-ctm is union mounted to /usr/src so you have all |
|
local modifications in /usr/src-local and you have to run a script which |
|
does something like for all files in /usr/src-local diff them against the |
|
/usr/src-ctm versions and apply this patch to a fresh ctm applied /usr/src-ctm |
|
tree mounted in the above way against a fresh /usr/src-local directory |
|
the union mount of /usr/src-ctm guaranties that the /usr/src-ctm tree is |
|
not modified which is very importand for the operation of ctm all this |
|
is just a rough idea - all in all - it is doable because someone from the |
|
NetBSD people is definitely doing it in a way close to this one</P> |
|
|
|
<H3>HOW STABLE IS CTM FOR OpenBSD ?</H3> |
<H3>How stable is ctm for OpenBSD?</H3> |
|
|
<P>i will call this now more than a "public beta" state - i'm |
Ctm has been in use for over a year for OpenBSD, and for FreeBSD for a |
using ctm now for more than two months to stay up to date with the OpenBSD |
number of years. Ctm is quite reliable and stable. |
cvs-tree without any problems - and also the FreeBSD people use ctm very |
|
extensively for years know without any major problems i think (i also use |
|
ctm for FreeBSD now for about half a year without any problems) so i think |
|
you really can trust ctm - in the last weeks also some other people used |
|
it and i haven't heard aboutany problems so far</P> |
|
|
|
<H3>WHERE CAN I FIND MORE INFORMATION ABOUT CTM FOR OpenBSD ?</H3> |
<H3>More information</H3> |
|
|
<P>here :-) - but you can take all the information from FreeBSD and you |
If you have problems with ctm, a good place to start is the FreeBSD |
have the man-pages for the ctm-programs in the ctm source-package there |
handbook: |
are some informations about the use and ideas of ctm in the FreeBSD handbook |
|
- which you will find under http://www.FreeBSD.org/handbook/ctm.html</P> |
|
|
|
<P>if you have problems with ctm you may also ask me - i'll try to help |
<ul> |
you as far as i can and as far as i have enough time (which is a big problem |
<li> <a href="http://www.FreeBSD.org/handbook/ctm.html"> |
in the moment)</P> |
http://www.FreeBSD.org/handbook/ctm.html |
|
</a> |
|
</ul> |
|
|
<H3>OK - IF YOU GOT HERE ...</H3> |
There are also man pages for all of the ctm utilities included in the |
|
source package. If you have OpenBSD, you should already have the man |
|
pages, source, and binaries. If not you can obtain them from the same |
|
ftp site as the deltas below. |
|
|
<P>... and decided to use ctm from now on - here's the summary of adresses: |
<p> |
mailinglists: </P> |
You can also contact the OpenBSD mailing lists or myself if you have |
|
difficulties with ctm, although my free time tends to be rather limited. |
|
|
<LI><TT>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</TT></LI> |
<p> |
|
Summary: |
|
|
<LI><TT>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</TT></LI> |
<p> |
|
|
<LI><TT>echo subscribe ctm-announce | mail majordomo@OpenBSD.org</TT></LI> |
<ul> |
|
<li> Mailing lists: |
|
|
<LI><TT>echo subscribe ctm-log | mail majordomo@OpenBSD.org</TT></LI> |
<ul> |
|
<li> <b>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</b> |
|
<li> <b>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</b> |
|
<li> <b>echo subscribe ctm-announce | mail majordomo@OpenBSD.org</b> |
|
<li> <b>echo subscribe ctm-log | mail majordomo@OpenBSD.org</b> |
|
</ul> |
|
|
<P>ftp server:</P> |
<li> FTP (for base and relative deltas; and OpenBSD has ctm in the source |
|
tree, but if you don't have source or binaries, the source is here too): |
|
|
<LI>ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD</LI> |
<ul> |
|
<li> <a href="ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD"> |
|
ftp://ctm.OpenBSD.org:/pub/bsd/CTM/OpenBSD |
|
</a> |
|
<li> <a href="ftp://ftp6.de.FreeBSD.org:/pub/bsd/CTM/OpenBSD"> |
|
ftp://ftp6.de.FreeBSD.org:/pub/bsd/CTM/OpenBSD |
|
</a> |
|
</ul> |
|
</ul> |
|
|
<LI>ftp6.de.FreeBSD.org:/pub/bsd/CTM/OpenBSD</LI> |
<p> |
|
I will make any important notes and announcements about ctm in: |
|
<ul> |
|
<li> ctm-announce@OpenBSD.org |
|
<li> misc@OpenBSD.org |
|
<li> announce@OpenBSD.org |
|
</ul> |
|
|
<P>there you'll find the deltas and the sources to ctm (ctm.tar.gz - simply |
<p> |
put it into /usr/src/usr.sbin and it should compile fine under OpenBSD)</P> |
<b>NOTE:</b> If you use ctm for OpenBSD, please send me email so I |
|
know how many people are using it! |
|
|
<P>i'll also make any importnat notes and announcements about ctm in</P> |
<H3>Acknowledgements</H3> |
|
|
<LI>ctm-announce@OpenBSD.org</LI> |
<li> Poul-Henning Kamp (phk@FreeBSD.org) for making ctm possible and helping |
|
me getting the delta generation running. |
|
|
<LI>misc@OpenBSD.org</LI> |
<li> Theo de Raadt (deraadt@theos.com) for making OpenBSD possible and |
|
giving me the resources i needed for creating the ctm |
|
deltas on cvs.OpenBSD.org |
|
|
<P>and the big ones in</P> |
<li> Wolfram Schneider (wosch@FreeBSD.org) for setting up the ftp space |
|
for the deltas on ctm.OpenBSD.org |
|
|
<LI>announce@OpenBSD.org</LI> |
<li> ... and all the others who contributed indirectly .. |
|
</ul> |
|
|
<P>and pleeese - send me a mail if you use ctm for OpenBSD so that i can |
<P> |
see how many people are using it !</P> |
Good luck! |
|
|
<H3>THANKS ...</H3> |
<P> |
|
t |
|
|
<P>... go to: </P> |
<HR> |
|
|
<LI>poul-henning kamp (phk@FreeBSD.org) for making ctm possible and helping |
|
me getting the delta generation running</LI> |
|
|
|
<LI>theo de raadt (deraadt@theos.com) for making OpenBSD possible :-) and |
|
giving me all the ressources i needed for creating the ctm deltas on cvs.OpenBSD.org</LI> |
|
|
|
<LI>wolfram schneider (wosch@FreeBSD.org) for setting up the ftp space |
|
for the deltas on ctm.OpenBSD.org</LI> |
|
|
|
<LI>... and all the others who contributed indirectly</LI> |
|
|
|
<P>SO - GOOD LUCK WITH CTM FOR OpenBSD wishes</P> |
|
|
|
<P>t</P> |
|
|
|
<HR></LI> |
|
|
|
<ADDRESS><A HREF="mailto:graichen@OpenBSD.org">Thomas Graichen</A></ADDRESS> |
<ADDRESS><A HREF="mailto:graichen@OpenBSD.org">Thomas Graichen</A></ADDRESS> |
|
<br> |
|
OpenBSD/CTM logo designed for the OpenBSD Project by |
|
<a href="mailto:flipk@openbsd.org">Phillip F Knaack</a>. |
|
|
<P><!-- Created: Mon Oct 28 22:20:54 MET 1996 --><!-- hhmts start -->Last |
<P> |
modified: Mon Oct 28 22:24:34 MET <!-- hhmts end --></P> |
<!-- Created: Mon Oct 28 22:20:54 MET 1996 --> |
|
<!-- hhmts start --> |
|
$Id$ |
|
<!-- hhmts end --> |
|
|
</BODY> |
</BODY> |
</HTML> |
</HTML> |