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)