version 1.18, 2001/10/16 19:02:21 |
version 1.19, 2001/11/02 21:17:19 |
|
|
<img alt="CTM for OpenBSD" src="images/bsdctm.gif" width="401" height="126"> |
<img alt="CTM for OpenBSD" src="images/bsdctm.gif" width="401" height="126"> |
</center> |
</center> |
|
|
<H3>What is CTM?</H3> |
<H3><font color="#0000e0">What is CTM?</font></H3> |
|
|
<P> |
<P> |
CTM is a system which was designed by Poul-Henning Kamp for making |
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. |
changes to a source tree available on a regular basis by email. |
This is a good way to stay up to date with the current source tree or |
This is a good way to stay up to date with the current source tree or |
CVS repository if you have a slow Internet connection, for instance via modem. |
CVS repository if you have a slow Internet connection, for instance via modem. |
|
|
<P> |
<P> |
|
OpenBSD CTM distributes all modules of the OpenBSD CVS repository |
|
plus checked out versions of several of theses modules. |
CTM uses very low bandwidth for distributing the changes to the tree, |
CTM uses very low bandwidth for distributing the changes to the tree, |
and compresses them using <tt><b>gzip -9</b></tt>. In contrast to |
and compresses them using <tt><b>gzip -9</b></tt>. In contrast to |
<a href="cvsup.html">CVSup</a>, CTM is written in plain C language |
<a href="cvsup.html">CVSup</a>, CTM is written in plain C language |
and therefore available for every platform supported by OpenBSD. |
and therefore available for every platform supported by OpenBSD. |
|
CTM implements a so called push system, while all other methods to |
|
get access to the OpenBSD CVS repository are pull systems. |
|
|
<p> |
<p> |
For <b>any</b> problems, suggestions, reports and questions regarding CTM, |
For <b>any</b> problems, suggestions, reports and questions regarding CTM, |
|
|
<small>(Please do not ask other OpenBSD people for CTM support, |
<small>(Please do not ask other OpenBSD people for CTM support, |
as they are busy doing other things. Thank you.)</small> |
as they are busy doing other things. Thank you.)</small> |
|
|
<H3>How does it work?</H3> |
<H3><font color="#0000e0">How does it work?</font></H3> |
|
|
<P> |
<P> |
The basic idea of CTM is that you subscribe to a special mailing list |
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 |
for a particular CVS module or source tree. Each day you receive email messages |
containing all the changes to that tree during that period. |
containing all the changes to that tree during that period. |
One such set of differences is called a <b>delta</b>. |
One such set of differences is called a <b>delta</b>. |
Actually, the CTM server makes new deltas every twelve hours. |
Actually, the CTM server makes new deltas every twelve hours. |
|
|
<P> |
<P> |
There are currently two kinds of base set files. For quite a while we |
There are currently two kinds of base set files. For quite a while we |
were making <tt><b>tar.gz</b></tt> files manually, but we are |
were making <tt><b>tar.gz</b></tt> files manually, but we are |
switching back to real CTM base deltas. The latter contain |
back to real CTM base deltas. The latter contain |
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=md5&sektion=1">md5(1)</a> |
<a href="http://www.openbsd.org/cgi-bin/man.cgi?query=md5&sektion=1">md5(1)</a> |
checksums and are generated automatically, thus are a bit safer. You |
checksums and are generated automatically, thus are a bit safer. You |
can distinguish these two kinds of base sets by their filename. An |
can distinguish these two kinds of base sets by their filename. An |
|
|
would be named <tt><b>OpenBSD-cvs.1500A.gz</b></tt>. See below for |
would be named <tt><b>OpenBSD-cvs.1500A.gz</b></tt>. See below for |
detailed instructions. |
detailed instructions. |
|
|
<H3>How much bandwidth does CTM use?</H3> |
<H3><font color="#0000e0">How much bandwidth does CTM use?</font></H3> |
|
|
<P> |
<P> |
You obtain the base set and all relative deltas up to the recent one |
You obtain the base set and all relative deltas up to the recent one |
via ftp from the sites listed below. Sizes are: |
via ftp from the sites listed below. Sizes are: |
|
|
<ul> |
<ul> |
<li>Approximately 115MB for OpenBSD-cvs. |
<li>Approximately 215MB for OpenBSD-cvs. |
<li>Approximately 37MB for OpenBSD-cvs-x11. |
<li>Approximately 40MB for OpenBSD-cvs-x11. |
<li>Approximately 56MB for OpenBSD-cvs-xf4. |
<li>Approximately 65MB for OpenBSD-cvs-xf4. |
<li>Approximately 65MB for OpenBSD-src. |
<li>Approximately 83MB for OpenBSD-src. |
<li>Approximately 35MB for OpenBSD-src-x11. |
<li>Approximately 36MB for OpenBSD-src-x11. |
<li>Approximately 2MB for OpenBSD-ports. |
<li>Approximately 4MB for OpenBSD-ports. |
<br>Keep in mind that these are compressed sizes. The uncompressed |
<br>Keep in mind that these are compressed sizes. The uncompressed |
files are about five times as large. |
files are about five times as large. |
<li>Relative deltas vary from 10kB to 500kB, and occasionally a couple of |
<li>Relative deltas vary from 10kB to 500kB, and occasionally a couple of |
|
|
<li>If a delta is larger than 5MB, it is not sent via mail. Instead, |
<li>If a delta is larger than 5MB, it is not sent via mail. Instead, |
you will receive a notification to get the delta by ftp. Larger |
you will receive a notification to get the delta by ftp. Larger |
CTM updates are rare, though, usually occurring only after a major |
CTM updates are rare, though, usually occurring only after a major |
import of something like binutils, perl, gcc, etc, or applying a |
import of something like binutils, Perl, gcc, XFree86, etc., or applying a |
CVS tag to the CVS repository. |
tag to the CVS repository. |
</ul> |
</ul> |
|
|
<H3>How do I use CTM?</H3> |
<H3><font color="#0000e0">How do I use CTM?</font></H3> |
|
|
<UL> |
<UL> |
<LI>Subscribe to the CTM mailing list for the source set you want. |
<LI>Subscribe to the CTM mailing list for the source set you want. |
|
|
<p> |
<p> |
The following commands will subscribe you to the appropriate lists: |
The following commands will subscribe you to the appropriate lists: |
<p> |
<p> |
For the CVS repository (without the X11 and XF4 modules): |
For the CVS repository (CVSROOT, ports, src and www modules, |
|
but not X11 and XF4): |
<pre> |
<pre> |
echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org |
echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org |
</pre> |
</pre> |
|
|
<pre> |
<pre> |
echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org |
echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org |
</pre> |
</pre> |
For the source tree (without the X11 and XF4 modules): |
For the XF4 module of the CVS repository: |
<pre> |
<pre> |
|
echo subscribe OpenBSD-cvs-xf4 | mail majordomo@OpenBSD.org |
|
</pre> |
|
For a checked out copy of the src module: |
|
<pre> |
echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org |
echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org |
</pre> |
</pre> |
For the X11 module of the source tree: |
For a checked out copy of the X11 module: |
<pre> |
<pre> |
echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org |
echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org |
</pre> |
</pre> |
For the ports tree: |
For a checked out copy of the ports module: |
<pre> |
<pre> |
echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org |
echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org |
</pre> |
</pre> |
|
|
echo subscribe ctm-log | mail majordomo@OpenBSD.org |
echo subscribe ctm-log | mail majordomo@OpenBSD.org |
</pre> |
</pre> |
|
|
There is no mailing list for the XF4 module, yet. It is available |
|
via FTP only. |
|
|
|
<p> |
<p> |
<li>Install the CTM program from a package or from the ports |
<li>Install the CTM program from a package or from the ports |
collection. You'll find the port at |
collection. You'll find the port at |
|
|
or |
or |
|
|
<pre> |
<pre> |
cat split/OpenBSD-cvs.1500.tar.gz.* > OpenBSD-cvs.1500.tar.gz |
cat split/OpenBSD-cvs.1450.tar.gz.* > OpenBSD-cvs.1450.tar.gz |
cd target |
cd target |
tar -xzvf .../OpenBSD-cvs.1500.tar.gz |
tar -xzvf .../OpenBSD-cvs.1450.tar.gz |
</pre> |
</pre> |
|
|
<p> |
<p> |
|
|
|
|
<p> |
<p> |
<li>You now need to get the deltas which have been generated since the |
<li>You now need to get the deltas which have been generated since the |
base set. Go to the FTP site in the subdirectory |
base set. Go to one of the FTP sites listed below into the subdirectory |
<tt><b>OpenBSD-cvs</b></tt> and download every file whose number is |
<tt><b>OpenBSD-cvs</b></tt> and download every file whose number is |
<em>larger</em> than the number of the base set you used. Then apply |
<em>larger</em> than the number of the base set you used. Then apply |
these deltas: |
these deltas: |
|
|
|
|
<p> |
<p> |
Repeat this last step every time you receive a delta from the |
Repeat this last step every time you receive a delta from the |
mailing list. If you like, you can automate this step using procmail |
mailing list. If you like, you can automate this step using procmail, |
or any similar program. |
maildrop, or any similar program from the |
|
<a href="ports.html">ports collection</a>. |
</ul> |
</ul> |
|
|
<p> |
<p> |
The addresses of the FTP servers carrying CTM deltas are: |
Here is the list of FTP servers carrying CTM deltas: |
|
|
<ul> |
<ul> |
<li>The primary FTP server can be reached at: |
<li>The primary FTP server can be reached at: |
|
|
<p> |
<p> |
This server is updated by CTM deltas received from the mailing lists. It |
This server is updated by CTM deltas received from the mailing lists. It |
additionally has the split base deltas in the <tt><b>base</b></tt> |
additionally has the split base deltas in the <tt><b>base</b></tt> |
subdirectory. |
subdirectory, mirrored from |
|
<a href="ftp://openbsd.rug.ac.be:/pub/OpenBSD-ctm/"> |
|
ftp://openbsd.rug.ac.be:/pub/OpenBSD-ctm/ |
|
</a>. |
</ul> |
</ul> |
|
|
<ul> |
<ul> |
|
|
mirror these deltas. |
mirror these deltas. |
<p> |
<p> |
|
|
<h3>Should I choose the source tree or the CVS repository?</h3> |
<h3><font color="#0000e0">Should I choose the source tree or the CVS repository?</font></h3> |
|
|
<P> |
<P> |
This depends on your diskspace, among other factors. Since CTM |
This depends on your diskspace, among other factors. Since CTM |
doesn't deal very well with files which have been modified locally, |
doesn't deal very well with files which have been modified locally, |
the "better" choice is probably the <a href="anoncvs.html">CVS</a> |
the better choice is surely the <a href="anoncvs.html">CVS</a> |
repository. You can check out your working copy of the source tree |
repository. You can check out your working copy of the source tree |
from your CVS repository then, and keep your local modifications in |
from your CVS repository then, can track a stable branch, |
|
and keep your local modifications in |
your source tree. CVS is smart enough to merge in your local changes. |
your source tree. CVS is smart enough to merge in your local changes. |
You can also use the full range of CVS commands except <tt><b>cvs |
You can also use the full range of CVS commands except commands like |
commit</b></tt>. |
<tt><b>cvs commit</b></tt> and <tt><b>cvs tag</b></tt>. |
|
|
<p> |
<p> |
The drawback, however, is the amount of diskspace it takes. A |
The drawback, however, is the amount of diskspace it takes. A |
checked-out source tree takes about 350MB or so, but if you have your |
checked-out source tree takes about 370MB or so, but if you have your |
own CVS repository you need more than 1Gb for it, <b>plus</b> another |
own CVS repository you need more than 1Gb for it, <b>plus</b> another |
350MB for the checked out tree. |
370MB for the checked out tree. |
This doesn't count the 100MB or more (depending on the architecture) |
This doesn't count the 100MB or more (depending on the architecture) |
you will need to do a build, i.e. compile the sources. |
you will need for generated files during a build, i.e. compiling the sources. |
|
|
<p> |
<p> |
If you just get the source tree, you will need to deal with local |
If you just get the source tree, you will need to deal with local |
|
|
|
|
<p> |
<p> |
The commands <tt><b>ls -W</b></tt> and <tt><b>rm -W</b></tt> will be |
The commands <tt><b>ls -W</b></tt> and <tt><b>rm -W</b></tt> will be |
useful too, as objects named "whiteouts" in <tt><b>/usr/src</b></tt> will also hide |
useful too, as objects named "whiteouts" in <tt><b>/usr/src</b></tt> |
files in <tt><b>src-ctm</b></tt>. |
will also hide files in <tt><b>src-ctm</b></tt>. |
|
|
<p> |
<p> |
If you get the CVS repository, you can use the <tt><b>cvs checkout</b></tt> |
If you get the CVS repository, you can use the <tt><b>cvs checkout</b></tt> |
|
|
To get an initial src repository: |
To get an initial src repository: |
<pre> |
<pre> |
cd /usr |
cd /usr |
cvs -qd YOUR_CVS_REPOSITORY checkout -A src |
cvs -qd YOUR_CVS_REPOSITORY checkout -PA src |
</pre> |
</pre> |
<p> |
<p> |
and after each CTM update: |
and after each CTM update: |
|
|
cvs -q update -PAd |
cvs -q update -PAd |
</pre> |
</pre> |
|
|
<H3>How stable is CTM for OpenBSD?</H3> |
<H3><font color="#0000e0">How stable is CTM for OpenBSD?</font></H3> |
|
|
CTM has been in use for over four years for OpenBSD, and for FreeBSD |
CTM has been in use for over five years for OpenBSD, and for FreeBSD |
for an even longer period of time. CTM is very reliable and stable. |
for an even longer period of time. CTM is very reliable and stable. |
|
|
<h3>What does the future hold for CTM?</h3> |
<h3><font color="#0000e0">What does the future hold for CTM?</font></h3> |
|
|
There are numerous (small) changes and optimizations possible. |
There are numerous (small) changes and optimizations possible. |
Among them: |
Among them: |
|
|
new features, like signing CTM deltas with PGP. |
new features, like signing CTM deltas with PGP. |
</ul> |
</ul> |
|
|
<H3>More information</H3> |
Mail <a href="mailto:hgw@d1906.inka.de">me</a> your opinions and wishes! |
|
|
|
<H3><font color="#0000e0">More information</font></H3> |
|
|
If you want to learn more about CTM, a good place to start with is the |
If you want to learn more about CTM, a good place to start with is the |
FreeBSD Handbook: |
FreeBSD Handbook: |
|
|
|
|
|
|
There are also man pages for all of the CTM utilities. |
There are also man pages for all of the CTM utilities. |
|
|
<h3>Summary:</h3> |
<h3><font color="#0000e0">Summary:</font></h3> |
|
|
<p> |
<p> |
|
|
<ul> |
<ul> |
<li> Mailing lists: |
<li> Mailing lists: |
|
|
<ul> |
<ul> |
<li><tt>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-cvs | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-cvs-x11 | mail majordomo@OpenBSD.org</tt> |
|
<li><tt>echo subscribe OpenBSD-cvs-xf4 | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-src | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-src-x11 | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org</tt> |
<li><tt>echo subscribe OpenBSD-ports-ctm | mail majordomo@OpenBSD.org</tt> |
|
|
</ul> |
</ul> |
|
|
<p> |
<p> |
Important notes and announcements about CTM will be posted to: |
Important notes and announcements about CTM will be posted to the |
<ul> |
announce@OpenBSD.org mailing list. |
<li> announce@OpenBSD.org |
|
<li> misc@OpenBSD.org |
|
</ul> |
|
|
|
<p> |
<p> |
|
|
<H3>Acknowledgements</H3> |
<H3><font color="#0000e0">Acknowledgements</font></H3> |
|
|
<ul> |
<ul> |
<li> Poul-Henning Kamp (phk@FreeBSD.org) for making CTM possible and helping |
<li> Poul-Henning Kamp (phk@FreeBSD.org) for making CTM possible and helping |