FREEBSD-BASE(7) FreeBSD Miscellaneous Information Manual FREEBSD-BASE(7)
NAME
freebsd-base - base system packages
DESCRIPTION
The FreeBSD base system may be installed as a set of pkg(8) packages,
which supersedes the traditional method of installing using tar(1)
archives.
All base packages have names beginning with the string "FreeBSD-", and
have an origin beginning with "base/". In the default system
configuration, the repository containing these packages is called
"FreeBSD-base", but any name may be used. The repository name can be
used with pkg(8) to restrict package operations to the base system
packages.
Packages for all supported FreeBSD releases as well as active "STABLE"
and "CURRENT" branches are hosted on the Internet at
https://pkg.freebsd.org. These packages are updated when new errata or
security updates are released (for supported release versions), or twice
daily for development branches.
Alternatively, packages may be built from the system source tree
according to the instructions in build(7), allowing the system to be
updated from source code using packages.
PACKAGE ORGANISATION
To allow customisation of the installed system, each package is split
into several subpackages which contain different components of the
package. For the package FreeBSD-foo, the following subpackages may be
available:
Package name Description
FreeBSD-foo Base files for the package (typically executables)
FreeBSD-foo-lib Native runtime libraries
FreeBSD-foo-lib32 32-bit compatibility runtime libraries
FreeBSD-foo-dev Development files (headers and static libraries)
FreeBSD-foo-dev-lib32 32-bit development files
FreeBSD-foo-dbg Debugging symbols
FreeBSD-foo-man Manual pages. Manual pages are only packaged
separately if the WITH_MANSPLITPKG src.conf(5)
option was enabled when building the system, which
is not the default.
The exact set of available subpackages differs for each individual
package. For example, some packages may not provide any development
files, in which case the -dev subpackage is not present.
PACKAGE SETS
Package sets are meta-packages which do not contain any files themselves,
but depend on a selection of other packages, such that each package set
allows the complete set of packages for a supported workload to be
installed.
Package sets are provided as packages named FreeBSD-set-<name>. The
following package sets are available in the base system:
minimal The minimal set of packages required to bring up a multi-
user FreeBSD system. This includes the core system, along
with packages required for hardware support (such as
devmatch(8) and downloadable firmware), and basic
networking, including DHCP and IEEE Std 802.11tm wireless
networks.
minimal-jail The equivalent of minimal for systems running in a jail(8)
environment. This set excludes hardware support not
typically required for jails.
devel Development tools, including C/C++ compilers, the link
loader, and other tools such as ar(1) and nm(1). This set
also includes native development files (headers and static
libraries) for all packages.
optional Optional software which is not part of either the devel or
minimal sets.
optional-jail
The equivalent of optional for systems running in a jail(8)
environment. This set excludes system functionality which
typically does not work or is not useful in a jail.
lib32 32-compatibility libraries, for running 32-bit applications
on a 64-bit host system. This set includes both runtime
libraries and development files.
base The complete base system, excluding tests, the system
source code, and debugging symbols. Installing the base
set is equivalent to installing minimal, devel and
optional.
base-jail The equivalent of base for systems running in a jail(8)
environment. This set excludes system functionality which
typically does not work or is not useful in a jail.
Installing the base-jail set is equivalent to installing
minimal-jail, devel and optional-jail.
src The system source tree for the userland and kernel,
installed in /usr/src.
tests The system test suite, installed in /usr/tests.
kernels All available system kernels.
EXAMPLES
Install a single piece of userland
Install the vi(1) text editor on the running system:
pkg install FreeBSD-vi
Install userland to a jail
Install a new jail(8) system using the minimal-jail package set:
pkg -r /jails/myjail install FreeBSD-set-minimal-jail
Install native compilers
Install C/C++ compilers on the running system:
pkg install FreeBSD-set-devel
Update the currently running system
Apply available updates to the running system:
pkg upgrade -r FreeBSD-base
Install cross compilers
Install the development toolchain for FreeBSD/powerpc64le in an alternate
root (for example, to support cross-compiling software for a different
target than the host system):
pkg -r /ppcdev -oABI=FreeBSD:16:powerpc64le \
install FreeBSD-set-devel
Adding a locally built repository for snapshots
Disable the predefined repository, and add a local repo for locally built
base system packages:
cat << EOF > /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD-base: { enabled: no }
FreeBSD-local: {
url: "file:///usr/obj/usr/src/repo/${ABI}/latest",
enabled: yes
}
EOF
The packages are created by the build(7) system at
${REPODIR}/${PKG_ABI}/<VERSION>, which defaults to the example directory.
Note: The repo must have a different name than the predefined repository.
Unregister a currently running system
Systems managed through pkg(8) can be unregistered from the package
manager -- for example to upgrade in-place via "make installworld". See
build(7).
To unregister the base system from the package manager:
pkg unregister -fg 'FreeBSD-\*'
Then, disable the base system package repository. If a configuration
file was created in /usr/local/etc/pkg/repos/ to enable base system
packages, remove it:
rm /usr/local/etc/pkg/repos/FreeBSD-base.conf
Alternatively, if it is desired to keep it, edit the file and change
"enabled:" to "no" to disable the entry.
Warning: This is a destructive action which will prevent updating the
base system via pkg(8).
SEE ALSO
build(7), pkg(8), src.conf(5)
HISTORY
Support for installing the base system as packages was introduced in
FreeBSD 15.0. Earlier releases supported a subset of this functionality.
Support for unregistering an existing installation appeared in pkg 2.5.
CAVEATS
Upgrading from a RELEASE to a STABLE or CURRENT branch requires "pkg
upgrade -f".
FreeBSD 15.1-STABLE-HBSD April 23, 2026 FREEBSD-BASE(7)