Differences between pkg.freebsd.org release_N repositories, e.g. release_5 vs quarterly

Hello,

I am trying to understand the intended meaning and use of the release_N package repositories under pkg.freebsd.org.

For example, for FreeBSD 13 amd64 there are, among others:


Both folders contain packagesite.pkg files containing all the pacakges metadata information.

The distinction between latest and quarterly is documented: if I understood it correctly latest follows the current ports tree more closely, while quarterly follows the quarterly ports branch and does not include new features but fixes and important security updates.

What I have not found clearly documented is the role of the release_N directories.

In the FreeBSD 13 example, my assumption is that:

release_5 = package repository corresponding to FreeBSD 13.5-RELEASE

and more generally:
release_0 = 13.0-RELEASE
release_1 = 13.1-RELEASE
...
release_5 = 13.5-RELEASE

Is that correct?

I would also like to understand the intended use case. Are these release_N repositories meant as release-time package snapshots, mainly useful for reproducing the package set available around a specific FreeBSD RELEASE? Or are they intended to be used as normal repositories for systems running that release?

For example, can a system or jail be configured explicitly to use:


instead of:


in /usr/local/etc/pkg/repos/FreeBSD.conf?

Something like:

FreeBSD: {
url: "pkg+https://pkg.freebsd.org/FreeBSD:13:amd64/release_5",
mirror_type: "srv",
signature_type: "fingerprints",
fingerprints: "/usr/share/keys/pkg",
enabled: yes
}
 
M.E. as far as I know the:
  • latest
  • quarterly
  • release_N
