There are two development branches to FreeBSD: FreeBSD-CURRENT and FreeBSD-STABLE.
This section will explain a bit about each and describe how to keep your system
up-to-date with each respective tree. FreeBSD-CURRENT will be discussed first, then
FreeBSD-STABLE.
As you read this, keep in mind that FreeBSD-CURRENT is the “bleeding edge”
of FreeBSD development. FreeBSD-CURRENT users are expected to have a high degree of
technical skill, and should be capable of solving difficult system problems on their own.
If you are new to FreeBSD, think twice before installing it.
FreeBSD-CURRENT is the latest working sources for FreeBSD. This includes work in
progress, experimental changes, and transitional mechanisms that might or might not be
present in the next official release of the software. While many FreeBSD developers
compile the FreeBSD-CURRENT source code daily, there are periods of time when the sources
are not buildable. These problems are resolved as expeditiously as possible, but whether
or not FreeBSD-CURRENT brings disaster or greatly desired functionality can be a matter
of which exact moment you grabbed the source code in!
FreeBSD-CURRENT is made available for 3 primary interest groups:
Members of the FreeBSD community who are actively working on some part of the source
tree and for whom keeping “current” is an absolute requirement.
Members of the FreeBSD community who are active testers, willing to spend time solving
problems in order to ensure that FreeBSD-CURRENT remains as sane as possible. These are
also people who wish to make topical suggestions on changes and the general direction of
FreeBSD, and submit patches to implement them.
Those who merely wish to keep an eye on things, or to use the current sources for
reference purposes (e.g. for reading, not running). These people also make the occasional
comment or contribute code.
A fast-track to getting pre-release bits because you heard there is some cool new
feature in there and you want to be the first on your block to have it. Being the first
on the block to get the new feature means that you are the first on the block to get the
new bugs.
A quick way of getting bug fixes. Any given version of FreeBSD-CURRENT is just as
likely to introduce new bugs as to fix existing ones.
In any way “officially supported”. We do our best to help people genuinely
in one of the 3 “legitimate” FreeBSD-CURRENT groups, but we simply do not have the time to provide tech
support. This is not because we are mean and nasty people who do not like helping people
out (we would not even be doing FreeBSD if we were). We simply cannot answer hundreds
messages a day and work on FreeBSD!
Given the choice between improving FreeBSD and answering lots of questions on
experimental code, the developers opt for the former.
Join the freebsd-current and the cvs-all lists.
This is not just a good idea, it is essential. If you are not on the freebsd-current list, you will not see the comments that
people are making about the current state of the system and thus will probably end up
stumbling over a lot of problems that others have already found and solved. Even more
importantly, you will miss out on important bulletins which may be critical to your
system's continued health.
The cvs-all list will allow you to see the commit log entry for each change
as it is made along with any pertinent information on possible side-effects.
To join these lists, or one of the others available go to https://lists.FreeBSD.org/mailman/listinfo and click on the list that
you wish to subscribe to. Instructions on the rest of the procedure are available
there.
Grab the sources from a FreeBSD mirror site. You can do
this in one of two ways:
Use the cvsup program with the supfile named standard-supfile available
from /usr/share/examples/cvsup. This is the most recommended
method, since it allows you to grab the entire collection once and then only what has
changed from then on. Many people run cvsup from cron and keep their sources up-to-date automatically. You have to
customize the sample supfile above, and configure cvsup for your environment.
Use the CTM facility. If you have
very bad connectivity (high price connections or only email access) CTM is an option. However, it is a lot of hassle and can give you
broken files. This leads to it being rarely used, which again increases the chance of it
not working for fairly long periods of time. We recommend using CVSup for anybody with a 9600 bps modem or faster
connection.
If you are grabbing the sources to run, and not just look at, then grab all of FreeBSD-CURRENT, not just selected
portions. The reason for this is that various parts of the source depend on updates
elsewhere, and trying to compile just a subset is almost guaranteed to get you into
trouble.
Before compiling FreeBSD-CURRENT, read the Makefile in /usr/src carefully. You should at least install a new kernel and rebuild the world the first time
through as part of the upgrading process. Reading the FreeBSD-CURRENT mailing list and /usr/src/UPDATING will keep you up-to-date on other bootstrapping
procedures that sometimes become necessary as we move toward the next release.
Be active! If you are running FreeBSD-CURRENT, we want to know what you have to say
about it, especially if you have suggestions for enhancements or bug fixes. Suggestions
with accompanying code are received most enthusiastically!
FreeBSD-STABLE is our development branch from which major releases are made. Changes
go into this branch at a different pace, and with the general assumption that they have
first gone into FreeBSD-CURRENT for testing. This is still a development branch, however, and this means that at
any given time, the sources for FreeBSD-STABLE may or may not be suitable for any
particular purpose. It is simply another engineering development track, not a resource
for end-users.
If you are interested in tracking or contributing to the FreeBSD development process,
especially as it relates to the next “point” release of FreeBSD, then you
should consider following FreeBSD-STABLE.
While it is true that security fixes also go into the FreeBSD-STABLE branch, you do
not need to track FreeBSD-STABLE to
do this. Every security advisory for FreeBSD explains how to fix the problem for the
releases it affects [1] , and tracking an entire development branch just for
security reasons is likely to bring in a lot of unwanted changes as well.
Although we endeavor to ensure that the FreeBSD-STABLE branch compiles and runs at all
times, this cannot be guaranteed. In addition, while code is developed in FreeBSD-CURRENT
before including it in FreeBSD-STABLE, more people run FreeBSD-STABLE than
FreeBSD-CURRENT, so it is inevitable that bugs and corner cases will sometimes be found
in FreeBSD-STABLE that were not apparent in FreeBSD-CURRENT.
For these reasons, we do not
recommend that you blindly track FreeBSD-STABLE, and it is particularly important that
you do not update any production servers to FreeBSD-STABLE without first thoroughly
testing the code in your development environment.
If you do not have the resources to do this then we recommend that you run the most
recent release of FreeBSD, and use the binary update mechanism to move from release to
release.
Join the freebsd-stable list. This will keep you informed of build-dependencies
that may appear in FreeBSD-STABLE or any other issues requiring special attention.
Developers will also make announcements in this mailing list when they are contemplating
some controversial fix or update, giving the users a chance to respond if they have any
issues to raise concerning the proposed change.
The cvs-all list will allow you to see the commit log entry for each change
as it is made along with any pertinent information on possible side-effects.
To join these lists, or one of the others available go to https://lists.FreeBSD.org/mailman/listinfo and click on the list that
you wish to subscribe to. Instructions on the rest of the procedure are available
there.
If you are going to install a new system and want it to run monthly snapshot built
from FreeBSD-STABLE, please check the Snapshots web page for more information. Alternatively, it is possible
to install the most recent FreeBSD-STABLE release from the mirror
sites and follow the instructions below to upgrade your system to the most up to date
FreeBSD-STABLE source code.
If you are already running a previous release of FreeBSD and wish to upgrade via
sources then you can easily do so from FreeBSD mirror site.
This can be done in one of two ways:
Use the cvsup program with the supfile named stable-supfile from the
directory /usr/share/examples/cvsup. This is the most
recommended method, since it allows you to grab the entire collection once and then only
what has changed from then on. Many people run cvsup from cron to keep their sources up-to-date automatically. You have to
customize the sample supfile above, and configure cvsup for your environment.
Use the CTM facility. If you do not
have a fast and inexpensive connection to the Internet, this is the method you should
consider using.
Essentially, if you need rapid on-demand access to the source and communications
bandwidth is not a consideration, use cvsup or ftp. Otherwise, use CTM.
Before compiling FreeBSD-STABLE, read the Makefile in /usr/src carefully. You should at least install a new kernel and rebuild the world the first time
through as part of the upgrading process. Reading the FreeBSD-STABLE mailing list and /usr/src/UPDATING will keep you up-to-date on other bootstrapping
procedures that sometimes become necessary as we move toward the next release.
That is not quite true. We can not continue to support old releases of FreeBSD
forever, although we do support them for many years. For a complete description of the
current security policy for old releases of FreeBSD, please see https://www.FreeBSD.org/security/.