<?xml version="1.0" encoding="iso-8859-1"?> <!-- The FreeBSD Documentation Project $FreeBSD$ --> <appendix id="mirrors"> <title>Obtaining &os;</title> <sect1 id="mirrors-cdrom"> <title>CDROM and DVD Publishers</title> <sect2> <title>CD and DVD Sets</title> <para>&os; CD and DVD sets are available from many online retailers:</para> <itemizedlist> <listitem> <address> <otheraddr>&os; Mall, Inc.</otheraddr> <street>2420 Sand Creek Rd C-1 #347</street> <city>Brentwood</city>, <state>CA</state> <postcode>94513</postcode> <country>USA</country> Phone: <phone>+1 925 240-6652</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>Dr. Hinner EDV</otheraddr> <street>Kochelseestr. 11</street> <postcode>D-81371</postcode> <city>München</city> <country>Germany</country> Phone: <phone>(0177) 428 419 0</phone> WWW: <otheraddr><ulink url="http://www.hinner.de/linux/freebsd.html"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>Linux Distro UK</otheraddr> <street>42 Wharfedale Road</street> <city>Margate</city> <postcode>CT9 2TB</postcode> <country>United Kingdom</country> WWW: <otheraddr><ulink url="https://linux-distro.co.uk/"></ulink></otheraddr> </address> </listitem> <listitem> <address> <otheraddr>The Linux Emporium</otheraddr> <street>The Techno Centre, Puma Way</street> <city>Parkside</city> <postcode>CV1 2TT</postcode> <country>United Kingdom</country> Phone: <phone>+44 (0)247 615 8121</phone> Fax: <fax>+44 1491 837016</fax> WWW: <otheraddr><ulink url="http://www.linuxemporium.co.uk/products/bsd/"></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/shop/freebsd"></ulink></otheraddr> </address> </listitem> </itemizedlist> </sect2> </sect1> <sect1 id="mirrors-ftp"> <title>FTP Sites</title> <para>The official sources for &os; 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>Additionally, &os; is available via anonymous FTP from the following mirror sites. If you choose to obtain &os; 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 &os; 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 &os; 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 (Deprecated)</title> <sect2> <title>Warning</title> <warning> <para>CVS has been deprecated by the project, and its use is not recommended. <ulink url="&url.books.handbook;/svn.html">Subversion</ulink> should be used instead.</para> </warning> </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 &os;'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 &os; 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 &os;, 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 &os;</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 &os; 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-src-cur.name; supports the entire Subversion tree. &a.ctm-src-cur.name; supports the head of the development branch. &a.ctm-src-9.name; supports the 9.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>/&os; 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="svn"> <title>Using <application>Subversion</application></title> <indexterm> <primary>Subversion</primary> </indexterm> <sect2 id="svn-intro"> <title>Introduction</title> <para>As of July 2012, &os; uses <ulink url="http://subversion.apache.org/">Subversion</ulink> (<emphasis>svn</emphasis>) as the primary version control system for storing all of &os;'s source code, documentation, and the Ports Collection.</para> <note> <para>Subversion is generally a developer tool. Most users should use <link linkend="updating-upgrading-freebsdupdate">FreeBSD Update</link> to update the &os; base system, and <link linkend="updating-upgrading-portsnap">Portsnap</link> to update the &os; Ports Collection.</para> </note> <para>In <application>Subversion</application>, URLs are used to designate a repository, taking the form of <replaceable>protocol://hostname/path</replaceable>. Mirrors may support different protocols as specified below. The first component of the path is the &os; repository to access. There are three different repositories, <literal>base</literal> for the &os; base system source code, <literal>ports</literal> for the Ports Collection, and <literal>doc</literal> for documentation. For example, the URL <literal>svn://svn0.us-east.FreeBSD.org/ports/head/</literal> specifies the main branch of the ports repository on the <hostid role="fqdn">svn0.us-east.FreeBSD.org</hostid> mirror, using the <literal>svn</literal> protocol.</para> </sect2> <sect2 id="svn-install"> <title>Installation</title> <para><application>Subversion</application> must be installed before it can be used to check out the contents of any of the repositories. If a copy of the ports tree is already present, one can install <application>Subversion</application> like this:</para> <screen>&prompt.root; <userinput>cd /usr/ports/devel/subversion</userinput> &prompt.root; <userinput>make install clean</userinput></screen> <para>If the ports tree is not available, <application>Subversion</application> can be installed as a package:</para> <screen>&prompt.root; <userinput>pkg_add -r subversion</userinput></screen> <para>If <application>pkgng</application> is being used to manage packages, <application>Subversion</application> can be installed with it instead:</para> <screen>&prompt.root; <userinput>pkg install devel/subversion</userinput></screen> </sect2> <sect2 id="svn-usage"> <title>Running <application>Subversion</application></title> <para>The <command>svn</command> command is used to fetch a clean copy of the sources into a local directory. The files in this directory are called a <emphasis>local working copy</emphasis>.</para> <warning> <para>If the local directory already exists but was not created by <command>svn</command>, rename or delete it before the checkout. Checkout over an existing non-<command>svn</command> directory can cause conflicts between the existing files and those brought in from the repository.</para> </warning> <para>A checkout from a given repository is performed with a command like this:</para> <screen>&prompt.root; <userinput>svn checkout <replaceable>svn-mirror</replaceable>/<replaceable>repository</replaceable>/<replaceable>branch</replaceable> <replaceable>lwcdir</replaceable></userinput></screen> <para>where:</para> <itemizedlist> <listitem> <para><replaceable>svn-mirror</replaceable> is a URL for one of the <link linkend="svn-mirrors">Subversion mirror sites</link>.</para> </listitem> <listitem> <para><replaceable>repository</replaceable> is one of the Project repositories, i.e., <literal>base</literal>, <literal>ports</literal>, or <literal>doc</literal>.</para> </listitem> <listitem> <para><replaceable>branch</replaceable> depends on the repository used. <literal>ports</literal> and <literal>doc</literal> are mostly updated in the <literal>head</literal> branch, while <literal>base</literal> maintains the latest version of -CURRENT under <literal>head</literal> and the respective latest versions of the -STABLE branches under <literal>stable/8</literal> (for 8.<replaceable>x</replaceable>) and <literal>stable/9</literal> (9.<replaceable>x</replaceable>).</para> </listitem> <listitem> <para><replaceable>lwcdir</replaceable> is the target directory where the contents of the specified branch should be placed. This is usually <filename class="directory">/usr/ports</filename> for <literal>ports</literal>, <filename class="directory">/usr/src</filename> for <literal>base</literal>, and <filename class="directory">/usr/doc</filename> for <literal>doc</literal>.</para> </listitem> </itemizedlist> <para>This example checks out the Ports Collection from the western US repository using the <acronym>HTTPS</acronym> protocol, placing the local working copy in <filename class="directory">/usr/ports</filename>. If <filename class="directory">/usr/ports</filename> is already present but was not created by <command>svn</command>, remember to rename or delete it before the checkout.</para> <screen>&prompt.root; <userinput>svn checkout <replaceable>https://svn0.us-west.FreeBSD.org</replaceable>/ports/head /usr/ports</userinput></screen> <para>Because the initial checkout has to download the full branch of the remote repository, it can take a while. Please be patient.</para> <para>After the initial checkout, the local working copy can be updated by running:</para> <screen>&prompt.root; <userinput>svn update <replaceable>lwcdir</replaceable></userinput></screen> <para>To update <filename class="directory">/usr/ports</filename> created in the example above, use:</para> <screen>&prompt.root; <userinput>svn update /usr/ports</userinput></screen> <para>The update is much quicker than a checkout, only transferring files that have changed.</para> <para>An alternate way of updating the local working copy after checkout is provided by the <filename>Makefile</filename> in the <filename class="directory">/usr/ports</filename>, <filename class="directory">/usr/src</filename>, and <filename class="directory">/usr/doc</filename> directories. Set <makevar>SVN_UPDATE</makevar> and use the <maketarget>update</maketarget> target. For example, to update <filename class="directory">/usr/src</filename>:</para> <screen>&prompt.root; <userinput>cd /usr/src</userinput> &prompt.root; <userinput>make update SVN_UPDATE=yes</userinput></screen> </sect2> <sect2> <title>For More Information</title> <para>For other information about using <application>Subversion</application>, please see the <quote>Subversion Book</quote>, titled <ulink url="http://svnbook.red-bean.com/">Version Control with Subversion</ulink>, or the <ulink url="http://subversion.apache.org/docs/">Subversion Documentation</ulink>.</para> </sect2> </sect1> <sect1 id="svn-mirrors"> <title><application>Subversion</application> Mirror Sites</title> <indexterm> <primary>Subversion Repository</primary> <secondary>Mirror Sites</secondary> </indexterm> <para>All mirrors carry all repositories.</para> <para>The master &os; <application>Subversion</application> server, <hostid role="fqdn">svn.FreeBSD.org</hostid>, is publicly accessible, read-only. That may change in the future, so users are encouraged to use one of the official mirrors. To view the &os; <application>Subversion</application> repositories through a browser, use <ulink url="http://svnweb.FreeBSD.org/">http://svnweb.FreeBSD.org/</ulink>.</para> <note> <para>The &os; svn mirror network is still in its early days, and will likely change. Do not count on this list of mirrors being static. In particular, the SSL certificates of the servers will likely change at some point.</para> </note> <informaltable> <tgroup cols="4"> <colspec colwidth="3*"/> <colspec colwidth="1*"/> <colspec colwidth="2*"/> <colspec colwidth="10*"/> <thead> <row> <entry>Name</entry> <entry>Protocols</entry> <entry>Location</entry> <entry>SSL fingerprint</entry> </row> </thead> <tbody> <row> <entry><hostid role="fqdn">svn0.us-west.FreeBSD.org</hostid></entry> <entry>svn, <ulink url="http://svn0.us-west.FreeBSD.org/">http</ulink>, <ulink url="https://svn0.us-west.FreeBSD.org/">https</ulink></entry> <entry>USA, California</entry> <entry>SHA1 <literal>79:35:8F:CA:6D:34:D9:30:44:D1:00:AF:33:4D:E6:11:44:4D:15:EC</literal></entry> </row> <row> <entry><hostid role="fqdn">svn0.us-east.FreeBSD.org</hostid></entry> <entry>svn, <ulink url="http://svn0.us-east.FreeBSD.org/">http</ulink>, <ulink url="https://svn0.us-east.FreeBSD.org/">https</ulink></entry> <entry>USA, New Jersey</entry> <entry>SHA1 <literal>06:D1:23:DE:5E:7A:F7:2B:7A:7E:74:95:5F:54:8D:5C:B0:D6:2E:8F</literal></entry> </row> </tbody> </tgroup> </informaltable> <para><acronym>HTTPS</acronym> is the preferred protocol, providing protection against another computer pretending to be the &os; mirror (commonly known as a <quote>man in the middle</quote> attack) or otherwise trying to send bad content to the end user.</para> <para>On the first connection to an <acronym>HTTPS</acronym> mirror, the user will be asked to verify the server <emphasis>fingerprint</emphasis>:</para> <screen>Error validating server certificate for 'https://svn0.us-west.freebsd.org:443': - The certificate is not issued by a trusted authority. Use the fingerprint to validate the certificate manually! Certificate information: - Hostname: svnmir.ysv.FreeBSD.org - Valid: from Fri, 24 Aug 2012 22:04:04 GMT until Sat, 24 Aug 2013 22:04:04 GMT - Issuer: clusteradm, FreeBSD.org, CA, US - Fingerprint: 79:35:8f:ca:6d:34:d9:30:44:d1:00:af:33:4d:e6:11:44:4d:15:ec (R)eject, accept (t)emporarily or accept (p)ermanently?</screen> <para>Compare the fingerprint shown to those listed in the table above. If the fingerprint matches, the server security certificate can be accepted temporarily or permanently. A temporary certificate will expire after a single session with the server, and the verification step will be repeated on the next connection. Accepting the certificate permanently will store the authentication credentials in <filename class="directory">~/.subversion/auth/</filename> and the user will not be asked to verify the fingerprint again until the certificate expires.</para> <para>If <acronym>HTTPS</acronym> cannot be used due to firewall or other problems, <literal>SVN</literal> is the next choice, with slightly faster transfers. When neither can be used, use <acronym>HTTP</acronym>.</para> </sect1> <sect1 id="cvsup"> <title>Using CVSup (Deprecated)</title> <sect2 id="cvsup-intro"> <title>Introduction</title> <warning> <para><command>cvsup</command> has been deprecated by the project, and its use is not recommended. <application>Subversion</application> should be used instead.</para> </warning> <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 &os; sources are maintained in a CVS repository on a central development machine in California. With <application>CVSup</application>, &os; 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 &os; mirror sites.</para> <note> <para>The <application>csup</application> utility is a rewrite of the <application>CVSup</application> software in C. Its biggest advantage is, that it is faster and does not depend on the Modula-3 language, thus you do not need to install it as a requirement. Moreover you can use it out-of-the-box, since it is included in the base system. If you decided to use <application>csup</application>, just skip the steps on the installation of <application>CVSup</application> and substitute the references of <application>CVSup</application> with <application>csup</application> while following the remainder of this article.</para> </note> </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 &os; <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>&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 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">&os;-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 &os; 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_8</literal> will become <literal>tag=RELENG_8</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 &os;-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 &os; 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 &os; 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. In order to download a partial tree, use the <filename>refuse</filename> file.</para> <para>The <filename>refuse</filename> file 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:</para> <programlisting>bin/ usr.bin/</programlisting> <para>Users who are on slow links or pay by the minute for their Internet connection will be able to save 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 collection is <literal>src-all</literal>. </para> <variablelist> <varlistentry> <term><literal>cvs-all release=cvs</literal></term> <listitem> <para>The main &os; 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 &os;.</para> </listitem> </varlistentry> <varlistentry> <term> <literal>projects-all release=cvs</literal> </term> <listitem> <para>Sources for the &os; projects repository.</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-all release=cvs</literal></term> <listitem> <para>The main &os; 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-cddl release=cvs</literal></term> <listitem> <para>Utilities and libraries covered by the CDDL license (<filename>/usr/src/cddl</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-contrib release=cvs</literal></term> <listitem> <para>Utilities and libraries from outside the &os; 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 &os; 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 &os;.</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 &os; release (<filename>/usr/src/release</filename>).</para> </listitem> </varlistentry> <varlistentry> <term><literal>src-rescue release=cvs</literal></term> <listitem> <para>Statically linked programs for emergency recovery; see &man.rescue.8; (<filename>/usr/src/rescue</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 &os; (<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> </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>&os; mailing list archive.</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.cvsup.org">The CVSup Home Page</ulink>.</para> <para>Most &os;-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>For questions or bug reports about <application>CVSup</application> take a look at the <ulink url="http://www.cvsup.org/faq.html#bugreports"> CVSup FAQ</ulink>.</para> </sect2> <sect2 id="cvsup-mirrors"> <title>CVSup Sites</title> <para><link linkend="cvsup">CVSup</link> servers for &os; are running at the following sites:</para> &chap.mirrors.cvsup.index.inc; &chap.mirrors.lastmod.inc; &chap.mirrors.cvsup.inc; </sect2> </sect1> <sect1 id="cvs-tags"> <title>CVS Tags</title> <warning> <para>CVS has been deprecated by the project, and its use is not recommended. <application>Subversion</application> should be used instead.</para> </warning> <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 &os;-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_9</term> <listitem> <para>The line of development for &os;-9.X, also known as &os; 9-STABLE</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_9_1</term> <listitem> <para>The release branch for &os;-9.1, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_9_0</term> <listitem> <para>The release branch for &os;-9.0, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8</term> <listitem> <para>The line of development for &os;-8.X, also known as &os; 8-STABLE</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_3</term> <listitem> <para>The release branch for &os;-8.3, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_2</term> <listitem> <para>The release branch for &os;-8.2, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_1</term> <listitem> <para>The release branch for &os;-8.1, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_0</term> <listitem> <para>The release branch for &os;-8.0, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7</term> <listitem> <para>The line of development for &os;-7.X, also known as &os; 7-STABLE</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_4</term> <listitem> <para>The release branch for &os;-7.4, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_3</term> <listitem> <para>The release branch for &os;-7.3, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_2</term> <listitem> <para>The release branch for &os;-7.2, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_1</term> <listitem> <para>The release branch for &os;-7.1, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_0</term> <listitem> <para>The release branch for &os;-7.0, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6</term> <listitem> <para>The line of development for &os;-6.X, also known as &os; 6-STABLE</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_4</term> <listitem> <para>The release branch for &os;-6.4, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_3</term> <listitem> <para>The release branch for &os;-6.3, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_2</term> <listitem> <para>The release branch for &os;-6.2, used only for security advisories and other critical fixes.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_1</term> <listitem> <para>The release branch for &os;-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 &os;-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 &os;-5.X, also known as &os; 5-STABLE.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_5</term> <listitem> <para>The release branch for &os;-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 &os;-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 &os;-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 &os;-5.2 and &os;-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 &os;-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 &os;-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 &os;-4.X, also known as &os; 4-STABLE.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_11</term> <listitem> <para>The release branch for &os;-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 &os;-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 &os;-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 &os;-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 &os;-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 &os;-4.6 and &os;-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 &os;-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 &os;-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 &os;-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 &os;-3.X, also known as 3.X-STABLE.</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2</term> <listitem> <para>The line of development for &os;-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_9_1_0_RELEASE</term> <listitem> <para>&os; 9.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_9_0_0_RELEASE</term> <listitem> <para>&os; 9.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_3_0_RELEASE</term> <listitem> <para>&os; 8.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_2_0_RELEASE</term> <listitem> <para>&os; 8.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_1_0_RELEASE</term> <listitem> <para>&os; 8.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_8_0_0_RELEASE</term> <listitem> <para>&os; 8.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_4_0_RELEASE</term> <listitem> <para>&os; 7.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_3_0_RELEASE</term> <listitem> <para>&os; 7.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_2_0_RELEASE</term> <listitem> <para>&os; 7.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_1_0_RELEASE</term> <listitem> <para>&os; 7.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_7_0_0_RELEASE</term> <listitem> <para>&os; 7.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_4_0_RELEASE</term> <listitem> <para>&os; 6.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_3_0_RELEASE</term> <listitem> <para>&os; 6.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_2_0_RELEASE</term> <listitem> <para>&os; 6.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_1_0_RELEASE</term> <listitem> <para>&os; 6.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_6_0_0_RELEASE</term> <listitem> <para>&os; 6.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_5_0_RELEASE</term> <listitem> <para>&os; 5.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_4_0_RELEASE</term> <listitem> <para>&os; 5.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_11_0_RELEASE</term> <listitem> <para>&os; 4.11</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_3_0_RELEASE</term> <listitem> <para>&os; 5.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_10_0_RELEASE</term> <listitem> <para>&os; 4.10</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_2_1_RELEASE</term> <listitem> <para>&os; 5.2.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_2_0_RELEASE</term> <listitem> <para>&os; 5.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_9_0_RELEASE</term> <listitem> <para>&os; 4.9</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_1_0_RELEASE</term> <listitem> <para>&os; 5.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_8_0_RELEASE</term> <listitem> <para>&os; 4.8</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_5_0_0_RELEASE</term> <listitem> <para>&os; 5.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_7_0_RELEASE</term> <listitem> <para>&os; 4.7</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_6_2_RELEASE</term> <listitem> <para>&os; 4.6.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_6_1_RELEASE</term> <listitem> <para>&os; 4.6.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_6_0_RELEASE</term> <listitem> <para>&os; 4.6</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_5_0_RELEASE</term> <listitem> <para>&os; 4.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_4_0_RELEASE</term> <listitem> <para>&os; 4.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_3_0_RELEASE</term> <listitem> <para>&os; 4.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_2_0_RELEASE</term> <listitem> <para>&os; 4.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_1_1_RELEASE</term> <listitem> <para>&os; 4.1.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_1_0_RELEASE</term> <listitem> <para>&os; 4.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_4_0_0_RELEASE</term> <listitem> <para>&os; 4.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_5_0_RELEASE</term> <listitem> <para>&os;-3.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_4_0_RELEASE</term> <listitem> <para>&os;-3.4</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_3_0_RELEASE</term> <listitem> <para>&os;-3.3</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_2_0_RELEASE</term> <listitem> <para>&os;-3.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_1_0_RELEASE</term> <listitem> <para>&os;-3.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_3_0_0_RELEASE</term> <listitem> <para>&os;-3.0</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_8_RELEASE</term> <listitem> <para>&os;-2.2.8</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_7_RELEASE</term> <listitem> <para>&os;-2.2.7</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_6_RELEASE</term> <listitem> <para>&os;-2.2.6</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_5_RELEASE</term> <listitem> <para>&os;-2.2.5</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_2_RELEASE</term> <listitem> <para>&os;-2.2.2</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_1_RELEASE</term> <listitem> <para>&os;-2.2.1</para> </listitem> </varlistentry> <varlistentry> <term>RELENG_2_2_0_RELEASE</term> <listitem> <para>&os;-2.2.0</para> </listitem> </varlistentry> </variablelist> </sect2> </sect1> <sect1 id="mirrors-rsync"> <title><application>rsync</application> Sites</title> <para>The following sites make &os; 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 &os; FTP server, or the CVS repository. The <application>rsync</application> suite is available for many operating systems, on &os;, 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 &os; FTP server.</para> </listitem> <listitem> <para>&os;: A full mirror of the &os; FTP server.</para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>Netherlands</term> <listitem> <para>rsync://ftp.nl.FreeBSD.org/</para> <para>Available collections:</para> <itemizedlist> <listitem> <para>&os;: A full mirror of the &os; FTP server.</para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>Russia</term> <listitem> <para>rsync://ftp.mtu.ru/</para> <para>Available collections:</para> <itemizedlist> <listitem> <para>&os;: A full mirror of the &os; FTP server.</para> </listitem> <listitem> <para>&os;-gnats: The GNATS bug-tracking database.</para> </listitem> <listitem> <para>&os;-Archive: The mirror of &os; Archive FTP server.</para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>Sweden</term> <listitem> <para>rsync://ftp4.se.freebsd.org/</para> <para>Available collections:</para> <itemizedlist> <listitem> <para>&os;: A full mirror of the &os; FTP server.</para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>Taiwan</term> <listitem> <para>rsync://ftp.tw.FreeBSD.org/</para> <para>rsync://ftp2.tw.FreeBSD.org/</para> <para>rsync://ftp6.tw.FreeBSD.org/</para> <para>Available collections:</para> <itemizedlist> <listitem> <para>&os;: A full mirror of the &os; FTP server.</para> </listitem> </itemizedlist> </listitem> </varlistentry> <varlistentry> <term>United Kingdom</term> <listitem> <para>rsync://rsync.mirrorservice.org/</para> <para>Available collections:</para> <itemizedlist> <listitem> <para>ftp.freebsd.org: A full mirror of the &os; 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 &os; primary mirror sites.</para> <para>Available collections:</para> <itemizedlist> <listitem> <para>&os;: The master archive of the &os; FTP server.</para> </listitem> <listitem> <para>acl: The &os; master ACL list.</para> </listitem> </itemizedlist> <para>rsync://ftp13.FreeBSD.org/</para> <para>Available collections:</para> <itemizedlist> <listitem> <para>&os;: A full mirror of the &os; FTP server.</para> </listitem> </itemizedlist> </listitem> </varlistentry> </variablelist> </sect1> </appendix>