Understanding Terra’s subrepo system for package isolation
Terra uses a subrepo (sub-repository) system to organize packages that may conflict with Fedora or require special handling. This allows users to selectively enable only the package sets they need while avoiding conflicts.
Subrepos are separate repository streams within Terra that contain packages requiring isolation from the main repository. Each subrepo has its own repository configuration file and can be enabled or disabled independently.
The main Terra repository contains packages that don’t conflict with Fedora and can be safely enabled alongside the base system.
The terra-release.spec file defines all subrepo packages:
terra-release.spec
Name: terra-releaseVersion: %{?fedora:%{fedora}}%{?rhel:%{rhel}}Release: 2%?distSource0: terra.repoSource1: terra-extras.repoSource2: terra-nvidia.repoSource3: terra-mesa.repoSource4: terra-multimedia.repo%package extrasSummary: Release package for Terra ExtrasRequires: terra-gpg-keys%description extrasRelease package for Terra Extras, which is a repository with packagesthat might cause conflict with Fedora.%package nvidiaSummary: Release package for the nvidia subrepo of Terra ExtrasRequires: terra-gpg-keys%description nvidiaRelease package for the Terra Extras nvidia subrepo, which providesnvidia drivers that might cause a conflict with Fedora.%package mesaSummary: Release package for the mesa subrepo of Terra ExtrasRequires: terra-gpg-keys%description mesaRelease package for the Terra Extras mesa subrepo, which providesa patched and updated version of mesa that might cause a conflictwith Fedora.%package multimediaSummary: Release package for the multimedia subrepo of Terra ExtrasRequires: terra-gpg-keys%description multimediaRelease package for the Terra Extras multimedia subrepo, which providescodecs that might cause a conflict with Fedora.
Each subpackage:
Installs a separate .repo file in /etc/yum.repos.d/
Requires the terra-gpg-keys package for signature verification
Subrepos use different priority levels to control package selection:
[terra]priority=99 # Default, not explicitly set
Lower priority numbers mean higher precedence. The main Terra repository (priority 99) takes precedence over extras (priority 150) when both provide the same package.
The priority system ensures that subrepo packages are only used when explicitly required, preventing accidental conflicts.