<?xml version="1.0" encoding="iso-8859-2"?> <!-- The FreeBSD Documentation Project $FreeBSD$ --> <appendix id="mirrors"> <title>Obtaining FreeBSD</title> <sect1 id="mirrors-cdrom"> <title>CDROM and DVD Publishers</title> <sect2> <title>Retail Boxed Products</title> <para>FreeBSD is available as a boxed product (FreeBSD CDs, additional software, and printed documentation) from several retailers:</para> <itemizedlist> <listitem> <address> <otheraddr>CompUSA</otheraddr> WWW: <otheraddr><ulink url="http://www.compusa.com/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Frys Electronics</otheraddr> WWW: <otheraddr><ulink url="http://www.frys.com/"></ulink></otheraddr> </address> </listitem> </itemizedlist> </sect2> <sect2> <title>CD and DVD Sets</title> <para>FreeBSD CD and DVD sets are available from many online retailers:</para> <itemizedlist> <listitem> <address> <otheraddr>BSD Mall by Daemon News</otheraddr> <street>PO Box 161</street> <city>Nauvoo</city>, <state>IL</state> <postcode>62354</postcode> <country>USA</country> Phone: <phone>+1 866 273-6255</phone> Fax: <fax>+1 217 453-9956</fax> Email: <email>sales@bsdmall.com</email> WWW: <otheraddr><ulink url="http://www.bsdmall.com/freebsd1.html"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>BSD-Systems</otheraddr> Email: <email>info@bsd-systems.co.uk</email> WWW: <otheraddr><ulink url="http://www.bsd-systems.co.uk"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>FreeBSD Mall, Inc.</otheraddr> <street>3623 Sanford Street</street> <city>Concord</city>, <state>CA</state> <postcode>94520-1405</postcode> <country>USA</country> Phone: <phone>+1 925 674-0783</phone> Fax: <fax>+1 925 674-0821</fax> Email: <email>info@freebsdmall.com</email> WWW: <otheraddr><ulink url="http://www.freebsdmall.com/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Hinner EDV</otheraddr> <street>St. Augustinus-Str. 10</street> <postcode>D-81825</postcode> <city>München</city> <country>Germany</country> Phone: <phone>(089) 428 419</phone> WWW: <otheraddr><ulink url="http://www.hinner.de/linux/freebsd.html"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Ikarios</otheraddr> <street>22-24 rue Voltaire</street> <postcode>92000</postcode> <city>Nanterre</city> <country>France</country> WWW: <otheraddr><ulink url="http://ikarios.com/form/#freebsd"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>JMC Software</otheraddr> <country>Ireland</country> Phone: <phone>353 1 6291282</phone> WWW: <otheraddr><ulink url="http://www.thelinuxmall.com"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Linux CD Mall</otheraddr> <street>Private Bag MBE N348</street> <city>Auckland 1030</city> <country>New Zealand</country> Phone: <phone>+64 21 866529</phone> WWW: <otheraddr><ulink url="http://www.linuxcdmall.co.nz/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>The Linux Emporium</otheraddr> <street>Hilliard House, Lester Way</street> <city>Wallingford</city> <postcode>OX10 9TA</postcode> <country>United Kingdom</country> Phone: <phone>+44 1491 837010</phone> Fax: <fax>+44 1491 837016</fax> WWW: <otheraddr><ulink url="http://www.linuxemporium.co.uk/products/freebsd/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Linux+ DVD Magazine</otheraddr> <street>Lewartowskiego 6</street> <city>Warsaw</city> <postcode>00-190</postcode> <country>Poland</country> Phone: <phone>+48 22 860 18 18</phone> Email: <email>editors@lpmagazine.org</email> WWW: <otheraddr><ulink url="http://www.lpmagazine.org/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Linux System Labs Australia</otheraddr> <street>21 Ray Drive</street> <city>Balwyn North</city> <postcode>VIC - 3104</postcode> <country>Australia</country> Phone: <phone>+61 3 9857 5918</phone> Fax: <fax>+61 3 9857 8974</fax> WWW: <otheraddr><ulink url="http://www.lsl.com.au"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>LinuxCenter.Ru</otheraddr> <street>Galernaya Street, 55</street> <city>Saint-Petersburg</city> <postcode>190000</postcode> <country>Russia</country> Phone: <phone>+7-812-3125208</phone> Email: <email>info@linuxcenter.ru</email> WWW: <otheraddr><ulink url="http://linuxcenter.ru/freebsd"></ulink></otheraddr> </address> </listitem> </itemizedlist> </sect2> <sect2> <title>Distributors</title> <para>If you are a reseller and want to carry FreeBSD CDROM products, please contact a distributor:</para> <itemizedlist> <listitem> <address> <otheraddr>Cylogistics</otheraddr> <street>809B Cuesta Dr., #2149</street> <city>Mountain View</city>, <state>CA</state> <postcode>94040</postcode> <country>USA</country> Phone: <phone>+1 650 694-4949</phone> Fax: <fax>+1 650 694-4953</fax> Email: <email>sales@cylogistics.com</email> WWW: <otheraddr><ulink url="http://www.cylogistics.com/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Ingram Micro</otheraddr> <street>1600 E. St. Andrew Place</street> <city>Santa Ana</city>, <state>CA</state> <postcode>92705-4926</postcode> <country>USA</country> Phone: <phone>1 (800) 456-8000</phone> WWW: <otheraddr><ulink url="http://www.ingrammicro.com/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Kudzu, LLC</otheraddr> <street>7375 Washington Ave. S.</street> <city>Edina</city>, <state>MN</state> <postcode>55439</postcode> <country>USA</country> Phone: <phone>+1 952 947-0822</phone> Fax: <fax>+1 952 947-0876</fax> Email: <email>sales@kudzuenterprises.com</email> </address> </listitem> <listitem> <address> <otheraddr>LinuxCenter.Ru</otheraddr> <street>Galernaya Street, 55</street> <city>Saint-Petersburg</city> <postcode>190000</postcode> <country>Russia</country> Phone: <phone>+7-812-3125208</phone> Email: <email>info@linuxcenter.ru</email> WWW: <otheraddr><ulink url="http://linuxcenter.ru/freebsd"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Navarre Corp</otheraddr> <street>7400 49th Ave South</street> <city>New Hope</city>, <state>MN</state> <postcode>55428</postcode> <country>USA</country> Phone: <phone>+1 763 535-8333</phone> Fax: <fax>+1 763 535-0341</fax> WWW: <otheraddr><ulink url="http://www.navarre.com/"></ulink></otheraddr> </address> </listitem> </itemizedlist> </sect2> </sect1> <sect1 id="mirrors-ftp"> <title>FTP Sites</title> <para>The official sources for FreeBSD are available via anonymous FTP from a worldwide set of mirror sites. The site <ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/"></ulink> is well connected and allows a large number of connections to it, but you are probably better off finding a <quote>closer</quote> mirror site (especially if you decide to set up some sort of mirror site).</para> <para>The <ulink url="http://mirrorlist.FreeBSD.org/">FreeBSD mirror sites database</ulink> is more accurate than the mirror listing in the Handbook, as it gets its information from the DNS rather than relying on static lists of hosts.</para> <para>Additionally, FreeBSD is available via anonymous FTP from the following mirror sites. If you choose to obtain FreeBSD via anonymous FTP, please try to use a site near you. The mirror sites listed as <quote>Primary Mirror Sites</quote> typically have the entire FreeBSD archive (all the currently available versions for each of the architectures) but you will probably have faster download times from a site that is in your country or region. The regional sites carry the most recent versions for the most popular architecture(s) but might not carry the entire FreeBSD archive. All sites provide access via anonymous FTP but some sites also provide access via other methods. The access methods available for each site are provided in parentheses after the hostname.</para> &chap.mirrors.ftp.index.inc; &chap.mirrors.lastmod.inc; &chap.mirrors.ftp.inc; </sect1> <sect1 id="anoncvs"> <title>Anonymous CVS</title> <sect2> <title><anchor id="anoncvs-intro"/>Introduction</title> <indexterm> <primary>CVS</primary> <secondary>anonymous</secondary> </indexterm> <para>Anonymous CVS (or, as it is otherwise known, <emphasis>anoncvs</emphasis>) is a feature provided by the CVS utilities bundled with FreeBSD for synchronizing with a remote CVS repository. Among other things, it allows users of FreeBSD to perform, with no special privileges, read-only CVS operations against one of the FreeBSD project's official anoncvs servers. To use it, one simply sets the <envar>CVSROOT</envar> environment variable to point at the appropriate anoncvs server, provides the well-known password <quote>anoncvs</quote> with the <command>cvs login</command> command, and then uses the &man.cvs.1; command to access it like any local repository.</para> <note> <para>The <command>cvs login</command> command, stores the passwords that are used for authenticating to the CVS server in a file called <filename>.cvspass</filename> in your <envar>HOME</envar> directory. If this file does not exist, you might get an error when trying to use <command>cvs login</command> for the first time. Just make an empty <filename>.cvspass</filename> file, and retry to login.</para> </note> <para>While it can also be said that the <link linkend="cvsup">CVSup</link> and <emphasis>anoncvs</emphasis> services both perform essentially the same function, there are various trade-offs which can influence the user's choice of synchronization methods. In a nutshell, <application>CVSup</application> is much more efficient in its usage of network resources and is by far the most technically sophisticated of the two, but at a price. To use <application>CVSup</application>, a special client must first be installed and configured before any bits can be grabbed, and then only in the fairly large chunks which <application>CVSup</application> calls <emphasis>collections</emphasis>.</para> <para><application>Anoncvs</application>, by contrast, can be used to examine anything from an individual file to a specific program (like <command>ls</command> or <command>grep</command>) by referencing the CVS module name. Of course, <application>anoncvs</application> is also only good for read-only operations on the CVS repository, so if it is your intention to support local development in one repository shared with the FreeBSD project bits then <application>CVSup</application> is really your only option.</para> </sect2> <sect2> <title><anchor id="anoncvs-usage"/>Using Anonymous CVS</title> <para>Configuring &man.cvs.1; to use an Anonymous CVS repository is a simple matter of setting the <envar>CVSROOT</envar> environment variable to point to one of the FreeBSD project's <emphasis>anoncvs</emphasis> servers. At the time of this writing, the following servers are available:</para> <itemizedlist> <listitem> <para><emphasis>Austria</emphasis>: :pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs (Use <command>cvs login</command> and enter any password when prompted.)</para> </listitem> <listitem> <para><emphasis>France</emphasis>: :pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs (pserver (password <quote>anoncvs</quote>), ssh (no password)) </para> </listitem> <listitem> <para><emphasis>Germany</emphasis>: :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs (Use <command>cvs login</command> and enter the password <quote>anoncvs</quote> when prompted.)</para> </listitem> <listitem> <para><emphasis>Germany</emphasis>: :pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs (rsh, pserver, ssh, ssh/2022) </para> </listitem> <listitem> <para><emphasis>Japan</emphasis>: :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs (Use <command>cvs login</command> and enter the password <quote>anoncvs</quote> when prompted.)</para> </listitem> <listitem> <para><emphasis>USA</emphasis>: freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs (ssh only - no password)</para> <programlisting>SSH HostKey: 1024 a1:e7:46:de:fb:56:ef:05:bc:73:aa:91:09:da:f7:f4 root@sanmateo.ecn.purdue.edu SSH2 HostKey: 1024 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65 ssh_host_dsa_key.pub</programlisting> </listitem> <listitem> <para><emphasis>USA</emphasis>: anoncvs@anoncvs1.FreeBSD.org:/home/ncvs (ssh only - no password)</para> <programlisting>SSH HostKey: 1024 8b:c4:6f:9a:7e:65:8a:eb:50:50:29:7c:a1:47:03:bc root@ender.liquidneon.com SSH2 HostKey: 2048 4d:59:19:7b:ea:9b:76:0b:ca:ee:da:26:e2:3a:83:b8 ssh_host_dsa_key.pub</programlisting> </listitem> </itemizedlist> <para>Since CVS allows one to <quote>check out</quote> virtually any version of the FreeBSD sources that ever existed (or, in some cases, will exist), you need to be familiar with the revision (<option>-r</option>) flag to &man.cvs.1; and what some of the permissible values for it in the FreeBSD Project repository are.</para> <para>There are two kinds of tags, revision tags and branch tags. A revision tag refers to a specific revision. Its meaning stays the same from day to day. A branch tag, on the other hand, refers to the latest revision on a given line of development, at any given time. Because a branch tag does not refer to a specific revision, it may mean something different tomorrow than it means today.</para> <para><xref linkend="cvs-tags"/> contains revision tags that users might be interested in. Again, none of these are valid for the Ports Collection since the Ports Collection does not have multiple revisions.</para> <para>When you specify a branch tag, you normally receive the latest versions of the files on that line of development. If you wish to receive some past version, you can do so by specifying a date with the <option>-D date</option> flag. See the &man.cvs.1; manual page for more details.</para> </sect2> <sect2> <title>Examples</title> <para>While it really is recommended that you read the manual page for &man.cvs.1; thoroughly before doing anything, here are some quick examples which essentially show how to use Anonymous CVS:</para> <example> <title>Checking Out Something from -CURRENT (&man.ls.1;):</title> <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. &prompt.user; <userinput>cvs co ls</userinput> </screen> </example> <example> <title>Using SSH to check out the <filename>src/</filename> tree:</title> <screen>&prompt.user; <userinput>cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src</userinput> The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be established. DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65. Are you sure you want to continue connecting (yes/no)? <userinput>yes</userinput> Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts.</screen> </example> <example> <title>Checking Out the Version of &man.ls.1; in the 6-STABLE Branch:</title> <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. &prompt.user; <userinput>cvs co -rRELENG_6 ls</userinput> </screen> </example> <example> <title>Creating a List of Changes (as Unified Diffs) to &man.ls.1;</title> <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. &prompt.user; <userinput>cvs rdiff -u -rRELENG_5_3_0_RELEASE -rRELENG_5_4_0_RELEASE ls</userinput> </screen> </example> <example> <title>Finding Out What Other Module Names Can Be Used:</title> <screen>&prompt.user; <userinput>setenv CVSROOT :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs</userinput> &prompt.user; <userinput>cvs login</userinput> <emphasis>At the prompt, enter the password</emphasis> <quote>anoncvs</quote>. &prompt.user; <userinput>cvs co modules</userinput> &prompt.user; <userinput>more modules/modules</userinput> </screen> </example> </sect2> <sect2> <title>Other Resources</title> <para>The following additional resources may be helpful in learning CVS:</para> <itemizedlist> <listitem> <para><ulink url="http://www.csc.calpoly.edu/~dbutler/tutorials/winter96/cvs/">CVS Tutorial</ulink> from Cal Poly.</para> </listitem> <listitem> <para><ulink url="http://ximbiot.com/cvs/wiki/">CVS Home</ulink>, the CVS development and support community.</para> </listitem> <listitem> <para><ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi">CVSweb</ulink> is the FreeBSD Project web interface for CVS.</para> </listitem> </itemizedlist> </sect2> </sect1> <sect1 id="ctm"> <title>Using CTM</title> <indexterm> <primary>CTM</primary> </indexterm> <para><application>CTM</application> is a method for keeping a remote directory tree in sync with a central one. It has been developed for usage with FreeBSD's source trees, though other people may find it useful for other purposes as time goes by. Little, if any, documentation currently exists at this time on the process of creating deltas, so contact the &a.ctm-users.name; mailing list for more information and if you wish to use <application>CTM</application> for other things.</para> <sect2> <title>Why Should I Use <application>CTM</application>?</title> <para><application>CTM</application> will give you a local copy of the FreeBSD source trees. There are a number of <quote>flavors</quote> of the tree available. Whether you wish to track the entire CVS tree or just one of the branches, <application>CTM</application> can provide you the information. If you are an active developer on FreeBSD, but have lousy or non-existent TCP/IP connectivity, or simply wish to have the changes automatically sent to you, <application>CTM</application> was made for you. You will need to obtain up to three deltas per day for the most active branches. However, you should consider having them sent by automatic email. The sizes of the updates are always kept as small as possible. This is typically less than 5K, with an occasional (one in ten) being 10-50K and every now and then a large 100K+ or more coming around.</para> <para>You will also need to make yourself aware of the various caveats related to working directly from the development sources rather than a pre-packaged release. This is particularly true if you choose the <quote>current</quote> sources. It is recommended that you read <link linkend="current">Staying current with FreeBSD</link>.</para> </sect2> <sect2> <title>What Do I Need to Use <application>CTM</application>?</title> <para>You will need two things: The <application>CTM</application> program, and the initial deltas to feed it (to get up to <quote>current</quote> levels).</para> <para>The <application>CTM</application> program has been part of FreeBSD ever since version 2.0 was released, and lives in <filename>/usr/src/usr.sbin/ctm</filename> if you have a copy of the source available.</para> <para>The <quote>deltas</quote> you feed <application>CTM</application> can be had two ways, FTP or email. If you have general FTP access to the Internet then the following FTP sites support access to <application>CTM</application>:</para> <para><ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/"></ulink></para> <para>or see section <link linkend="mirrors-ctm">mirrors</link>.</para> <para>FTP the relevant directory and fetch the <filename>README</filename> file, starting from there.</para> <para>If you wish to get your deltas via email:</para> <para>Subscribe to one of the <application>CTM</application> distribution lists. &a.ctm-cvs-cur.name; supports the entire CVS tree. &a.ctm-src-cur.name; supports the head of the development branch. &a.ctm-src-4.name; supports the 4.X release branch, etc.. (If you do not know how to subscribe yourself to a list, click on the list name above or go to &a.mailman.lists.link; and click on the list that you wish to subscribe to. The list page should contain all of the necessary subscription instructions.)</para> <para>When you begin receiving your <application>CTM</application> updates in the mail, you may use the <command>ctm_rmail</command> program to unpack and apply them. You can actually use the <command>ctm_rmail</command> program directly from a entry in <filename>/etc/aliases</filename> if you want to have the process run in a fully automated fashion. Check the <command>ctm_rmail</command> manual page for more details.</para> <note> <para>No matter what method you use to get the <application>CTM</application> deltas, you should subscribe to the &a.ctm-announce.name; mailing list. In the future, this will be the only place where announcements concerning the operations of the <application>CTM</application> system will be posted. Click on the list name above and follow the instructions to subscribe to the list.</para> </note> </sect2> <sect2> <title>Using <application>CTM</application> for the First Time</title> <para>Before you can start using <application>CTM</application> deltas, you will need to get to a starting point for the deltas produced subsequently to it.</para> <para>First you should determine what you already have. Everyone can start from an <quote>empty</quote> directory. You must use an initial <quote>Empty</quote> delta to start off your <application>CTM</application> supported tree. At some point it is intended that one of these <quote>started</quote> deltas be distributed on the CD for your convenience, however, this does not currently happen.</para> <para>Since the trees are many tens of megabytes, you should prefer to start from something already at hand. If you have a -RELEASE CD, you can copy or extract an initial source from it. This will save a significant transfer of data.</para> <para>You can recognize these <quote>starter</quote> deltas by the <literal>X</literal> appended to the number (<filename>src-cur.3210XEmpty.gz</filename> for instance). The designation following the <literal>X</literal> corresponds to the origin of your initial <quote>seed</quote>. <filename>Empty</filename> is an empty directory. As a rule a base transition from <literal>Empty</literal> is produced every 100 deltas. By the way, they are large! 70 to 80 Megabytes of <command>gzip</command>'d data is common for the <filename>XEmpty</filename> deltas.</para> <para>Once you have picked a base delta to start from, you will also need all deltas with higher numbers following it.</para> </sect2> <sect2> <title>Using <application>CTM</application> in Your Daily Life</title> <para>To apply the deltas, simply say:</para> <screen>&prompt.root; <userinput>cd /where/ever/you/want/the/stuff</userinput> &prompt.root; <userinput>ctm -v -v /where/you/store/your/deltas/src-xxx.*</userinput></screen> <para><application>CTM</application> understands deltas which have been put through <command>gzip</command>, so you do not need to <command>gunzip</command> them first, this saves disk space.</para> <para>Unless it feels very secure about the entire process, <application>CTM</application> will not touch your tree. To verify a delta you can also use the <option>-c</option> flag and <application>CTM</application> will not actually touch your tree; it will merely verify the integrity of the delta and see if it would apply cleanly to your current tree.</para> <para>There are other options to <application>CTM</application> as well, see the manual pages or look in the sources for more information.</para> <para>That is really all there is to it. Every time you get a new delta, just run it through <application>CTM</application> to keep your sources up to date.</para> <para>Do not remove the deltas if they are hard to download again. You just might want to keep them around in case something bad happens. Even if you only have floppy disks, consider using <command>fdwrite</command> to make a copy.</para> </sect2> <sect2> <title>Keeping Your Local Changes</title> <para>As a developer one would like to experiment with and change files in the source tree. <application>CTM</application> supports local modifications in a limited way: before checking for the presence of a file <filename>foo</filename>, it first looks for <filename>foo.ctm</filename>. If this file exists, <application>CTM</application> will operate on it instead of <filename>foo</filename>.</para> <para>This behavior gives us a simple way to maintain local changes: simply copy the files you plan to modify to the corresponding file names with a <filename>.ctm</filename> suffix. Then you can freely hack the code, while <application>CTM</application> keeps the <filename>.ctm</filename> file up-to-date.</para> </sect2> <sect2> <title>Other Interesting <application>CTM</application> Options</title> <sect3> <title>Finding Out Exactly What Would Be Touched by an Update</title> <para>You can determine the list of changes that <application>CTM</application> will make on your source repository using the <option>-l</option> option to <application>CTM</application>.</para> <para>This is useful if you would like to keep logs of the changes, pre- or post- process the modified files in any manner, or just are feeling a tad paranoid.</para> </sect3> <sect3> <title>Making Backups Before Updating</title> <para>Sometimes you may want to backup all the files that would be changed by a <application>CTM</application> update.</para> <para>Specifying the <option>-B backup-file</option> option causes <application>CTM</application> to backup all files that would be touched by a given <application>CTM</application> delta to <filename>backup-file</filename>.</para> </sect3> <sect3> <title>Restricting the Files Touched by an Update</title> <para>Sometimes you would be interested in restricting the scope of a given <application>CTM</application> update, or may be interested in extracting just a few files from a sequence of deltas.</para> <para>You can control the list of files that <application>CTM</application> would operate on by specifying filtering regular expressions using the <option>-e</option> and <option>-x</option> options.</para> <para>For example, to extract an up-to-date copy of <filename>lib/libc/Makefile</filename> from your collection of saved <application>CTM</application> deltas, run the commands:</para> <screen>&prompt.root; <userinput>cd /where/ever/you/want/to/extract/it/</userinput> &prompt.root; <userinput>ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*</userinput></screen> <para>For every file specified in a <application>CTM</application> delta, the <option>-e</option> and <option>-x</option> options are applied in the order given on the command line. The file is processed by <application>CTM</application> only if it is marked as eligible after all the <option>-e</option> and <option>-x</option> options are applied to it.</para> </sect3> </sect2> <sect2> <title>Future Plans for <application>CTM</application></title> <para>Tons of them:</para> <itemizedlist> <listitem> <para>Use some kind of authentication into the <application>CTM</application> system, so as to allow detection of spoofed <application>CTM</application> updates.</para> </listitem> <listitem> <para>Clean up the options to <application>CTM</application>, they became confusing and counter intuitive.</para> </listitem> </itemizedlist> </sect2> <sect2> <title>Miscellaneous Stuff</title> <para>There is a sequence of deltas for the <literal>ports</literal> collection too, but interest has not been all that high yet.</para> </sect2> <sect2 id="mirrors-ctm"> <title>CTM Mirrors</title> <para><link linkend="ctm">CTM</link>/FreeBSD is available via anonymous FTP from the following mirror sites. If you choose to obtain <application>CTM</application> via anonymous FTP, please try to use a site near you.</para> <para>In case of problems, please contact the &a.ctm-users.name; mailing list.</para> <variablelist> <varlistentry> <term>California, Bay Area, official source</term> <listitem> <itemizedlist> <listitem> <para><ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CTM/"></ulink></para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>South Africa, backup server for old deltas</term> <listitem> <itemizedlist> <listitem> <para><ulink url="ftp://ftp.za.FreeBSD.org/pub/FreeBSD/CTM/"></ulink></para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>Taiwan/R.O.C.</term> <listitem> <itemizedlist> <listitem> <para><ulink url="ftp://ctm.tw.FreeBSD.org/pub/FreeBSD/development/CTM/"></ulink></para> </listitem> <listitem> <para><ulink url="ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/development/CTM/"></ulink></para> </listitem> <listitem> <para><ulink url="ftp://ctm3.tw.FreeBSD.org/pub/FreeBSD/development/CTM/"></ulink></para> </listitem> </itemizedlist> </listitem> </varlistentry> </variablelist> <para>If you did not find a mirror near to you or the mirror is incomplete, try to use a search engine such as <ulink url="http://www.alltheweb.com/">alltheweb</ulink>.</para> </sect2></sect1> <sect1 id="cvsup"> <title>Using CVSup</title> <sect2 id="cvsup-intro"> <title>Introduction</title> <para><application>CVSup</application> is a software package for distributing and updating source trees from a master CVS repository on a remote server host. The FreeBSD sources are maintained in a CVS repository on a central development machine in California. With <application>CVSup</application>, FreeBSD users can easily keep their own source trees up to date.</para> <para><application>CVSup</application> uses the so-called <emphasis>pull</emphasis> model of updating. Under the pull model, each client asks the server for updates, if and when they are wanted. The server waits passively for update requests from its clients. Thus all updates are instigated by the client. The server never sends unsolicited updates. Users must either run the <application>CVSup</application> client manually to get an update, or they must set up a <command>cron</command> job to run it automatically on a regular basis.</para> <para>The term <application>CVSup</application>, capitalized just so, refers to the entire software package. Its main components are the client <command>cvsup</command> which runs on each user's machine, and the server <command>cvsupd</command> which runs at each of the FreeBSD mirror sites.</para> <para>As you read the FreeBSD documentation and mailing lists, you may see references to <application>sup</application>. <application>Sup</application> was the predecessor of <application>CVSup</application>, and it served a similar purpose. <application>CVSup</application> is used much in the same way as sup and, in fact, uses configuration files which are backward-compatible with <command>sup</command>'s. <application>Sup</application> is no longer used in the FreeBSD project, because <application>CVSup</application> is both faster and more flexible.</para> </sect2> <sect2 id="cvsup-install"> <title>Installation</title> <para>The easiest way to install <application>CVSup</application> is to use the precompiled <filename role="package">net/cvsup</filename> package from the FreeBSD <link linkend="ports">packages collection</link>. If you prefer to build <application>CVSup</application> from source, you can use the <filename role="package">net/cvsup</filename> port instead. But be forewarned: the <filename role="package">net/cvsup</filename> port depends on the Modula-3 system, which takes a substantial amount of time and disk space to download and build.</para> <note> <para>If you are going to be using <application>CVSup</application> on a machine which will not have <application>&xfree86;</application> or <application>&xorg;</application> installed, such as a server, be sure to use the port which does not include the <application>CVSup</application> <acronym>GUI</acronym>, <filename role="package">net/cvsup-without-gui</filename>.</para> </note> </sect2> <sect2 id="cvsup-config"> <title>CVSup Configuration</title> <para><application>CVSup</application>'s operation is controlled by a configuration file called the <filename>supfile</filename>. There are some sample <filename>supfiles</filename> in the directory <ulink type="html" url="file://localhost/usr/share/examples/cvsup/"><filename>/usr/share/examples/cvsup/</filename></ulink>.</para> <para>The information in a <filename>supfile</filename> answers the following questions for <application>CVSup</application>:</para> <itemizedlist> <listitem> <para><link linkend="cvsup-config-files">Which files do you want to receive?</link></para> </listitem> <listitem> <para><link linkend="cvsup-config-vers">Which versions of them do you want?</link></para> </listitem> <listitem> <para><link linkend="cvsup-config-where">Where do you want to get them from?</link></para> </listitem> <listitem> <para><link linkend="cvsup-config-dest">Where do you want to put them on your own machine?</link></para> </listitem> <listitem> <para><link linkend="cvsup-config-status">Where do you want to put your status files?</link></para> </listitem> </itemizedlist> <para>In the following sections, we will construct a typical <filename>supfile</filename> by answering each of these questions in turn. First, we describe the overall structure of a <filename>supfile</filename>.</para> <para>A <filename>supfile</filename> is a text file. Comments begin with <literal>#</literal> and extend to the end of the line. Lines that are blank and lines that contain only comments are ignored.</para> <para>Each remaining line describes a set of files that the user wishes to receive. The line begins with the name of a <quote>collection</quote>, a logical grouping of files defined by the server. The name of the collection tells the server which files you want. After the collection name come zero or more fields, separated by white space. These fields answer the questions listed above. There are two types of fields: flag fields and value fields. A flag field consists of a keyword standing alone, e.g., <literal>delete</literal> or <literal>compress</literal>. A value field also begins with a keyword, but the keyword is followed without intervening white space by <literal>=</literal> and a second word. For example, <literal>release=cvs</literal> is a value field.</para> <para>A <filename>supfile</filename> typically specifies more than one collection to receive. One way to structure a <filename>supfile</filename> is to specify all of the relevant fields explicitly for each collection. However, that tends to make the <filename>supfile</filename> lines quite long, and it is inconvenient because most fields are the same for all of the collections in a <filename>supfile</filename>. <application>CVSup</application> provides a defaulting mechanism to avoid these problems. Lines beginning with the special pseudo-collection name <literal>*default</literal> can be used to set flags and values which will be used as defaults for the subsequent collections in the <filename>supfile</filename>. A default value can be overridden for an individual collection, by specifying a different value with the collection itself. Defaults can also be changed or augmented in mid-supfile by additional <literal>*default</literal> lines.</para> <para>With this background, we will now proceed to construct a <filename>supfile</filename> for receiving and updating the main source tree of <link linkend="current">FreeBSD-CURRENT</link>.</para> <itemizedlist> <listitem> <para><anchor id="cvsup-config-files"/>Which files do you want to receive?</para> <para>The files available via <application>CVSup</application> are organized into named groups called <quote>collections</quote>. The collections that are available are described in the <link linkend="cvsup-collec">following section</link>. In this example, we wish to receive the entire main source tree for the FreeBSD system. There is a single large collection <literal>src-all</literal> which will give us all of that. As a first step toward constructing our <filename>supfile</filename>, we simply list the collections, one per line (in this case, only one line):</para> <programlisting>src-all</programlisting> </listitem> <listitem> <para><anchor id="cvsup-config-vers"/>Which version(s) of them do you want?</para> <para>With <application>CVSup</application>, you can receive virtually any version of the sources that ever existed. That is possible because the <application>cvsupd</application> server works directly from the CVS repository, which contains all of the versions. You specify which one of them you want using the <literal>tag=</literal> and <option>date=</option> value fields.</para> <warning> <para>Be very careful to specify any <literal>tag=</literal> fields correctly. Some tags are valid only for certain collections of files. If you specify an incorrect or misspelled tag, <application>CVSup</application> will delete files which you probably do not want deleted. In particular, use <emphasis>only </emphasis> <literal>tag=.</literal> for the <literal>ports-*</literal> collections.</para> </warning> <para>The <literal>tag=</literal> field names a symbolic tag in the repository. There are two kinds of tags, revision tags and branch tags. A revision tag refers to a specific revision. Its meaning stays the same from day to day. A branch tag, on the other hand, refers to the latest revision on a given line of development, at any given time. Because a branch tag does not refer to a specific revision, it may mean something different tomorrow than it means today.</para> <para><xref linkend="cvs-tags"/> contains branch tags that users might be interested in. When specifying a tag in <application>CVSup</application>'s configuration file, it must be preceded with <literal>tag=</literal> (<literal>RELENG_4</literal> will become <literal>tag=RELENG_4</literal>). Keep in mind that only the <literal>tag=.</literal> is relevant for the Ports Collection.</para> <warning> <para>Be very careful to type the tag name exactly as shown. <application>CVSup</application> cannot distinguish between valid and invalid tags. If you misspell the tag, <application>CVSup</application> will behave as though you had specified a valid tag which happens to refer to no files at all. It will delete your existing sources in that case.</para> </warning> <para>When you specify a branch tag, you normally receive the latest versions of the files on that line of development. If you wish to receive some past version, you can do so by specifying a date with the <option>date=</option> value field. The &man.cvsup.1; manual page explains how to do that.</para> <para>For our example, we wish to receive FreeBSD-CURRENT. We add this line at the beginning of our <filename>supfile</filename>:</para> <programlisting>*default tag=.</programlisting> <para>There is an important special case that comes into play if you specify neither a <literal>tag=</literal> field nor a <literal>date=</literal> field. In that case, you receive the actual RCS files directly from the server's CVS repository, rather than receiving a particular version. Developers generally prefer this mode of operation. By maintaining a copy of the repository itself on their systems, they gain the ability to browse the revision histories and examine past versions of files. This gain is achieved at a large cost in terms of disk space, however.</para> </listitem> <listitem> <para><anchor id="cvsup-config-where"/>Where do you want to get them from?</para> <para>We use the <literal>host=</literal> field to tell <command>cvsup</command> where to obtain its updates. Any of the <link linkend="cvsup-mirrors">CVSup mirror sites</link> will do, though you should try to select one that is close to you in cyberspace. In this example we will use a fictional FreeBSD distribution site, <hostid role="fqdn">cvsup99.FreeBSD.org</hostid>:</para> <programlisting>*default host=cvsup99.FreeBSD.org</programlisting> <para>You will need to change the host to one that actually exists before running <application>CVSup</application>. On any particular run of <command>cvsup</command>, you can override the host setting on the command line, with <option>-h <replaceable>hostname</replaceable></option>.</para> </listitem> <listitem> <para><anchor id="cvsup-config-dest"/>Where do you want to put them on your own machine?</para> <para>The <literal>prefix=</literal> field tells <command>cvsup</command> where to put the files it receives. In this example, we will put the source files directly into our main source tree, <filename>/usr/src</filename>. The <filename>src</filename> directory is already implicit in the collections we have chosen to receive, so this is the correct specification:</para> <programlisting>*default prefix=/usr</programlisting> </listitem> <listitem> <para><anchor id="cvsup-config-status"/>Where should <command>cvsup</command> maintain its status files?</para> <para>The <application>CVSup</application> client maintains certain status files in what is called the <quote>base</quote> directory. These files help <application>CVSup</application> to work more efficiently, by keeping track of which updates you have already received. We will use the standard base directory, <filename>/var/db</filename>:</para> <programlisting>*default base=/var/db</programlisting> <para>If your base directory does not already exist, now would be a good time to create it. The <command>cvsup</command> client will refuse to run if the base directory does not exist.</para> </listitem> <listitem> <para>Miscellaneous <filename>supfile</filename> settings:</para> <para>There is one more line of boiler plate that normally needs to be present in the <filename>supfile</filename>:</para> <programlisting>*default release=cvs delete use-rel-suffix compress</programlisting> <para><literal>release=cvs</literal> indicates that the server should get its information out of the main FreeBSD CVS repository. This is virtually always the case, but there are other possibilities which are beyond the scope of this discussion.</para> <para><literal>delete</literal> gives <application>CVSup</application> permission to delete files. You should always specify this, so that <application>CVSup</application> can keep your source tree fully up-to-date. <application>CVSup</application> is careful to delete only those files for which it is responsible. Any extra files you happen to have will be left strictly alone.</para> <para><literal>use-rel-suffix</literal> is ... arcane. If you really want to know about it, see the &man.cvsup.1; manual page. Otherwise, just specify it and do not worry about it.</para> <para><literal>compress</literal> enables the use of gzip-style compression on the communication channel. If your network link is T1 speed or faster, you probably should not use compression. Otherwise, it helps substantially.</para> </listitem> <listitem> <para>Putting it all together:</para> <para>Here is the entire <filename>supfile</filename> for our example:</para> <programlisting>*default tag=. *default host=cvsup99.FreeBSD.org *default prefix=/usr *default base=/var/db *default release=cvs delete use-rel-suffix compress src-all</programlisting> </listitem> </itemizedlist> <sect3 id="cvsup-refuse-file"> <title>The <filename>refuse</filename> File</title> <para>As mentioned above, <application>CVSup</application> uses a <emphasis>pull method</emphasis>. Basically, this means that you connect to the <application>CVSup</application> server, and it says, <quote>Here is what you can download from me...</quote>, and your client responds <quote>OK, I will take this, this, this, and this.</quote> In the default configuration, the <application>CVSup</application> client will take every file associated with the collection and tag you chose in the configuration file. However, this is not always what you want, especially if you are synching the <filename>doc</filename>, <filename>ports</filename>, or <filename>www</filename> trees — most people cannot read four or five languages, and therefore they do not need to download the language-specific files. If you are <application>CVSup</application>ing the Ports Collection, you can get around this by specifying each collection individually (e.g., <emphasis>ports-astrology</emphasis>, <emphasis>ports-biology</emphasis>, etc instead of simply saying <emphasis>ports-all</emphasis>). However, since the <filename>doc</filename> and <filename>www</filename> trees do not have language-specific collections, you must use one of <application>CVSup</application>'s many nifty features: the <filename>refuse</filename> file.</para> <para>The <filename>refuse</filename> file essentially tells <application>CVSup</application> that it should not take every single file from a collection; in other words, it tells the client to <emphasis>refuse</emphasis> certain files from the server. The <filename>refuse</filename> file can be found (or, if you do not yet have one, should be placed) in <filename><replaceable>base</replaceable>/sup/</filename>. <replaceable>base</replaceable> is defined in your <filename>supfile</filename>; our defined <replaceable>base</replaceable> is <filename>/var/db</filename>, which means that by default the <filename>refuse</filename> file is <filename>/var/db/sup/refuse</filename>.</para> <para>The <filename>refuse</filename> file has a very simple format; it simply contains the names of files or directories that you do not wish to download. For example, if you cannot speak any languages other than English and some German, and you do not feel the need to read the German translation of documentation, you can put the following in your <filename>refuse</filename> file:</para> <screen>doc/bn_* doc/da_* doc/de_* doc/el_* doc/es_* doc/fr_* doc/it_* doc/ja_* doc/nl_* doc/no_* doc/pl_* doc/pt_* doc/ru_* doc/sr_* doc/tr_* doc/zh_*</screen> <para>and so forth for the other languages (you can find the full list by browsing the <ulink url="http://www.FreeBSD.org/cgi/cvsweb.cgi/">FreeBSD CVS repository</ulink>).</para> <para>With this very useful feature, those users who are on slow links or pay by the minute for their Internet connection will be able to save valuable time as they will no longer need to download files that they will never use. For more information on <filename>refuse</filename> files and other neat features of <application>CVSup</application>, please view its manual page.</para> </sect3> </sect2> <sect2> <title>Running <application>CVSup</application></title> <para>You are now ready to try an update. The command line for doing this is quite simple:</para> <screen>&prompt.root; <userinput>cvsup <replaceable>supfile</replaceable></userinput></screen> <para>where <filename><replaceable>supfile</replaceable></filename> is of course the name of the <filename>supfile</filename> you have just created. Assuming you are running under X11, <command>cvsup</command> will display a GUI window with some buttons to do the usual things. Press the <guibutton>go</guibutton> button, and watch it run.</para> <para>Since you are updating your actual <filename>/usr/src</filename> tree in this example, you will need to run the program as <username>root</username> so that <command>cvsup</command> has the permissions it needs to update your files. Having just created your configuration file, and having never used this program before, that might understandably make you nervous. There is an easy way to do a trial run without touching your precious files. Just create an empty directory somewhere convenient, and name it as an extra argument on the command line:</para> <screen>&prompt.root; <userinput>mkdir /var/tmp/dest</userinput> &prompt.root; <userinput>cvsup supfile /var/tmp/dest</userinput></screen> <para>The directory you specify will be used as the destination directory for all file updates. <application>CVSup</application> will examine your usual files in <filename>/usr/src</filename>, but it will not modify or delete any of them. Any file updates will instead land in <filename>/var/tmp/dest/usr/src</filename>. <application>CVSup</application> will also leave its base directory status files untouched when run this way. The new versions of those files will be written into the specified directory. As long as you have read access to <filename>/usr/src</filename>, you do not even need to be <username>root</username> to perform this kind of trial run.</para> <para>If you are not running X11 or if you just do not like GUIs, you should add a couple of options to the command line when you run <command>cvsup</command>:</para> <screen>&prompt.root; <userinput>cvsup -g -L 2 <replaceable>supfile</replaceable></userinput></screen> <para>The <option>-g</option> tells <application>CVSup</application> not to use its GUI. This is automatic if you are not running X11, but otherwise you have to specify it.</para> <para>The <option>-L 2</option> tells <application>CVSup</application> to print out the details of all the file updates it is doing. There are three levels of verbosity, from <option>-L 0</option> to <option>-L 2</option>. The default is 0, which means total silence except for error messages.</para> <para>There are plenty of other options available. For a brief list of them, type <command>cvsup -H</command>. For more detailed descriptions, see the manual page.</para> <para>Once you are satisfied with the way updates are working, you can arrange for regular runs of <application>CVSup</application> using &man.cron.8;. Obviously, you should not let <application>CVSup</application> use its GUI when running it from &man.cron.8;.</para> </sect2> <sect2 id="cvsup-collec"> <title><application>CVSup</application> File Collections</title> <para>The file collections available via <application>CVSup</application> are organized hierarchically. There are a few large collections, and they are divided into smaller sub-collections. Receiving a large collection is equivalent to receiving each of its sub-collections. The hierarchical relationships among collections are reflected by the use of indentation in the list below.</para> <para>The most commonly used collections are <literal>src-all</literal>, and <literal>ports-all</literal>. The other collections are used only by small groups of people for specialized purposes, and some mirror sites may not carry all of them.</para> <variablelist> <varlistentry> <term><literal>cvs-all release=cvs</literal></term> <listitem> <para>The main FreeBSD CVS repository, including the cryptography code.</para> <variablelist> <varlistentry> <term><literal>distrib release=cvs</literal></term> <listitem> <para>Files related to the distribution and mirroring of FreeBSD.</para> </listitem> </varlistentry> <varlistentry> <term><literal>doc-all release=cvs</literal></term> <listitem> <para>Sources for the FreeBSD Handbook and other documentation. This does not include files for the FreeBSD web site.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-all release=cvs</literal></term> <listitem> <para>The FreeBSD Ports Collection.</para> <important id="cvsup-collec-pbase-warn"> <para>If you do not want to update the whole of <literal>ports-all</literal> (the whole ports tree), but use one of the subcollections listed below, make sure that you <emphasis>always</emphasis> update the <literal>ports-base</literal> subcollection! Whenever something changes in the ports build infrastructure represented by <literal>ports-base</literal>, it is virtually certain that those changes will be used by <quote>real</quote> ports real soon. Thus, if you only update the <quote>real</quote> ports and they use some of the new features, there is a very high chance that their build will fail with some mysterious error message. The <emphasis>very first</emphasis> thing to do in this case is to make sure that your <literal>ports-base</literal> subcollection is up to date.</para> </important> <important id="cvsup-collec-index-warn"> <para>If you are going to be building your own local copy of <filename>ports/INDEX</filename>, you <emphasis>must</emphasis> accept <literal>ports-all</literal> (the whole ports tree). Building <filename>ports/INDEX</filename> with a partial tree is not supported. See the <ulink url="&url.books.faq;/applications.html#MAKE-INDEX"> FAQ</ulink>.</para> </important> <variablelist> <varlistentry> <term><literal>ports-accessibility release=cvs</literal></term> <listitem> <para>Software to help disabled users.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-arabic release=cvs</literal></term> <listitem> <para>Arabic language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-archivers release=cvs</literal></term> <listitem> <para>Archiving tools.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-astro release=cvs</literal></term> <listitem> <para>Astronomical ports.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-audio release=cvs</literal></term> <listitem> <para>Sound support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-base release=cvs</literal></term> <listitem> <para>The Ports Collection build infrastructure - various files located in the <filename>Mk/</filename> and <filename>Tools/</filename> subdirectories of <filename>/usr/ports</filename>.</para> <note> <para>Please see the <link linkend="cvsup-collec-pbase-warn">important warning above</link>: you should <emphasis>always</emphasis> update this subcollection, whenever you update any part of the FreeBSD Ports Collection!</para> </note> </listitem> </varlistentry> <varlistentry> <term><literal>ports-benchmarks release=cvs</literal></term> <listitem> <para>Benchmarks.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-biology release=cvs</literal></term> <listitem> <para>Biology.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-cad release=cvs</literal></term> <listitem> <para>Computer aided design tools.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-chinese release=cvs</literal></term> <listitem> <para>Chinese language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-comms release=cvs</literal></term> <listitem> <para>Communication software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-converters release=cvs</literal></term> <listitem> <para>character code converters.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-databases release=cvs</literal></term> <listitem> <para>Databases.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-deskutils release=cvs</literal></term> <listitem> <para>Things that used to be on the desktop before computers were invented.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-devel release=cvs</literal></term> <listitem> <para>Development utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-dns release=cvs</literal></term> <listitem> <para>DNS related software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-editors release=cvs</literal></term> <listitem> <para>Editors.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-emulators release=cvs</literal></term> <listitem> <para>Emulators for other operating systems.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-finance release=cvs</literal></term> <listitem> <para>Monetary, financial and related applications.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-ftp release=cvs</literal></term> <listitem> <para>FTP client and server utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-games release=cvs</literal></term> <listitem> <para>Games.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-german release=cvs</literal></term> <listitem> <para>German language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-graphics release=cvs</literal></term> <listitem> <para>Graphics utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-hebrew release=cvs</literal></term> <listitem> <para>Hebrew language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-hungarian release=cvs</literal></term> <listitem> <para>Hungarian language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-irc release=cvs</literal></term> <listitem> <para>Internet Relay Chat utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-japanese release=cvs</literal></term> <listitem> <para>Japanese language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-java release=cvs</literal></term> <listitem> <para>&java; utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-korean release=cvs</literal></term> <listitem> <para>Korean language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-lang release=cvs</literal></term> <listitem> <para>Programming languages.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-mail release=cvs</literal></term> <listitem> <para>Mail software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-math release=cvs</literal></term> <listitem> <para>Numerical computation software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-mbone release=cvs</literal></term> <listitem> <para>MBone applications.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-misc release=cvs</literal></term> <listitem> <para>Miscellaneous utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-multimedia release=cvs</literal></term> <listitem> <para>Multimedia software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-net release=cvs</literal></term> <listitem> <para>Networking software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-net-im release=cvs</literal></term> <listitem> <para>Instant messaging software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-net-mgmt release=cvs</literal></term> <listitem> <para>Network management software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-net-p2p release=cvs</literal></term> <listitem> <para>Peer to peer networking.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-news release=cvs</literal></term> <listitem> <para>USENET news software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-palm release=cvs</literal></term> <listitem> <para>Software support for <trademark class="trade">Palm</trademark> series.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-polish release=cvs</literal></term> <listitem> <para>Polish language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-portuguese release=cvs</literal></term> <listitem> <para>Portuguese language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-print release=cvs</literal></term> <listitem> <para>Printing software.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-russian release=cvs</literal></term> <listitem> <para>Russian language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-science release=cvs</literal></term> <listitem> <para>Science.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-security release=cvs</literal></term> <listitem> <para>Security utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-shells release=cvs</literal></term> <listitem> <para>Command line shells.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-sysutils release=cvs</literal></term> <listitem> <para>System utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-textproc release=cvs</literal></term> <listitem> <para>text processing utilities (does not include desktop publishing).</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-ukrainian release=cvs</literal></term> <listitem> <para>Ukrainian language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-vietnamese release=cvs</literal></term> <listitem> <para>Vietnamese language support.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-www release=cvs</literal></term> <listitem> <para>Software related to the World Wide Web.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11 release=cvs</literal></term> <listitem> <para>Ports to support the X window system.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11-clocks release=cvs</literal></term> <listitem> <para>X11 clocks.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11-fm release=cvs</literal></term> <listitem> <para>X11 file managers.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11-fonts release=cvs</literal></term> <listitem> <para>X11 fonts and font utilities.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11-toolkits release=cvs</literal></term> <listitem> <para>X11 toolkits.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11-servers release=cvs</literal></term> <listitem> <para>X11 servers.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11-themes release=cvs</literal></term> <listitem> <para>X11 themes.</para> </listitem> </varlistentry> <varlistentry> <term><literal>ports-x11-wm release=cvs</literal></term> <listitem> <para>X11 window managers.</para> </listitem> </varlistentry> </variablelist> </listitem> </varlistentry> <varlistentry> <term><literal>projects-all release=cvs</literal></term> <listitem> <para>Sources for the FreeBSD projects repository.</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-all release=cvs</literal></term> <listitem> <para>The main FreeBSD sources, including the cryptography code.</para> <variablelist> <varlistentry> <term><literal>src-base release=cvs</literal></term> <listitem> <para>Miscellaneous files at the top of <filename>/usr/src</filename>.</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-bin release=cvs</literal></term> <listitem> <para>User utilities that may be needed in single-user mode (<filename>/usr/src/bin</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-contrib release=cvs</literal></term> <listitem> <para>Utilities and libraries from outside the FreeBSD project, used relatively unmodified (<filename>/usr/src/contrib</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-crypto release=cvs</literal></term> <listitem> <para>Cryptography utilities and libraries from outside the FreeBSD project, used relatively unmodified (<filename>/usr/src/crypto</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-eBones release=cvs</literal></term> <listitem> <para>Kerberos and DES (<filename>/usr/src/eBones</filename>). Not used in current releases of FreeBSD.</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-etc release=cvs</literal></term> <listitem> <para>System configuration files (<filename>/usr/src/etc</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-games release=cvs</literal></term> <listitem> <para>Games (<filename>/usr/src/games</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-gnu release=cvs</literal></term> <listitem> <para>Utilities covered by the GNU Public License (<filename>/usr/src/gnu</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-include release=cvs</literal></term> <listitem> <para>Header files (<filename>/usr/src/include</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-kerberos5 release=cvs</literal></term> <listitem> <para>Kerberos5 security package (<filename>/usr/src/kerberos5</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-kerberosIV release=cvs</literal></term> <listitem> <para>KerberosIV security package (<filename>/usr/src/kerberosIV</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-lib release=cvs</literal></term> <listitem> <para>Libraries (<filename>/usr/src/lib</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-libexec release=cvs</literal></term> <listitem> <para>System programs normally executed by other programs (<filename>/usr/src/libexec</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-release release=cvs</literal></term> <listitem> <para>Files required to produce a FreeBSD release (<filename>/usr/src/release</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-sbin release=cvs</literal></term> <listitem> <para>System utilities for single-user mode (<filename>/usr/src/sbin</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-secure release=cvs</literal></term> <listitem> <para>Cryptographic libraries and commands (<filename>/usr/src/secure</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-share release=cvs</literal></term> <listitem> <para>Files that can be shared across multiple systems (<filename>/usr/src/share</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-sys release=cvs</literal></term> <listitem> <para>The kernel (<filename>/usr/src/sys</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-sys-crypto release=cvs</literal></term> <listitem> <para>Kernel cryptography code (<filename>/usr/src/sys/crypto</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-tools release=cvs</literal></term> <listitem> <para>Various tools for the maintenance of FreeBSD (<filename>/usr/src/tools</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-usrbin release=cvs</literal></term> <listitem> <para>User utilities (<filename>/usr/src/usr.bin</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-usrsbin release=cvs</literal></term> <listitem> <para>System utilities (<filename>/usr/src/usr.sbin</filename>).</para> </listitem> </varlistentry> </variablelist> </listitem> </varlistentry> <varlistentry> <term><literal>www release=cvs</literal></term> <listitem> <para>The sources for the FreeBSD WWW site.</para> </listitem> </varlistentry> </variablelist> </listitem> </varlistentry> <varlistentry> <term><literal>distrib release=self</literal></term> <listitem> <para>The <application>CVSup</application> server's own configuration files. Used by <application>CVSup</application> mirror sites.</para> </listitem> </varlistentry> <varlistentry> <term><literal>gnats release=current</literal></term> <listitem> <para>The GNATS bug-tracking database.</para> </listitem> </varlistentry> <varlistentry> <term><literal>mail-archive release=current</literal></term> <listitem> <para>FreeBSD mailing list archive.</para> </listitem> </varlistentry> <varlistentry> <term><literal>www release=current</literal></term> <listitem> <para>The pre-processed FreeBSD WWW site files (not the source files). Used by WWW mirror sites.</para> </listitem> </varlistentry> </variablelist> </sect2> <sect2> <title>For More Information</title> <para>For the <application>CVSup</application> FAQ and other information about <application>CVSup</application>, see <ulink url="http://www.polstra.com/projects/freeware/CVSup/">The CVSup Home Page</ulink>.</para> <para>Most FreeBSD-related discussion of <application>CVSup</application> takes place on the &a.hackers;. New versions of the software are announced there, as well as on the &a.announce;.</para> <para>Questions and bug reports should be addressed to the author of the program at <email>cvsup-bugs@polstra.com</email>.</para> </sect2> <sect2 id="cvsup-mirrors"> <title>CVSup Sites</title> <para><link linkend="cvsup">CVSup</link> servers for FreeBSD are running at the following sites:</para> &chap.mirrors.cvsup.index.inc; &chap.mirrors.lastmod.inc; &chap.mirrors.cvsup.inc; </sect2> </sect1> <sect1 id="portsnap"> <title>Using Portsnap</title> <sect2 id="portsnap-intro"> <title>Introduction</title> <para><application>Portsnap</application> is a system for securely distributing the &os; ports tree. Approximately once an hour, a <quote>snapshot</quote> of the ports tree is generated, repackaged, and cryptographically signed. The resulting files are then distributed via HTTP.</para> <para>Like <application>CVSup</application>, <application>Portsnap</application> uses a <emphasis>pull</emphasis> model of updating: The packaged and signed ports trees are placed on a web server which waits passively for clients to request files. Users must either run &man.portsnap.8; manually to download updates or set up a &man.cron.8; job to download updates automatically on a regular basis.</para> <para>For technical reasons, <application>Portsnap</application> does not update the <quote>live</quote> ports tree in <filename>/usr/ports/</filename> directly; instead, it works via a compressed copy of the ports tree stored in <filename>/var/db/portsnap/</filename> by default. This compressed copy is then used to update the live ports tree.</para> <note> <para>If <application>Portsnap</application> is installed from the &os; Ports Collection, then the default location for its compressed snapshot will be <filename>/usr/local/portsnap/</filename> instead of <filename>/var/db/portsnap/</filename>.</para> </note> </sect2> <sect2 id="portsnap-install"> <title>Installation</title> <para>On &os; 6.0 and more recent versions, <application>Portsnap</application> is contained in the &os; base system. On older versions of &os;, it can be installed using the <filename role="package">sysutils/portsnap</filename> port.</para> </sect2> <sect2 id="portsnap-config"> <title>Portsnap Configuration</title> <para><application>Portsnap</application>'s operation is controlled by the <filename>/etc/portsnap.conf</filename> configuration file. For most users, the default configuration file will suffice; for more details, consult the &man.portsnap.conf.5; manual page.</para> <note> <para>If <application>Portsnap</application> is installed from the &os; Ports Collection, it will use the configuration file <filename>/usr/local/etc/portsnap.conf</filename> instead of <filename>/etc/portsnap.conf</filename>. This configuration file is not created when the port is installed, but a sample configuration file is distributed; to copy it into place, run the following command:</para> <screen>&prompt.root; <userinput>cd /usr/local/etc && cp portsnap.conf.sample portsnap.conf</userinput></screen> </note> </sect2> <sect2> <title>Running <application>Portsnap</application> for the First Time</title> <para>The first time &man.portsnap.8; is run, it will need to download a compressed snapshot of the entire ports tree into <filename>/var/db/portsnap/</filename> (or <filename>/usr/local/portsnap/</filename> if <application>Portsnap</application> was installed from the Ports Collection). For the beginning of 2006 this is approximately a 41 MB download.</para> <screen>&prompt.root; <userinput>portsnap fetch</userinput></screen> <para>Once the compressed snapshot has been downloaded, a <quote>live</quote> copy of the ports tree can be extracted into <filename>/usr/ports/</filename>. This is necessary even if a ports tree has already been created in that directory (e.g., by using <application>CVSup</application>), since it establishes a baseline from which <command>portsnap</command> can determine which parts of the ports tree need to be updated later.</para> <screen>&prompt.root; <userinput>portsnap extract</userinput></screen> <note> <para>In the default installation <filename class="directory">/usr/ports</filename> is not created. If you run &os; 6.0-RELEASE, it should be created before <command>portsnap</command> is used. On more recent versions of &os; or <application>Portsnap</application>, this operation will be done automatically at first use of the <command>portsnap</command> command.</para> </note> </sect2> <sect2> <title>Updating the Ports Tree</title> <para>After an initial compressed snapshot of the ports tree has been downloaded and extracted into <filename>/usr/ports/</filename>, updating the ports tree consists of two steps: <emphasis>fetch</emphasis>ing updates to the compressed snapshot, and using them to <emphasis>update</emphasis> the live ports tree. These two steps can be specified to <command>portsnap</command> as a single command:</para> <screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen> <note> <para>Some older versions of <command>portsnap</command> do not support this syntax; if it fails, try instead the following:</para> <screen>&prompt.root; <userinput>portsnap fetch</userinput> &prompt.root; <userinput>portsnap update</userinput></screen> </note> </sect2> <sect2> <title>Running Portsnap from cron</title> <para>In order to avoid problems with <quote>flash crowds</quote> accessing the <application>Portsnap</application> servers, <command>portsnap fetch</command> will not run from a &man.cron.8; job. Instead, a special <command>portsnap cron</command> command exists, which waits for a random duration up to 3600 seconds before fetching updates.</para> <para>In addition, it is strongly recommended that <command>portsnap update</command> not be run from a <command>cron</command> job, since it is liable to cause major problems if it happens to run at the same time as a port is being built or installed. However, it is safe to update the ports' <filename>INDEX</filename> files, and this can be done by passing the <option>-I</option> flag to <command>portsnap</command>. (Obviously, if <command>portsnap -I update</command> is run from <command>cron</command>, then it will be necessary to run <command>portsnap update</command> without the <option>-I</option> flag at a later time in order to update the rest of the tree.)</para> <para>Adding the following line to <filename>/etc/crontab</filename> will cause <command>portsnap</command> to update its compressed snapshot and the <filename>INDEX</filename> files in <filename>/usr/ports/</filename>, and will send an email if any installed ports are out of date:</para> <programlisting>0 3 * * * root portsnap -I cron update && pkg_version -vIL=</programlisting> <note> <para>If the system clock is not set to the local time zone, please replace <literal>3</literal> with a random value between 0 and 23, in order to spread the load on the <application>Portsnap</application> servers more evenly.</para> </note> <note> <para>Some older versions of <command>portsnap</command> do not support listing multiple commands (e.g., <literal>cron update</literal>) in the same invocation of <command>portsnap</command>. If the line above fails, try replacing <command>portsnap -I cron update</command> with <command>portsnap cron && portsnap -I update</command>.</para> </note> </sect2> </sect1> <sect1 id="cvs-tags"> <title>CVS Tags</title> <para>When obtaining or updating sources using <application>cvs</application> or <application>CVSup</application>, a revision tag must be specified. A revision tag refers to either a particular line of &os; development, or a specific point in time. The first type are called <quote>branch tags</quote>, and the second type are called <quote>release tags</quote>.</para> <sect2> <title>Branch Tags</title> <para>All of these, with the exception of <literal>HEAD</literal> (which is always a valid tag), only apply to the <filename>src/</filename> tree. The <filename>ports/</filename>, <filename>doc/</filename>, and <filename>www/</filename> trees are not branched.</para> <variablelist> <varlistentry> <term>HEAD</term> <listitem> <para>Symbolic name for the main line, or FreeBSD-CURRENT. Also the default when no revision is specified.</para> <para>In <application>CVSup</application>, this tag is represented by a <literal>.</literal> (not punctuation, but a literal <literal>.</literal> character).</para> <note> <para>In CVS, this is the default when no revision tag is specified. It is usually <emphasis>not</emphasis> a good idea to checkout or update to CURRENT sources on a STABLE machine, unless that is your intent.</para> </note> </listitem> </varlistentry> <varlistentry> <term>RELENG_6</term> <listitem> <para>The line of development for FreeBSD-6.X, also known as FreeBSD 6-STABLE</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_1</term> <listitem> <para>The release branch for FreeBSD-6.1, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_0</term> <listitem> <para>The release branch for FreeBSD-6.0, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5</term> <listitem> <para>The line of development for FreeBSD-5.X, also known as FreeBSD 5-STABLE.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_5</term> <listitem> <para>The release branch for FreeBSD-5.5, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_4</term> <listitem> <para>The release branch for FreeBSD-5.4, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_3</term> <listitem> <para>The release branch for FreeBSD-5.3, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_2</term> <listitem> <para>The release branch for FreeBSD-5.2 and FreeBSD-5.2.1, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_1</term> <listitem> <para>The release branch for FreeBSD-5.1, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_0</term> <listitem> <para>The release branch for FreeBSD-5.0, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4</term> <listitem> <para>The line of development for FreeBSD-4.X, also known as FreeBSD 4-STABLE.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_11</term> <listitem> <para>The release branch for FreeBSD-4.11, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_10</term> <listitem> <para>The release branch for FreeBSD-4.10, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_9</term> <listitem> <para>The release branch for FreeBSD-4.9, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_8</term> <listitem> <para>The release branch for FreeBSD-4.8, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_7</term> <listitem> <para>The release branch for FreeBSD-4.7, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_6</term> <listitem> <para>The release branch for FreeBSD-4.6 and FreeBSD-4.6.2, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_5</term> <listitem> <para>The release branch for FreeBSD-4.5, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_4</term> <listitem> <para>The release branch for FreeBSD-4.4, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_3</term> <listitem> <para>The release branch for FreeBSD-4.3, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3</term> <listitem> <para>The line of development for FreeBSD-3.X, also known as 3.X-STABLE.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2</term> <listitem> <para>The line of development for FreeBSD-2.2.X, also known as 2.2-STABLE. This branch is mostly obsolete.</para> </listitem> </varlistentry> </variablelist> </sect2> <sect2> <title>Release Tags</title> <para>These tags refer to a specific point in time when a particular version of &os; was released. The release engineering process is documented in more detail by the <ulink url="&url.base;/releng/">Release Engineering Information</ulink> and <ulink url="&url.articles.releng;/release-proc.html">Release Process</ulink> documents. The <filename class="directory">src</filename> tree uses tag names that start with <literal>RELENG_</literal> tags. The <filename class="directory">ports</filename> and <filename class="directory">doc</filename> trees use tags whose names begin with <literal>RELEASE</literal> tags. Finally, the <filename class="directory">www</filename> tree is not tagged with any special name for releases.</para> <variablelist> <varlistentry> <term>RELENG_6_1_0_RELEASE</term> <listitem> <para>FreeBSD 6.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_0_0_RELEASE</term> <listitem> <para>FreeBSD 6.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_5_0_RELEASE</term> <listitem> <para>FreeBSD 5.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_4_0_RELEASE</term> <listitem> <para>FreeBSD 5.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_11_0_RELEASE</term> <listitem> <para>FreeBSD 4.11</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_3_0_RELEASE</term> <listitem> <para>FreeBSD 5.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_10_0_RELEASE</term> <listitem> <para>FreeBSD 4.10</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_2_1_RELEASE</term> <listitem> <para>FreeBSD 5.2.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_2_0_RELEASE</term> <listitem> <para>FreeBSD 5.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_9_0_RELEASE</term> <listitem> <para>FreeBSD 4.9</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_1_0_RELEASE</term> <listitem> <para>FreeBSD 5.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_8_0_RELEASE</term> <listitem> <para>FreeBSD 4.8</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_0_0_RELEASE</term> <listitem> <para>FreeBSD 5.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_7_0_RELEASE</term> <listitem> <para>FreeBSD 4.7</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_6_2_RELEASE</term> <listitem> <para>FreeBSD 4.6.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_6_1_RELEASE</term> <listitem> <para>FreeBSD 4.6.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_6_0_RELEASE</term> <listitem> <para>FreeBSD 4.6</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_5_0_RELEASE</term> <listitem> <para>FreeBSD 4.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_4_0_RELEASE</term> <listitem> <para>FreeBSD 4.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_3_0_RELEASE</term> <listitem> <para>FreeBSD 4.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_2_0_RELEASE</term> <listitem> <para>FreeBSD 4.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_1_1_RELEASE</term> <listitem> <para>FreeBSD 4.1.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_1_0_RELEASE</term> <listitem> <para>FreeBSD 4.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_0_0_RELEASE</term> <listitem> <para>FreeBSD 4.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_5_0_RELEASE</term> <listitem> <para>FreeBSD-3.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_4_0_RELEASE</term> <listitem> <para>FreeBSD-3.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_3_0_RELEASE</term> <listitem> <para>FreeBSD-3.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_2_0_RELEASE</term> <listitem> <para>FreeBSD-3.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_1_0_RELEASE</term> <listitem> <para>FreeBSD-3.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_0_0_RELEASE</term> <listitem> <para>FreeBSD-3.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_8_RELEASE</term> <listitem> <para>FreeBSD-2.2.8</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_7_RELEASE</term> <listitem> <para>FreeBSD-2.2.7</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_6_RELEASE</term> <listitem> <para>FreeBSD-2.2.6</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_5_RELEASE</term> <listitem> <para>FreeBSD-2.2.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_2_RELEASE</term> <listitem> <para>FreeBSD-2.2.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_1_RELEASE</term> <listitem> <para>FreeBSD-2.2.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_0_RELEASE</term> <listitem> <para>FreeBSD-2.2.0</para> </listitem> </varlistentry> </variablelist> </sect2> </sect1> <sect1 id="mirrors-afs"> <title>AFS Sites</title> <para>AFS servers for FreeBSD are running at the following sites:</para> <variablelist> <varlistentry> <term>Sweden</term> <listitem> <para>The path to the files are: <filename>/afs/stacken.kth.se/ftp/pub/FreeBSD/</filename></para> <programlisting>stacken.kth.se # Stacken Computer Club, KTH, Sweden 130.237.234.43 #hot.stacken.kth.se 130.237.237.230 #fishburger.stacken.kth.se 130.237.234.3 #milko.stacken.kth.se</programlisting> <para>Maintainer <email>ftp@stacken.kth.se</email></para> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="mirrors-rsync"> <title>rsync Sites</title> <para>The following sites make FreeBSD available through the rsync protocol. The <application>rsync</application> utility works in much the same way as the &man.rcp.1; command, but has more options and uses the rsync remote-update protocol which transfers only the differences between two sets of files, thus greatly speeding up the synchronization over the network. This is most useful if you are a mirror site for the FreeBSD FTP server, or the CVS repository. The <application>rsync</application> suite is available for many operating systems, on FreeBSD, see the <filename role="package">net/rsync</filename> port or use the package.</para> <variablelist> <varlistentry> <term>Czech Republic</term> <listitem> <para>rsync://ftp.cz.FreeBSD.org/</para> <para>Available collections:</para> <itemizedlist> <listitem><para>ftp: A partial mirror of the FreeBSD FTP server.</para></listitem> <listitem><para>FreeBSD: A full mirror of the FreeBSD FTP server.</para></listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>Germany</term> <listitem> <para>rsync://grappa.unix-ag.uni-kl.de/</para> <para>Available collections:</para> <itemizedlist> <listitem><para>freebsd-cvs: The full FreeBSD CVS repository.</para></listitem> </itemizedlist> <para>This machine also mirrors the CVS repositories of the NetBSD and the OpenBSD projects, among others.</para> </listitem> </varlistentry> <varlistentry> <term>Netherlands</term> <listitem> <para>rsync://ftp.nl.FreeBSD.org/</para> <para>Available collections:</para> <itemizedlist> <listitem><para>vol/4/freebsd-core: A full mirror of the FreeBSD FTP server.</para></listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>United Kingdom</term> <listitem> <para>rsync://rsync.mirror.ac.uk/</para> <para>Available collections:</para> <itemizedlist> <listitem><para>ftp.FreeBSD.org: A full mirror of the FreeBSD FTP server.</para></listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>United States of America</term> <listitem> <para>rsync://ftp-master.FreeBSD.org/</para> <para>This server may only be used by FreeBSD primary mirror sites.</para> <para>Available collections:</para> <itemizedlist> <listitem><para>FreeBSD: The master archive of the FreeBSD FTP server.</para></listitem> <listitem><para>acl: The FreeBSD master ACL list.</para></listitem> </itemizedlist> <para>rsync://ftp13.FreeBSD.org/</para> <para>Available collections:</para> <itemizedlist> <listitem><para>FreeBSD: A full mirror of the FreeBSD FTP server.</para></listitem> </itemizedlist> </listitem> </varlistentry> </variablelist> </sect1> </appendix>