OpenBSD uses the CVS version control system. It is described in more detail here. The cvs(1) command is used to checkout a working tree and perform standard operations (log, diff, etc). It can either contact an CVS server (in most cases this will be an OpenBSD anoncvs server), or operate against a local copy of the repository.
If you would like to operate a local anoncvs server, use cvs(1) commands offline, or simply have faster access, you may use CVSync or rsync to fetch a local copy of the repository.
The client cvsync
runs on each user's machine (typically from
a cron(8) job), and fetches
from a server running cvsyncd
.
CVS is part of OpenBSD's base system. CVSync is an entirely different program and can be installed from packages:
# pkg_add cvsync
Do not build your own copy from unmodified upstream source - the port/package has been modified to support commitid which is now used in the OpenBSD repository.
In order to mirror the OpenBSD repository with CVSync, the following configuration file might be used:
config { hostname anoncvs.eu.openbsd.org # If your network link is a T1 or faster, comment out the following line. compress collection { name openbsd release rcs prefix /cvs umask 002 } }
This directs cvsync to fetch or refresh all OpenBSD distributions from
anoncvs.eu.openbsd.org with a
umask(2) that permits group write
permission to the local repository.
The local copy of the files are stored in /cvs
.
Assuming this file is saved as cvs-syncfile
, the
following command would be used to invoke cvsync
$ cvsync -c cvs-syncfile
Some repository mirrors offer access via rsync, a general-purpose file synchronization program. Again this should be installed from packages. Two flavours are available:
# pkg_add rsync Ambiguous: choose package for rsync a 0: <None> 1: rsync-3.1.2p0 2: rsync-3.1.2p0-iconv Your choice:
Unless you have other requirements, simply install the standard version (option 1 on the list above). You can select the flavour on the command-line to avoid pkg_add(1) prompting for the version like so:
# pkg_add rsync--
In order to mirror the OpenBSD repository with rsync, the following command line might be used:
$ rsync -avz --delete rsync://obsdacvs.cs.toronto.edu/obsdcvs/ /cvs/
Now that you have a local copy of the CVS repository, it is now simple to check out, update, or do any of the other CVS operations you would normally do against a remote repository, locally. For example:
$ cvs -d/cvs checkout -P src $ cvs -d/cvs up -Pd $ cvs -d/cvs diff -u file.c
More details on CVS operation can be found in FAQ5, Fetching appropriate source code and in the cvs(1) man page.
The following CVSync and rsync repository servers are available:
Note: If your server is listed on here with inaccurate or
unknown information, please contact mirrors-discuss@openbsd.org
You may want to use traceroute(8) to find out which server is nearest you. Problems with a server should be reported to the maintainer of the server in question.
As of December 2017, the CVS repository sizes are:
openbsd-ports | - 1220MB |
openbsd-src | - 2865MB |
openbsd-www | - 704MB |
openbsd-xenocara | - 1658MB |
openbsd-cvsroot | - 158MB |
The overall repository size currently increases at a rate of about 400MB per annum. The src repository increases by about 150MB.
IMPORTANT NOTE: There are a few issues relating to cryptographic software that everyone should be aware of:
The OpenBSD sources are from Canada. As researched by a Canadian individual and as described in the Export Control list of Canada, it is legal to export crypto software from Canada to the world.
However, if you are outside the USA or Canada, you should not fetch the cryptographic sections of the OpenBSD sources from a CVSync server located in the USA. The files in question are...
src/kerberosIV/*
src/kerberosV/*
src/lib/libdes/*
src/lib/libc/crypt/crypt.c
src/lib/libc/crypt/morecrypt.c
src/sys/crypto
src/sys/netinet
src/usr.sbin/afs/src/rxkad/*
Because of the USA ITAR munitions list, crypto software may only be exported to Canada from the USA.