doc/en_US.ISO8859-1/books/handbook/mirrors/chapter.xml
Gabor Kovesdan fc03eb5c00 - MFH
2013-07-03 10:43:17 +00:00

2666 lines
78 KiB
XML

<?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&uuml;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>