Currently we have articles.ent and books.ent, and for example, articles.ent can be used by putting the following lines in the doctype declaration: <!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN"> %articles.ent; This pulls all of the necessary entities via share/sgml/articles.ent. The translation teams can customize these entities by redefining the articles.ent file in <langcode>/share/sgml. See ja_JP.eucJP/share/sgml for example.
1122 lines
49 KiB
Text
1122 lines
49 KiB
Text
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
|
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
|
|
%articles.ent;
|
|
<!ENTITY % not.published "IGNORE">
|
|
]>
|
|
|
|
<article>
|
|
<articleinfo>
|
|
<title>Mirroring FreeBSD</title>
|
|
<pubdate>$FreeBSD$</pubdate>
|
|
<authorgroup>
|
|
<author>
|
|
<firstname>Jun</firstname>
|
|
<surname>Kuriyama</surname>
|
|
<affiliation>
|
|
<address><email>kuriyama@FreeBSD.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
<author>
|
|
<firstname>Valentino</firstname>
|
|
<surname>Vaschetto</surname>
|
|
<affiliation>
|
|
<address><email>logo@FreeBSD.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
<author>
|
|
<firstname>Daniel</firstname>
|
|
<surname>Lang</surname>
|
|
<affiliation>
|
|
<address><email>dl@leo.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
<author>
|
|
<firstname>Ken</firstname>
|
|
<surname>Smith</surname>
|
|
<affiliation>
|
|
<address><email>kensmith@FreeBSD.org</email></address>
|
|
</affiliation>
|
|
</author>
|
|
</authorgroup>
|
|
|
|
<legalnotice id="trademarks" role="trademarks">
|
|
&tm-attrib.freebsd;
|
|
&tm-attrib.cvsup;
|
|
&tm-attrib.general;
|
|
</legalnotice>
|
|
|
|
<abstract>
|
|
<para>An in-progress article on how to mirror FreeBSD, aimed at
|
|
hub administrators.</para>
|
|
</abstract>
|
|
</articleinfo>
|
|
|
|
<sect1 id="mirror-contact">
|
|
<title>Contact Information</title>
|
|
|
|
<para>The Mirror System Coordinators can be reached through email
|
|
at <email>mirror-admin@FreeBSD.org</email>. There is also
|
|
a &a.hubs;.</para>
|
|
</sect1>
|
|
|
|
<sect1 id="mirror-requirements">
|
|
<title>Requirements for FreeBSD mirrors</title>
|
|
<sect2 id="mirror-diskspace">
|
|
<title>Disk Space</title>
|
|
<para>
|
|
Disk space is one of the most important requirements.
|
|
Depending on the set of releases, architectures,
|
|
and degree of completeness you want to mirror, a huge
|
|
amount of disk space may be consumed. Also keep in mind
|
|
that <emphasis>official</emphasis> mirrors are probably required to be
|
|
complete. The CVS repository and the web pages should
|
|
always be mirrored completely. Also note that the
|
|
numbers stated here are reflecting the current
|
|
state (at &rel2.current;-RELEASE/&rel.current;-RELEASE). Further development and
|
|
releases will only increase the required amount.
|
|
Also make sure to keep some (ca. 10-20%) extra space
|
|
around just to be sure.
|
|
Here are some approximate figures:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem><para>Full FTP Distribution: 126 GB</para></listitem>
|
|
<listitem><para>CVS repository: 2.7 GB</para></listitem>
|
|
<listitem><para>CTM deltas: 1.8 GB</para></listitem>
|
|
<listitem><para>Web pages: 300 MB</para></listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
<sect2 id="mirror-bandwidth">
|
|
<title>Network Connection/Bandwidth</title>
|
|
<para>
|
|
Of course, you need to be connected to the Internet.
|
|
The required bandwidth depends on your intended use
|
|
of the mirror. If you just want to mirror some
|
|
parts of FreeBSD for local use at your site/intranet,
|
|
the demand may be much smaller than if you want to
|
|
make the files publicly available. If you intend
|
|
to become an official mirror, the bandwidth required will be even higher. We can only give rough
|
|
estimates here:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem><para>Local site, no public access: basically no minimum,
|
|
but < 2 Mbps could make syncing too slow.</para></listitem>
|
|
<listitem><para>Unofficial public site: 34 Mbps is probably a good start.</para></listitem>
|
|
<listitem><para>Official site: > 100 Mbps is recommended, and your host
|
|
should be connected as close as possible to your border router.</para></listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
<sect2 id="mirror-system">
|
|
<title>System Requirements, CPU, RAM</title>
|
|
<para>
|
|
One thing this depends on the expected number of clients,
|
|
which is determined by the server's policy. It is
|
|
also affected by the types of services you want to offer.
|
|
Plain FTP or HTTP services may not require a huge
|
|
amount of resources. Watch out if you provide
|
|
CVSup, rsync or even AnonCVS. This can have a huge
|
|
impact on CPU and memory requirements. Especially
|
|
rsync is considered a memory hog, and CVSup does
|
|
indeed consume some CPU. For AnonCVS it might
|
|
be a nice idea to set up a memory resident file system (MFS) of at least
|
|
300 MB, so you need to take this into account
|
|
for your memory requirements. The following
|
|
are just examples to give you a very rough hint.
|
|
</para>
|
|
<para>
|
|
For a moderately visited site that offers
|
|
<application>rsync</application>, you might
|
|
consider a current CPU with around 800MHz - 1 GHz,
|
|
and at least 512MB RAM. This is probably the
|
|
minimum you want for an <emphasis>official</emphasis>
|
|
site.
|
|
</para>
|
|
<para>
|
|
For a frequently used site you definitely need
|
|
more RAM (consider 2GB as a good start)
|
|
and possibly more CPU, which could also mean
|
|
that you need to go for a SMP system.
|
|
</para>
|
|
<para>
|
|
You also want to consider a fast disk subsystem.
|
|
Operations on the CVS repository require a fast
|
|
disk subsystem (RAID is highly advised). A SCSI
|
|
controller that has a cache of its own can also
|
|
speed up things since most of these services incur a
|
|
large number of small modifications to the disk.
|
|
</para>
|
|
</sect2>
|
|
<sect2 id="mirror-services">
|
|
<title>Services to offer</title>
|
|
<para>
|
|
Every mirror site is required to have a set of core services
|
|
available. In addition to these required services, there are
|
|
a number of optional services that
|
|
server administrators may choose to offer. This section explains
|
|
which services you can provide and how to go about implementing them.
|
|
</para>
|
|
<sect3 id="mirror-serv-ftp">
|
|
<title>FTP (required for FTP fileset)</title>
|
|
<para>
|
|
This is one of the most basic services, and
|
|
it is required for each mirror offering public
|
|
FTP distributions. FTP access must be
|
|
anonymous, and no upload/download ratios
|
|
are allowed (a ridiculous thing anyway).
|
|
Upload capability is not required (and <emphasis>must</emphasis>
|
|
never be allowed for the FreeBSD file space).
|
|
Also the FreeBSD archive should be available under
|
|
the path <filename>/pub/FreeBSD</filename>.
|
|
</para>
|
|
<para>
|
|
There is a lot of software available which
|
|
can be set up to allow anonymous FTP
|
|
(in alphabetical order).
|
|
<itemizedlist>
|
|
<listitem><para><command>/usr/libexec/ftpd</command>: FreeBSD's own ftpd
|
|
can be used. Be sure to read &man.ftpd.8;.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><filename role="package">ftp/ncftpd</filename>: A commercial package,
|
|
free for educational use.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><filename role="package">ftp/oftpd</filename>: An ftpd designed with
|
|
security as a main focus.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><filename role="package">ftp/proftpd</filename>: A modular and very flexible ftpd.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><filename role="package">ftp/pure-ftpd</filename>: Another ftpd developed with
|
|
security in mind.</para>
|
|
</listitem>
|
|
<listitem><para><filename role="package">ftp/twoftpd</filename>: As above.</para></listitem>
|
|
<listitem><para><filename role="package">ftp/vsftpd</filename>: The <quote>very secure</quote> ftpd.</para></listitem>
|
|
<listitem>
|
|
<para><filename role="package">ftp/wu-ftpd</filename>: The ftpd from Washington
|
|
University. It has become infamous, because of the huge
|
|
amount of security issues that have been found in it.
|
|
If you do choose to use this software be sure to
|
|
keep it up to date.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
FreeBSD's <application>ftpd</application>, <application>proftpd</application>,
|
|
<application>wu-ftpd</application> and maybe <application>ncftpd</application>
|
|
are among the most commonly ones.
|
|
The others do not have a large userbase among mirror sites. One
|
|
thing to consider is that you may need flexibility in limiting
|
|
how many simultaneous connections are allowed, thus limiting how
|
|
much network bandwidth and system resources are consumed.
|
|
</para>
|
|
</sect3>
|
|
<sect3 id="mirror-serv-rsync">
|
|
<title>RSYNC (optional for FTP fileset)</title>
|
|
<para>
|
|
<application>rsync</application> is often offered for access to the
|
|
contents of the FTP area of FreeBSD, so other mirror sites can use your system as their source. The
|
|
protocol is different from FTP in many ways.
|
|
It is much more
|
|
bandwidth friendly, as only differences between files
|
|
are transferred instead of whole files when they change.
|
|
<application>rsync</application> does require a significant amount of memory for
|
|
each instance. The size depends on the size of
|
|
the synced module in terms of the number of directories and
|
|
files. <application>rsync</application> can use <command>rsh</command> and
|
|
<command>ssh</command> (now default) as a transport,
|
|
or use its own protocol for stand-alone access
|
|
(this is the preferred method for public rsync servers).
|
|
Authentication, connection limits, and other restrictions
|
|
may be applied. There is just one software package
|
|
available:
|
|
<itemizedlist>
|
|
<listitem><para><filename role="package">net/rsync</filename></para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</sect3>
|
|
<sect3 id="mirror-serv-http">
|
|
<title>HTTP (required for web pages, optional for FTP fileset)</title>
|
|
<para>
|
|
If you want to offer the FreeBSD web pages, you need
|
|
to install a web server a.k.a. <application>httpd</application>.
|
|
You may optionally offer the FTP fileset via HTTP.
|
|
The choice of web server software is left up to the mirror administrator.
|
|
Some of the most popular choices are:
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><filename role="package">www/apache13</filename>:
|
|
Apache is the most widely deployed web server on the Internet. It
|
|
is used extensively by the FreeBSD Project. You may also
|
|
wish to use the next generation of the Apache web server,
|
|
available in the ports collection as <filename
|
|
role="package">www/apache2</filename>.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename role="package">www/thttpd</filename>:
|
|
If you are going to be serving a large amount of static content
|
|
you may find that using an application such as thttpd is more
|
|
efficient than Apache. It is optimized for excellent performance
|
|
on FreeBSD.</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para><filename role="package">www/boa</filename>:
|
|
Boa is another alternative to thttpd and Apache. It should
|
|
provide considerably better performance than Apache for purely
|
|
static content. It does not, at the time of writing, contain the
|
|
same set of optimizations for FreeBSD that are found in
|
|
thttpd.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</sect3>
|
|
<sect3 id="mirror-serv-cvsup">
|
|
<title>CVSup (desired for CVS repository)</title>
|
|
<para>
|
|
<application>CVSup</application> is a very efficient way of distributing files.
|
|
It works similar to <application>rsync</application>, but was specially designed for
|
|
use with CVS repositories. If you want to offer the
|
|
FreeBSD CVS repository, you really want to consider
|
|
offering it via <application>CVSup</application>. It is possible to offer
|
|
the CVS repository via <application>AnonCVS</application>, FTP,
|
|
<application>Rsync</application> or HTTP, but
|
|
people would benefit much more from <application>CVSup</application> access.
|
|
<application>CVSup</application> was developed by &a.jdp;.
|
|
It is a bit tricky to install on non-FreeBSD platforms,
|
|
since it is written in Modula-3 and therefore requires
|
|
a Modula-3 environment. John Polstra has built a
|
|
stripped down version of M3 that is sufficient to
|
|
run <application>CVSup</application>, and can be installed much easier.
|
|
See <ulink url="http://www.polstra.com/projects/freeware/ezm3/">Ezm3</ulink>
|
|
for details. Related ports are:
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><filename role="package">net/cvsup</filename>: The native CVSup port (client and server)
|
|
which requires <filename role="package">lang/ezm3</filename> now.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><filename role="package">net/cvsup-mirror</filename>: The CVSup mirror kit, which requires
|
|
<filename role="package">net/cvsup</filename>, and configures it mirror-ready. Some
|
|
site administrators may want a different setup though.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
There are a few more like
|
|
<filename role="package">net/cvsup-without-gui</filename> you might want to have
|
|
a look at. If you prefer a static binary package, take a look
|
|
<ulink url="http://people.FreeBSD.org/~jdp/s1g/">here</ulink>.
|
|
This page still refers to the S1G bug that was present
|
|
in <application>CVSup</application>. Maybe
|
|
John will set up a generic download-site to get
|
|
static binaries for various platforms.
|
|
</para>
|
|
<para>
|
|
It is possible to use <application>CVSup</application> to offer
|
|
any kind of fileset, not just CVS repositories,
|
|
but configuration can be complex.
|
|
<application>CVSup</application> is known to eat some CPU on both the server and the
|
|
client, since it needs to compare lots of files.
|
|
</para>
|
|
</sect3>
|
|
<sect3 id="mirror-anoncvs">
|
|
<title>AnonCVS (optional for CVS repository)</title>
|
|
<para>
|
|
If you have the CVS repository, you may want to offer
|
|
anonymous CVS access. A short warning first:
|
|
There is not much demand for it,
|
|
it requires some experience, and you need to know
|
|
what you are doing.
|
|
</para>
|
|
<para>
|
|
Generally there are two ways
|
|
to access a CVS repository remotely: via
|
|
<emphasis>pserver</emphasis> or via <command>ssh</command>
|
|
(we don't consider <command>rsh</command>).
|
|
For anonymous access, <emphasis>pserver</emphasis> is
|
|
very well suited, but some still offer <command>ssh</command>
|
|
access as well. There is a custom crafted
|
|
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/development/FreeBSD-CVS/anoncvs.shar">wrapper</ulink>
|
|
in the CVS repository, to be used as a login-shell for the
|
|
anonymous ssh account. It does a chroot, and therefore
|
|
requires the CVS repository to be available under the
|
|
anonymous user's home-directory. This may not be possible
|
|
for all sites. If you just offer <emphasis>pserver</emphasis>
|
|
this restriction does not apply, but you may run with
|
|
more security risks. You don't need to install any special
|
|
software, since &man.cvs.1; comes with
|
|
FreeBSD. You need to enable access via <command>inetd</command>,
|
|
so add an entry into your <filename>/etc/inetd.conf</filename>
|
|
like this:
|
|
<programlisting>
|
|
cvspserver stream tcp nowait root /usr/bin/cvs cvs -f -l -R -T /anoncvstmp --allow-root=/home/ncvs pserver
|
|
</programlisting>
|
|
See the manpage for details of the options. Also see the CVS <emphasis>info</emphasis>
|
|
page about additional ways to make sure access is read-only.
|
|
It is advised that you create an unprivileged account,
|
|
preferably called <username>anoncvs</username>.
|
|
Also you need to create a file <filename>passwd</filename>
|
|
in your <filename>/home/ncvs/CVSROOT</filename> and assign a
|
|
CVS password (empty or <literal>anoncvs</literal>) to that user.
|
|
The directory <filename>/anoncvstmp</filename> is a special
|
|
purpose memory based file system. It is not required but
|
|
advised since &man.cvs.1; creates a shadow directory
|
|
structure in your <filename>/tmp</filename> which is
|
|
not used after the operation but slows things
|
|
dramatically if real disk operations are required.
|
|
Here is an excerpt from <filename>/etc/fstab</filename>,
|
|
how to set up such a MFS:
|
|
<programlisting>
|
|
/dev/da0s1b /anoncvstmp mfs rw,-s=786432,-b=4096,-f=512,-i=560,-c=3,-m=0,nosuid,nodev 0 0
|
|
</programlisting>
|
|
This is (of course) tuned a lot, and was suggested by &a.jdp;.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="mirror-howto">
|
|
<title>How to Mirror FreeBSD</title>
|
|
<para>
|
|
Ok, now you know the requirements and how to offer
|
|
the services, but not how to get it. :-)
|
|
This section explains how to actually mirror
|
|
the various parts of FreeBSD, what tools to use,
|
|
and where to mirror from.
|
|
</para>
|
|
<sect2 id="mirror-ftp">
|
|
<title>FTP</title>
|
|
<para>
|
|
The FTP area is the largest amount of data that
|
|
needs to be mirrored. It includes the <emphasis>distribution
|
|
sets</emphasis> required for network installation, the
|
|
<emphasis>branches</emphasis> which are actually snapshots
|
|
of checked-out source trees, the <emphasis>ISO Images</emphasis>
|
|
to write CD-ROMs with the installation distribution,
|
|
a live file system, lots of packages, the ports tree,
|
|
distfiles, and a huge amount of packages. All of course
|
|
for various FreeBSD versions,
|
|
and various architectures.
|
|
</para>
|
|
<sect3 id="mirror-ftp-ftp">
|
|
<title>With FTP mirror</title>
|
|
<para>
|
|
You can use a <application>FTP mirror</application>
|
|
program to get the files. There are a lot around and
|
|
widely used, like:
|
|
<itemizedlist>
|
|
<listitem><para><filename role="package">ftp/mirror</filename></para></listitem>
|
|
<listitem><para><filename role="package">ftp/ftpmirror</filename></para></listitem>
|
|
<listitem><para><filename role="package">ftp/emirror</filename></para></listitem>
|
|
<listitem><para><filename role="package">ftp/spegla</filename></para></listitem>
|
|
<listitem><para><filename role="package">ftp/omi</filename></para></listitem>
|
|
<listitem><para>some even use <filename role="package">ftp/wget</filename></para></listitem>
|
|
</itemizedlist>
|
|
|
|
<filename role="package">ftp/mirror</filename> was very popular, but seemed
|
|
to have some drawbacks, as it is written in &man.perl.1;,
|
|
and had real problems with mirroring large
|
|
directories like a FreeBSD site. There are rumors that
|
|
the current version has fixed this by allowing
|
|
a different algorithm for comparing
|
|
the directory structure to be specified.
|
|
</para>
|
|
<para>
|
|
In general FTP is not really good for mirroring. It transfers
|
|
the whole file if it has changed, and does
|
|
not create a single data stream which would benefit from
|
|
a large TCP congestion window.
|
|
</para>
|
|
</sect3>
|
|
<sect3 id="mirror-ftp-rsync">
|
|
<title>With RSYNC</title>
|
|
<para>
|
|
A better way to mirror the FTP area is <application>rsync</application>.
|
|
You can install the port <filename role="package">net/rsync</filename> and then use
|
|
rsync to sync with your upstream host.
|
|
<application>rsync</application> is already mentioned
|
|
in <xref linkend="mirror-serv-rsync">.
|
|
Since <application>rsync</application> access is not
|
|
required, your preferred upstream site may not allow it.
|
|
You may need to hunt around a little bit to find a site
|
|
that allows <application>rsync</application> access.
|
|
<note>
|
|
<para>
|
|
Since the number of <application>rsync</application>
|
|
clients will have a significant impact on the server
|
|
machine, most admins impose limitations on their
|
|
server. For a mirror, you should ask the site maintainer
|
|
you are syncing from about their policy, and maybe
|
|
an exception for your host (since you are a mirror).
|
|
</para>
|
|
</note>
|
|
A command line to mirror FreeBSD could look like that:
|
|
<screen>&prompt.user; <userinput>rsync -vaz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/</userinput>
|
|
</screen>
|
|
Consult the documentation for <application>rsync</application>,
|
|
which is also available at
|
|
<ulink url="http://rsync.samba.org/">http://rsync.samba.org/</ulink>
|
|
about the various options to be used with rsync.
|
|
If you sync the whole module (unlike subdirectories),
|
|
be aware that the module-directory (here "FreeBSD")
|
|
will not be created, so you cannot omit the target directory.
|
|
Also you might
|
|
want to set up a script framework that calls such a command
|
|
via &man.cron.8;.
|
|
</para>
|
|
</sect3>
|
|
<sect3 id="mirror-ftp-cvsup">
|
|
<title>With CVSup</title>
|
|
<para>
|
|
A few sites, including the one-and-only <hostid role="fqdn">ftp-master.FreeBSD.org</hostid>
|
|
even offer <application>CVSup</application> to mirror the contents of
|
|
the FTP space. You need to install a <application>cvsup</application>
|
|
client, preferably from the port <filename role="package">net/cvsup</filename>.
|
|
(Also reread <xref linkend="mirror-serv-cvsup">.)
|
|
A sample <filename>supfile</filename> suitable for <hostid role="fqdn">ftp-master.FreeBSD.org</hostid>
|
|
looks like this:
|
|
<programlisting>
|
|
#
|
|
# FreeBSD archive supfile from master server
|
|
#
|
|
*default host=ftp-master.FreeBSD.org
|
|
*default base=/usr
|
|
*default prefix=/pub
|
|
#*default release=all
|
|
*default delete use-rel-suffix
|
|
*default umask=002
|
|
|
|
# If your network link is a T1 or faster, comment out the following line.
|
|
#*default compress
|
|
|
|
FreeBSD-archive release=all preserve
|
|
</programlisting>
|
|
|
|
It seems <application>CVSup</application> would be the best
|
|
way to mirror the archive in terms of efficiency, but
|
|
it is only available from few sites.
|
|
<note id="mirror-cvsup-s-option">
|
|
<para>
|
|
Please have look at the <application>CVSup</application> documentation
|
|
like &man.cvsup.1; and consider using the <option>-s</option>
|
|
option, as it can reduce the amount of work to be done
|
|
a lot.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
<sect2 id="mirror-cvs">
|
|
<title>Mirroring the CVS repository</title>
|
|
<para>
|
|
Again you have various possibilities, but the most
|
|
recommended one is to use <link linkend="mirror-cvs-cvsup">CVSup</link>.
|
|
</para>
|
|
<sect3 id="mirror-cvs-cvsup">
|
|
<title>Using CVSup</title>
|
|
<para>
|
|
<application>CVSup</application> was already described to some
|
|
detail in <xref linkend="mirror-serv-cvsup"> and <xref linkend="mirror-ftp-cvsup">.
|
|
</para>
|
|
<para>
|
|
Here we just describe an example to set up the <filename>supfile</filename>:
|
|
<programlisting>
|
|
#
|
|
# FreeBSD CVS supfile from master server
|
|
#
|
|
*default host=cvsup-master.FreeBSD.org
|
|
*default base=/usr
|
|
*default prefix=/pub/FreeBSD/development/FreeBSD-CVS
|
|
*default release=cvs
|
|
*default delete use-rel-suffix
|
|
*default umask=002
|
|
|
|
# If your network link is a T1 or faster, comment out the following line.
|
|
#*default compress
|
|
|
|
cvs-all
|
|
</programlisting>
|
|
|
|
You should also have a look at <filename>/usr/share/examples/cvsup</filename>
|
|
</para>
|
|
<note>
|
|
<para>
|
|
Please do not forget to consider the hint
|
|
mentioned in <link linkend="mirror-cvsup-s-option">this note</link>
|
|
above.
|
|
</para>
|
|
</note>
|
|
</sect3>
|
|
<sect3 id="mirror-cvs-other">
|
|
<title>Using other methods</title>
|
|
<para>
|
|
Using other methods than <application>CVSup</application> is
|
|
generally not recommended. We describe them in short here
|
|
anyway. Since most sites offer the CVS repository as
|
|
part of the FTP fileset under the path
|
|
<filename>/pub/FreeBSD/development/FreeBSD-CVS</filename>,
|
|
the following methods could be used.
|
|
<itemizedlist>
|
|
<listitem><para><application>FTP</application></para></listitem>
|
|
<listitem><para><application>RSYNC</application></para></listitem>
|
|
<listitem><para>maybe even <application>HTTP</application></para></listitem>
|
|
</itemizedlist>
|
|
|
|
If you find a site that supports it, you could use
|
|
<filename role="package">net/sup</filename>. But it is inferior to <application>CVSup</application>
|
|
and its deficiencies caused John Polstra to develop
|
|
<application>CVSup</application> in the first place, so
|
|
it is clearly not recommended.
|
|
|
|
<important>
|
|
<para>
|
|
You can <emphasis>NOT</emphasis> use AnonCVS to
|
|
mirror the CVS repository since CVS does not allow
|
|
you to access the repository itself, but only checked
|
|
out versions of the modules.
|
|
</para>
|
|
</important>
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
<sect2 id="mirror-www">
|
|
<title>Mirroring the WWW pages</title>
|
|
<para>
|
|
The best way is to check out the <emphasis>www</emphasis>
|
|
distribution from CVS. If you have a local mirror of the
|
|
CVS repository, it is probably as easy as:
|
|
<screen>&prompt.user; <userinput>cvs -d /home/ncvs co www</userinput></screen>
|
|
and a <emphasis>cronjob</emphasis>, that calls <command>cvs up -d -P</command>
|
|
on a regular basis, maybe just after your repository was updated.
|
|
Of course, the files need to remain in a directory available
|
|
for public WWW access. The installation and configuration of a
|
|
web server is not discussed here.
|
|
</para>
|
|
|
|
<note><para>For the website to be visible, users must execute the &man.make.1;
|
|
command in the main <filename>www</filename> directory. This command
|
|
will create the standard <filename>*.html</filename> files for web
|
|
viewing. For this to work however, the
|
|
<filename role="package">textproc/docproj</filename> port must be
|
|
installed.</para></note>
|
|
<para>
|
|
If you don't have a local repository, you can use
|
|
<application>CVSup</application> to maintain an <quote>up to date copy</quote>
|
|
of the www pages. A sample supfile can be found in
|
|
<filename>/usr/share/examples/cvsup/www-supfile</filename> and
|
|
could look like this:
|
|
<programlisting>
|
|
#
|
|
# WWW module supfile for FreeBSD
|
|
#
|
|
*default host=cvsup3.de.FreeBSD.org
|
|
*default base=/usr
|
|
*default prefix=/usr/local
|
|
*default release=cvs tag=.
|
|
*default delete use-rel-suffix
|
|
|
|
# If your network link is a T1 or faster, comment out the following line.
|
|
*default compress
|
|
|
|
# This collection retrieves the www/ tree of the FreeBSD repository
|
|
www
|
|
</programlisting>
|
|
</para>
|
|
<para>
|
|
Using <filename role="package">ftp/wget</filename> or other web-mirror tools is
|
|
probably not recommended.
|
|
</para>
|
|
<sect3 id="mirror-www-doc">
|
|
<title>Mirroring the FreeBSD documentation</title>
|
|
<para>
|
|
Since the documentation is referenced a lot from the
|
|
web pages, it is recommended that you mirror the
|
|
FreeBSD documentation as well. However, this is not
|
|
as trivial as the www-pages alone.
|
|
</para>
|
|
<para>
|
|
First of all, you should get the doc sources,
|
|
again preferably via <application>CVSup</application>.
|
|
Here is a corresponding sample supfile:
|
|
<programlisting>
|
|
#
|
|
# FreeBSD documentation supfile
|
|
#
|
|
*default host=cvsup3.de.FreeBSD.org
|
|
*default base=/usr
|
|
*default prefix=/usr/share
|
|
*default release=cvs tag=.
|
|
*default delete use-rel-suffix
|
|
|
|
# If your network link is a T1 or faster, comment out the following line.
|
|
#*default compress
|
|
|
|
# This will retrieve the entire doc branch of the FreeBSD repository.
|
|
# This includes the handbook, FAQ, and translations thereof.
|
|
doc-all
|
|
</programlisting>
|
|
</para>
|
|
<para>
|
|
Then you need to install a couple of ports.
|
|
You are lucky, there is a meta-port:
|
|
<filename role="package">textproc/docproj</filename> to do the work
|
|
for you. You need to set up some
|
|
environment variables, like
|
|
<literal>SGML_CATALOG_FILES</literal>.
|
|
Also have a look at your <filename>/etc/make.conf</filename>
|
|
(copy <filename>/etc/defaults/make.conf</filename> if
|
|
you do not have one), and look at the
|
|
<literal>DOC_LANG</literal> variable.
|
|
Now you are probably ready to run <command>make</command>
|
|
in you doc directory (<filename>/usr/share/doc</filename>
|
|
by default) and build the documentation.
|
|
Again you need to make it accessible for your web server
|
|
and make sure the links point to the right location.
|
|
<important>
|
|
<para>
|
|
The building of the documentation, as well as lots
|
|
of side issues, is documented itself in:
|
|
<ulink url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/fdp-primer/">fdp-primer</ulink>.
|
|
Please read this piece of documentation, especially if you
|
|
have problems building the documentation.
|
|
</para>
|
|
</important>
|
|
<note>
|
|
<para>
|
|
XXX MAYBE THIS CAN BE LINKED FROM WITHIN - NOT USING AN ABSOLUTE URL XXX
|
|
</para>
|
|
</note>
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
<sect2 id="mirror-how-often">
|
|
<title>How often should I mirror?</title>
|
|
<para>
|
|
Every mirror should be updated on a regular
|
|
basis. You will certainly need some script
|
|
framework for it that will be called by
|
|
&man.cron.8;. Since nearly every admin
|
|
does this his own way, we cannot give
|
|
specific instructions. It could work
|
|
like this:
|
|
</para>
|
|
<procedure>
|
|
<step>
|
|
<para>
|
|
Put the command to run your mirroring application
|
|
in a script. Use of a plain <command>/bin/sh</command>
|
|
script is recommended.
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
Add some output redirections so diagnostic
|
|
messages are logged to a file.
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
Test if your script works. Check the logs.
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
Use &man.crontab.1; to add the script to the
|
|
appropriate user's &man.crontab.5;. This should be a
|
|
different user than what your FTP daemon runs as so that
|
|
if file permissions inside your FTP area are not
|
|
world-readable those files can not be accessed by anonymous
|
|
FTP. This is used to <quote>stage</quote> releases —
|
|
making sure all of the official mirror sites have all of the
|
|
necessary release files on release day.
|
|
</para>
|
|
</step>
|
|
</procedure>
|
|
<para>
|
|
Here are some recommended schedules:
|
|
<itemizedlist>
|
|
<listitem><para>FTP fileset: daily</para></listitem>
|
|
<listitem><para>CVS repository: daily to hourly</para></listitem>
|
|
<listitem><para>WWW pages: daily</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="mirror-where">
|
|
<title>Where to mirror from</title>
|
|
<para>
|
|
This is an important issue. So this section will
|
|
spend some effort to explain the backgrounds. We will say this
|
|
several times: under no circumstances should you mirror from
|
|
<hostid role="fqdn">ftp.FreeBSD.org</hostid>.
|
|
</para>
|
|
<sect2 id="mirror-where-organization">
|
|
<title>A few words about the organization</title>
|
|
<para>
|
|
Mirrors are organized by country. All
|
|
official mirrors have a DNS entry of the form
|
|
<hostid role="fqdn">ftpN.CC.FreeBSD.org</hostid>.
|
|
<emphasis>CC</emphasis> (i.e. country code) is the
|
|
<emphasis>top level domain</emphasis> (TLD)
|
|
of the country where this mirror is located.
|
|
<emphasis>N</emphasis> is a number,
|
|
telling that the host would be the <emphasis>Nth</emphasis>
|
|
mirror in that country.
|
|
(Same applies to <hostid>cvsupN.CC.FreeBSD.org</hostid>,
|
|
<hostid>wwwN.CC.FreeBSD.org</hostid>, etc.)
|
|
There are mirrors with no <emphasis>CC</emphasis> part.
|
|
These are the mirror sites that are very well connected and
|
|
allow a large number of concurrent users.
|
|
<hostid role="fqdn">ftp.FreeBSD.org</hostid> is actually two machines, one currently
|
|
located in Denmark and the other in the United States.
|
|
It is <emphasis>NOT</emphasis> a master site and should never be
|
|
used to mirror from. Lots of online documentation leads
|
|
<quote>interactive</quote>users to
|
|
<hostid role="fqdn">ftp.FreeBSD.org</hostid> so automated mirroring
|
|
systems should find a different machine to mirror from.
|
|
</para>
|
|
<para>
|
|
Additionally there exists a hierarchy of mirrors, which
|
|
is described in terms of <emphasis>tiers</emphasis>.
|
|
The master sites are not referred to but can be
|
|
described as <emphasis>Tier-0</emphasis>. Mirrors
|
|
that mirror from these sites can be considered
|
|
<emphasis>Tier-1</emphasis>, mirrors of <emphasis>Tier-1</emphasis>-mirrors,
|
|
are <emphasis>Tier-2</emphasis>, etc.
|
|
Official sites are encouraged to be of a low <emphasis>tier</emphasis>,
|
|
but the lower the tier the higher the requirements in
|
|
terms as described in <xref linkend="mirror-requirements">.
|
|
Also access to low-tier-mirrors may be restricted, and
|
|
access to master sites is definitely restricted.
|
|
The <emphasis>tier</emphasis>-hierarchy is not reflected
|
|
by DNS and generally not documented anywhere except
|
|
for the master sites. However, official mirrors with low numbers
|
|
like 1-4, are usually <emphasis>Tier-1</emphasis>
|
|
(this is just a rough hint, and there is no rule).
|
|
</para>
|
|
</sect2>
|
|
<sect2 id="mirror-where-where">
|
|
<title>Ok, but where should I get the stuff now?</title>
|
|
<para>
|
|
Under no circumstances should you mirror from <hostid
|
|
role="fqdn">ftp.FreeBSD.org</hostid>.
|
|
The short answer is: from the
|
|
site that is closest to you in Internet terms, or gives you
|
|
the fastest access.
|
|
</para>
|
|
<sect3 id="mirror-where-simple">
|
|
<title>I just want to mirror from somewhere!</title>
|
|
<para>
|
|
If you have no special intentions or
|
|
requirements, the statement in <xref linkend="mirror-where-where">
|
|
applies. This means:
|
|
</para>
|
|
<procedure>
|
|
<step>
|
|
<para>
|
|
Look at available mirrors in your country.
|
|
The <ulink url="http://mirrorlist.FreeBSD.org/">FreeBSD
|
|
Mirror Database</ulink> can help you with this.
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
Check for those which provide fastest access
|
|
(number of hops, round-trip-times)
|
|
and offer the services you intend to
|
|
use (like <application>rsync</application>
|
|
or <application>CVSup</application>).
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
Contact the administrators of your chosen site stating your
|
|
request, and asking about their terms and
|
|
policies.
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
Set up your mirror as described above.
|
|
</para>
|
|
</step>
|
|
</procedure>
|
|
</sect3>
|
|
<sect3 id="mirror-where-official">
|
|
<title>I'm an official mirror, what is the right site for me?</title>
|
|
<para>
|
|
In general the description in <xref linkend="mirror-where-simple">
|
|
still applies. Of course you may want to put some
|
|
weight on the fact that your upstream should be of
|
|
a low tier.
|
|
There are some other considerations about <emphasis>official</emphasis>
|
|
mirrors that are described in <xref linkend="mirror-official">.
|
|
</para>
|
|
</sect3>
|
|
<sect3 id="mirror-where-master">
|
|
<title>I want to access the master sites!</title>
|
|
<para>
|
|
If you have good reasons and good prerequisites,
|
|
you may want and get access to one of the
|
|
master sites. Access to these sites is
|
|
generally restricted, and there are special policies
|
|
for access. If you are already an <emphasis>official</emphasis>
|
|
mirror, this certainly helps you getting access.
|
|
In any other case make sure your country really needs another mirror.
|
|
If it already has three or more, ask the <quote>zone administrator</quote> (<email>hostmaster@CC.FreeBSD.org</email>) or &a.hubs; first.</para>
|
|
|
|
<para>
|
|
Whoever helped you become, an <emphasis>official</emphasis>
|
|
should have helped you gain access to an appropriate upstream
|
|
host, either one of the master sites or a suitable Tier-1
|
|
site. If not, you can send email to
|
|
<email>mirror-admin@FreeBSD.org</email> to request help with
|
|
that.
|
|
</para>
|
|
<para>
|
|
There are three master sites for the FTP fileset and
|
|
one for the CVS repository (the web pages and docs are
|
|
obtained from CVS, so there is no need for master).
|
|
</para>
|
|
<sect4 id="mirror-where-master-ftp">
|
|
<title>ftp-master.FreeBSD.org</title>
|
|
<para>
|
|
This is the master site for the FTP fileset.
|
|
</para>
|
|
<para>
|
|
<hostid>ftp-master.FreeBSD.org</hostid> provides
|
|
<application>rsync</application> and <application>CVSup</application>
|
|
access, rather in addition to ftp protocol.
|
|
Refer to <xref linkend="mirror-ftp-rsync"> and
|
|
<xref linkend="mirror-ftp-cvsup"> how to access
|
|
via these protocols.
|
|
</para>
|
|
<para>
|
|
Mirrors should be encouraged to also allow <application>rsync</application>
|
|
access for the FTP contents, since they are
|
|
<emphasis>Tier-1</emphasis>-mirrors.
|
|
</para>
|
|
</sect4>
|
|
<sect4 id="mirror-where-master-cvsup">
|
|
<title>cvsup-master.FreeBSD.org</title>
|
|
<para>
|
|
This is the master site for the CVS repository.
|
|
</para>
|
|
<para>
|
|
<hostid>cvsup-master.FreeBSD.org</hostid> provides
|
|
<application>CVSup</application> access only.
|
|
See <xref linkend="mirror-cvs-cvsup"> for details.
|
|
</para>
|
|
<para>
|
|
To get access, you need to contact &a.cvsup-master;.
|
|
Make sure you read
|
|
<ulink url="http://people.FreeBSD.org/~jdp/cvsup-access/">FreeBSD CVSup Access Policy</ulink>
|
|
first!
|
|
</para>
|
|
<para>
|
|
Set up the required authentication by following
|
|
<ulink url="http://people.FreeBSD.org/~jdp/cvpasswd/">these
|
|
instructions</ulink>. Make sure you specify the server as
|
|
<hostid>freefall.FreeBSD.org</hostid> on the <command>cvpasswd</command>
|
|
command line, as described in this document,
|
|
even when you are contacting
|
|
<hostid>cvsup-master.FreeBSD.org</hostid>
|
|
</para>
|
|
</sect4>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="mirror-official">
|
|
<title>Official Mirrors</title>
|
|
<para>
|
|
Official mirrors are mirrors that
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
a) have a <hostid>FreeBSD.org</hostid> DNS entry
|
|
(usually a CNAME).
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
b) are listed as an official mirror in the FreeBSD
|
|
documentation (like handbook).
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
So far to distinguish official mirrors.
|
|
Official mirrors are not necessarily <emphasis>Tier-1</emphasis>-mirrors.
|
|
However you probably won't find a <emphasis>Tier-1</emphasis>-mirror,
|
|
that is not also official.
|
|
</para>
|
|
<sect2 id="mirror-official-requirements">
|
|
<title>Special Requirements for official (tier-1) mirrors</title>
|
|
<para>
|
|
It is not so easy to state requirements for all
|
|
official mirrors, since the project is sort of
|
|
tolerant here. It is more easy to say,
|
|
what <emphasis>official tier-1 mirrors</emphasis>
|
|
are required to. All other official mirrors
|
|
can consider this a big <emphasis>should</emphasis>.
|
|
<note>
|
|
<para>
|
|
The following applies mainly to the FTP fileset,
|
|
since a CVS repository should always be mirrored
|
|
completely, and the web pages are a case of
|
|
its own.
|
|
</para>
|
|
</note>
|
|
</para>
|
|
<para>
|
|
Tier-1 mirrors are required to:
|
|
<itemizedlist>
|
|
<listitem><para>carry the complete fileset</para></listitem>
|
|
<listitem><para>allow access to other mirror sites</para></listitem>
|
|
<listitem><para>provide <application>FTP</application> and
|
|
<application>RSYNC</application> access</para></listitem>
|
|
</itemizedlist>
|
|
|
|
Furthermore, admins should be subscribed to the &a.hubs;.
|
|
See <ulink url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/eresources.html#ERESOURCES-MAIL">this link</ulink> for details, how to subscribe.
|
|
</para>
|
|
<important>
|
|
<para>It is <emphasis>very</emphasis> important for a hub administrator, especially
|
|
Tier-1 hub admins, to check the
|
|
<ulink url="http://www.FreeBSD.org/releng/">release schedule</ulink>
|
|
for the next FreeBSD release. This is important because it will tell you when the
|
|
next release is scheduled
|
|
to come out, and thus giving you time to prepare for the big spike of traffic which follows it.
|
|
</para>
|
|
<para>
|
|
It is also important that hub administrators try to keep their mirrors as up-to-date as
|
|
possible (again, even more crucial for Tier-1 mirrors). If Mirror1 doesn't update for a
|
|
while, lower tier mirrors will begin to mirror old data from Mirror1 and thus begins
|
|
a downward spiral... Keep your mirrors up to date!
|
|
</para>
|
|
</important>
|
|
</sect2>
|
|
<sect2 id="mirror-official-become">
|
|
<title>How to become official then?</title>
|
|
<para>
|
|
An interesting question, especially, since the state
|
|
of being official comes with some benefits, like a much
|
|
higher bill from your ISP as more people will be using
|
|
your site. Also it may be a key requirement to get access
|
|
to a master site.
|
|
</para>
|
|
<para>
|
|
Before applying, please consider (again) if
|
|
another official mirror is really needed for
|
|
your region. Check first with your zone administrator (<email>hostmaster@CC.FreeBSD.org</email>) or, if that fails, ask on the &a.hubs;.
|
|
</para>
|
|
<para>Ok, here is how to do it:</para>
|
|
<procedure>
|
|
<step>
|
|
<para>
|
|
Get the mirror running in first place (maybe not
|
|
using a master site, yet).
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
<ulink url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/eresources.html#ERESOURCES-MAIL">Subscribe</ulink> to the &a.hubs;.
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
If everything works so far, contact the DNS administrator responsible
|
|
for your region/country, and ask for a DNS entry for your
|
|
site. The admin should able to be contacted via
|
|
<email>hostmaster@CC.FreeBSD.org</email>, where
|
|
<emphasis>CC</emphasis> is your country code/TLD.
|
|
Your DNS entry will be as described
|
|
in <xref linkend="mirror-where-organization">.
|
|
</para>
|
|
<para>
|
|
If there is no subdomain set up for your
|
|
country yet, you should contact
|
|
<email>mirror-admin@FreeBSD.org</email>,
|
|
or you can try the &a.hubs; first.
|
|
</para>
|
|
</step>
|
|
<step>
|
|
<para>
|
|
Whoever helps you get an official name should send email
|
|
to <email>mirror-admin@FreeBSD.org</email> so your site will be
|
|
added to the mirror list in the
|
|
<ulink url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook">FreeBSD
|
|
Handbook</ulink>.
|
|
</para>
|
|
</step>
|
|
</procedure>
|
|
<para>That is it.</para>
|
|
</sect2>
|
|
</sect1>
|
|
<sect1 id="mirror-statpages">
|
|
<title>Some statistics from mirror sites</title>
|
|
<para>
|
|
Here are links to the stat pages of your favorite mirrors
|
|
(a.k.a. the only ones who feel like providing stats).
|
|
</para>
|
|
<sect2 id="mirror-statpagesftp">
|
|
<title>FTP site statistics</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>ftp2.FreeBSD.org - <email>grisha@ispol.com</email> -
|
|
<ulink url="http://people.FreeBSD.org/~logo/ftp2/">(Bandwidth)</ulink>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>ftp.is.FreeBSD.org - <email>hostmaster@is.FreeBSD.org</email> -
|
|
<ulink url="http://www.rhnet.is/status/draupnir/draupnir.html">
|
|
(Bandwidth)</ulink> <ulink url="http://www.rhnet.is/status/ftp/ftp-notendur.html">(FTP
|
|
processes)</ulink> <ulink url="http://www.rhnet.is/status/ftp/http-notendur.html">(HTTP processes)
|
|
</ulink>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>ftp.cz.FreeBSD.org - <email>cejkar@fit.vutbr.cz</email> -
|
|
<ulink url="http://www.cz.FreeBSD.org/stats/mrtg/net.html">(Bandwidth)</ulink>
|
|
<ulink url="http://www.freebsd.cz/stats/mrtg/ftpd.html">(FTP processes)</ulink>
|
|
<ulink url="http://www.freebsd.cz/stats/mrtg/rsyncd.html">(Rsync processes)</ulink>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>ftp4.de.FreeBSD.org - <email>dl@leo.org</email> -
|
|
<ulink url="http://admin.leo.org/mrtg/services/ftp/ftp.html">(FTP users)</ulink>
|
|
<ulink url="http://admin.leo.org/mrtg/services/rsync/rsync.html">(RSYNC users)</ulink>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
<sect2 id="mirror-statpagescvsup">
|
|
<title>CVSup site stats</title>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>cvsup[23456].jp.FreeBSD.org - <email>kuriyama@FreeBSD.org</email> - <ulink
|
|
url="http://home.jp.FreeBSD.org/stats/mrtg/cvsup/">(CVSup processes)</ulink></para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>cvsup.cz.FreeBSD.org - <email>cejkar@fit.vutbr.cz</email> -
|
|
<ulink url="http://www.freebsd.cz/stats/mrtg/cvsupd.html">(CVSup processes)</ulink></para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>[cvsup3|anoncvs].de.FreeBSD.org - <email>dl@leo.org</email> -
|
|
<ulink url="http://admin.leo.org/mrtg/services/cvsup/cvsup.html">(CVSup processes)</ulink></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
</sect1>
|
|
</article>
|
|
|
|
<!--
|
|
Local Variables:
|
|
mode: sgml
|
|
sgml-indent-data: t
|
|
sgml-omittag: nil
|
|
sgml-always-quote-attributes: t
|
|
End:
|
|
-->
|