Refer to the ports (13+) / kmods (in 14+, prefixed with kmods_) based binary packages. Where the N matches the minor of each major release. I.e. latest and quarterly are compiled using the stable/MAJOR branch (for freebsd/src) and release_N is compiled against the releng branch of that major branch (freebsd/src). (source: https://docs.freebsd.org/en/books/handbook/ports/#quarterly-latest-branch)

Starting with 14, you will also have:
  • base_latest
  • base_weekly
  • base_release_N
Where it refers to the binary packages for the base FreeBSD system. Where base_latest and base_weekly are for packages tracking stable/MAJOR built twice a day (base_latest) or weekly on sunday (base_weekly) and base_release_N for packages built against (releng/MAJOR.MINOR). (source: https://docs.freebsd.org/en/books/handbook/cutting-edge/#_upgrading_a_host_using_freebsd_base )

Edit: Updated with clarification about 13 kmods repo. Thanks SirDice
 
M.E. as far as I know the:
  • latest
  • quarterly
  • release_N
Refer to the ports (13+) / kmods (in 14+, prefixed with kmods_) based binary packages. Where the N matches the minor of each major release. I.e. latest and quarterly are compiled using the stable/MAJOR branch (for freebsd/src) and release_N is compiled against the releng branch of that major branch (freebsd/src). (source: https://docs.freebsd.org/en/books/handbook/ports/#quarterly-latest-branch)

Starting with 14, you will also have:
  • base_latest
  • base_weekly
  • base_release_N
Where it refers to the binary packages for the base FreeBSD system. Where base_latest and base_weekly are for packages tracking stable/MAJOR built twice a day (base_latest) or weekly on sunday (base_weekly) and base_release_N for packages built against (releng/MAJOR.MINOR). (source: https://docs.freebsd.org/en/books/handbook/cutting-edge/#_upgrading_a_host_using_freebsd_base )

Edit: Updated with clarification about 13 kmods repo. Thanks SirDice

So there are two branches:

1. stable/MAJOR branch (latest / quarterly)
2. releng branch (release_N)

just for the shake of simplicity lets stay on FreeBSD13 and we ignore the kmods beginning in FreeBSD14.

1. what are the differences between both branches?
2. when one or the other shall be used?
3. And, is it possible to use release_N as pkg source?
 
I think it all depends on your risk calculation, the official explanation is:

4.4.2. Quarterly and Latest Ports Branches​

The Quarterly branch provides users with a more predictable and stable experience for port and package installation and upgrades.This is done essentially by only allowing non-feature updates.Quarterly branches aim to receive security fixes (that may be version updates, or backports of commits), bug fixes and ports compliance or framework changes.The Quarterly branch is cut from HEAD at the beginning of every (yearly) quarter in January, April, July, and October.Branches are named according to the year (YYYY) and quarter (Q1-4) they are created in.For example, the quarterly branch created in January 2023, is named 2023Q1.And the Latest branch provides the latest versions of the packages to the users.

My own risk calculation allows me to be on stable/15 but not on current (i.e. 16). releng/14.4 and releng/15.x is doable for me but lower than that my hardware has issues.
You may have different priorities.

As for 13, the currently supported versions are 15.0 (soon 15.1), 14.4 and 14.3 (see: https://www.freebsd.org/security/#sup )
I don't know for how long are ports supposed to be built for non supported versions of FreeBSD.
 
So there are two branches:

1. stable/MAJOR branch (latest / quarterly)
2. releng branch (release_N)

just for the shake of simplicity lets stay on FreeBSD13 and we ignore the kmods beginning in FreeBSD14.

1. what are the differences between both branches?
2. when one or the other shall be used?
3. And, is it possible to use release_N as pkg source?
There are 2 supported branches for ports. latest and quarterly.

latest is the main (master) branch for cutting edge, development.

quarterly are branched from latest per every quarter and only the latest one (2026Q2 at Jun.12, 2026) is supported and gets build fixes and runtime fixes broken by base FreeBSD upgrades and security fixes only.

And as far as I know, release_N are created specifically to be included in FreeBSD-(major).(minor)-RELEASE-(arch)-discdvd1.iso{.xz} release images and never gets updates.
No images other than *-discdvd1.iso* contains pre-built pkgs.

For *-RELEASE, pkg are defaulted to quarterly, while stable/* and main (aka *-CURRENT) default to latest. This is because users of stable/* and main are expected to be developers, porters or early adopters.

Edit: dvd1, not disc1.
 
There are 2 supported branches for ports. latest and quarterly.

latest is the main (master) branch for cutting edge, development.

quarterly are branched from latest per every quarter and only the latest one (2026Q2 at Jun.12, 2026) is supported and gets build fixes and runtime fixes broken by base FreeBSD upgrades and security fixes only.

And as far as I know, release_N are created specifically to be included in FreeBSD-(major).(minor)-RELEASE-(arch)-disc1.iso{.xz} release images and never gets updates.
No images other than *-disc1.iso* contains pre-built pkgs.

For *-RELEASE, pkg are defaulted to quarterly, while stable/* and main (aka *-CURRENT) default to latest. This is because users of stable/* and main are expected to be developers, porters or early adopters.
pkg.freebsd.org contains:

- latest (with a packagesite.pkg with around 35000 packages ~150Gb).
- quarterly (with a packagesite.pkg with around 35000 packages ~150Gb).
- release_N folders (with a similar but not identical packagesite.pkg, also with around 35000 packages ~150Gb)

the explanations and documentation focus on latest/quarterly, yet they do not explain why there is a packagesite.pkg in release_n folders,

surely there is a reason and a use case, and that is what i would like to understand

If the purpose of release_n is just to provide packages for the dvd iso, why 150Gb and the whole 35000 packages set?
 
Other images; cd1, (mini)-memstick, bootonly, don't contain packages. You can pick packages to install at some point in the installer, but as far as I know those come from the default repositories ('quarterly' on -RELEASE and 'latest' on -STABLE and -CURRENT).
 
Yes, it's quite often confused by new comers.
  1. main (aka CURRENT) is the frontline of developments for future major RELEASEs.
  2. stable is the frontline of merging from main for future minor RELEASEs and branches from main in preparation for first (*.0) major RELEASE.
  3. releng is the frontline of the merging from stable for upcoming point RELEASEs (*.*-p*) and gets security and major bug fixes only, and branches from stable in preparation for each minor RELEASEs (*.*).
  4. RELEASEs including point RELEASEs are snapshot of relengs and never gets updates.
 
These tables try to digest everything shared here.
They focus on FreeBSD versions before 14, since 14 may change some details around kmods.
Hopefully, this is accurate and might help others.


Code:
+----------------------------------------------------------------------------------------------------------------------+
|                     FreeBSD Reference Table: Branches & Package Repositories                                          |
+----------------------------------------------------------------------------------------------------------------------+

STEP 1: Understand the Two Separate Things

+---------------------+------------------------------------------------+--------------------------------------+-----------------------------+
|        Thing        |          What it does                         |              Examples                |     How many exist?         |
+=====================+================================================+======================================+=============================+
| OS Source Branch    | The operating system code itself              | CURRENT, STABLE, RELENG, RELEASE     | 4 types (but many instances)|
+---------------------+------------------------------------------------+--------------------------------------+-----------------------------+
| Package Repository  | Pre-built apps you install with pkg           | latest, quarterly, release_N         | 3 types (but many instances)|
+---------------------+------------------------------------------------+--------------------------------------+-----------------------------+

Key insight: They are independent. You can mix any OS branch with any package repo (if the repo supports your OS version).

+----------------------------------------------------------------------------------------------------------------------+

STEP 2: What Each OS Branch Means (For Source)

+---------------------+------------------------------------------------+------------------------------------+-----------------------------+-----------------------------+
|  OS Branch Name     |          What it is                           |   Do normal users install this?     |     How many exist?         |          Example            |
+=====================+================================================+====================================+=============================+=============================+
| CURRENT (main)      | Bleeding edge OS development                  | ❌ No (only developers)              | 1 (only main branch)        | main -> 15.0-CURRENT        |
+---------------------+------------------------------------------------+------------------------------------+-----------------------------+-----------------------------+
| STABLE (stable/X)   | Next minor version development                | ❌ No (only early adopters who       | 1 per major version         | stable/13, stable/14        |
|                     |                                                |    compile)                         |                             |                             |
+---------------------+------------------------------------------------+------------------------------------+-----------------------------+-----------------------------+
| RELENG (releng/X.Y) | Security patch branch for a specific release  | ⚠️ Indirectly (via freebsd-update)   | 1 per minor release         | releng/13.5, releng/14.2    |
+---------------------+------------------------------------------------+------------------------------------+-----------------------------+-----------------------------+
| RELEASE (X.Y-RELEASE| Frozen snapshot from a specific date          | ✅ Yes (this is the ISO you download)| 1 per minor release         | release/13.5.0, release/14.2.0|
+---------------------+------------------------------------------------+------------------------------------+-----------------------------+-----------------------------+

+----------------------------------------------------------------------------------------------------------------------+

STEP 3: What Each Package Repository Means (For Apps)

+--------------------------------+-----------------------------------------------+------------------+------------------------------------+-----------------------------+-----------------------------+
|        Package Repo            |          What it is                           |    Updates?      |    Who should use it?              |     How many exist?         |          Example            |
+================================+===============================================+==================+====================================+=============================+=============================+
| latest                         | Rolling, always newest versions               | Continuous       | Desktop users, developers          | 1 (moving target)           | .../latest                  |
+--------------------------------+-----------------------------------------------+------------------+------------------------------------+-----------------------------+-----------------------------+
| quarterly (label)              | Moves to new branch every 3 months            | Security fixes   | Production servers (default)       | 1 (moving target)           | .../quarterly               |
|                                |                                               | for 3 months     |                                    |                             |                             |
+--------------------------------+-----------------------------------------------+------------------+------------------------------------+-----------------------------+-----------------------------+
| quarterly (specific)           | Frozen after 3 months                         | No updates after | Archiving, reproducibility         | Many (1 per quarter)        | .../quarterly/2025Q2        |
|                                |                                               | quarter ends     |                                    |                             |                             |
+--------------------------------+-----------------------------------------------+------------------+------------------------------------+-----------------------------+-----------------------------+
| release_N (e.g., release_5)    | Frozen at OS release day                      | Never            | Historical reference, bug repro    | Many (1 per minor release)  | .../release_5 (for 13.5)    |
+--------------------------------+-----------------------------------------------+------------------+------------------------------------+-----------------------------+-----------------------------+

+----------------------------------------------------------------------------------------------------------------------+

STEP 4: What Happens When You Install From ISO (The 99% Case)

+------+------------------------------------------+-------------------------------------+-------------------------------------+-----------------------------------------------+
| Step |             What happens                 |           OS branch                  |           Package repo               |     How many exist for this OS?               |
+======+==========================================+=====================================+=====================================+===============================================+
| 1    | Download 13.5-RELEASE.iso                | N/A                                 | N/A                                 | N/A                                           |
+------+------------------------------------------+-------------------------------------+-------------------------------------+-----------------------------------------------+
| 2    | Install to hard drive                    | 13.5-RELEASE (frozen tag)           | Not configured yet                  | 1 (this specific release)                     |
+------+------------------------------------------+-------------------------------------+-------------------------------------+-----------------------------------------------+
| 3    | Run freebsd-update                       | releng/13.5 (security branch)       | Not configured yet                  | 1 (this specific releng)                      |
+------+------------------------------------------+-------------------------------------+-------------------------------------+-----------------------------------------------+
| 4    | Run pkg for first time                   | releng/13.5                         | quarterly (label)                   | 1 (moving target to latest quarter)           |
+------+------------------------------------------+-------------------------------------+-------------------------------------+-----------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------+

STEP 5: What Happens Inside a Jail (OS Version + Package Repo)

+-----------------------------------+-------------------------------------+---------------------+-----------------------------------------------+-----------------------------+
|       Jail OS (from base.txz)     |     OS branch inside jail           |  Default pkg repo   |     How many exist for this OS?               |  Does default work?         |
+===================================+=====================================+=====================+===============================================+=============================+
| 14.2-RELEASE                      | 14.2-RELEASE (frozen tag)           | quarterly (label)   | 1 (this specific RELEASE)                     | ✅ Yes (if supported)        |
+-----------------------------------+-------------------------------------+---------------------+-----------------------------------------------+-----------------------------+
| 13.5-RELEASE                      | 13.5-RELEASE (frozen tag)           | quarterly (label)   | 1 (this specific RELEASE)                     | ✅ Yes (current)             |
+-----------------------------------+-------------------------------------+---------------------+-----------------------------------------------+-----------------------------+
| 13.4-RELEASE (EoL)                | 13.4-RELEASE (frozen tag)           | quarterly (label)   | 1 (this specific RELEASE)                     | ❌ Fails (packages gone)     |
+-----------------------------------+-------------------------------------+---------------------+-----------------------------------------------+-----------------------------+

+----------------------------------------------------------------------------------------------------------------------+

SUMMARY TABLE: Quantity Reference

+-------------------------------------+-------------------------------------+---------------------------------------------------+
|             Concept                 |        How many exist?              |                 Example instances                 |
+=====================================+=====================================+===================================================+
| CURRENT (OS branch)                 | 1                                   | main                                              |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
| STABLE (OS branch)                  | 1 per major version                 | stable/13, stable/14, stable/15                   |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
| RELENG (OS branch)                  | 1 per minor release                 | releng/13.5, releng/14.2, releng/14.3             |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
| RELEASE (OS tag)                    | 1 per minor release                 | release/13.5.0, release/14.2.0                    |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
| latest (package repo)               | 1 (moving)                          | .../latest                                        |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
| quarterly (label)                   | 1 (moving)                          | .../quarterly                                     |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
| quarterly (specific)                | Many (1 per quarter)                | 2025Q2, 2025Q3, 2025Q4...                         |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
| release_N (package repo)            | Many (1 per minor release)          | release_0, release_1, release_2...                |
+-------------------------------------+-------------------------------------+---------------------------------------------------+
 
Back
Top