Request for buildworld clarification

Roland Smith rsmith at
Wed Sep 10 21:14:14 UTC 2014

On Wed, Sep 10, 2014 at 12:08:59PM -0600, Dave Babb wrote:
> I am requesting a clarification on make buildworld. I am junior with
> FreeBSD (< 8 months)...and I am getting confused with Gentoo's
> definition of build world, and FreeBSD's.
> Under Gentoo, when you rebuilt your world, everything got rebuilt. Every
> package that you had installed in your system including the base.
> Am I understanding that in FreeBSD this is a two step process. "make
> buildworld" simply rebuilds the base system from source. Then to rebuild
> your ports....I understand that I need to call "portmaster -af"...Am I
> correct, or is their a different set of switches I need to pass to
> portmaster to tell it to rebuild every installed port?

In this context, you can consider a typical FreeBSD installation to consist of
two separate parts;

1) the base system; kernel, libraries, utilities, documentation
2) ports; everything that isn't in base.

Using `make buildworld` *rebuilds* most components of the base system, but *not
the kernel*. You need to run `make buildkernel` to rebuild the kernel.

Note that in both these case rebuilding does *not* include installation!

To install the newly built kernel and/or world you need to run `make
installkernel` first and reboot (to start the new kernel). It is *advised* to
run `make installworld` from single-user mode.

Note that this is a general overview. Read the section COMMON ITEMS in
/usr/src/UPDATING and the Handbook for more detailed instructions.

As for ports, in general it is almost never necessary to rebuild *all* ports.
Two situations that can occur are;

* You are upgrading to a new major FreeBSD version (e.g. from 9.x to 10.x). In
  this case it is *advised* to make a list of all ports, remove all ports and
  re-install them. This is to prevent new ports from linking to old libraries
  that might still be around, especially if e.g. the library version of libc
  or libm has been changed because of incompatible changes.

* The shared library version of a fundamental library like e.g. gettext (which
  is used by a lot of packages) has changed. In this case `portmaster -R -r
  <portname>` is usually sufficient.

In any case, read /usr/ports/UPDATING after updating the ports tree but
*before* updating the ports themselves. Follow all special instructions that
apply to your situation.

[plain text _non-HTML_ PGP/GnuPG encrypted/signed email much appreciated]
pgp: 5753 3324 1661 B0FE 8D93  FCED 40F6 D5DC A38A 33E0 (keyID: A38A33E0)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <>

More information about the freebsd-questions mailing list