Custom Software Sources
A custom software source is a software repository derived from vendor software sources. Custom sources enable you to create specific sets of packages or modules that you want to manage and apply to Oracle Linux instances.
- Creating a custom source
- Availability of a custom source
- Automatically resolving dependencies
- Automatically updating content
- Using filters and package lists
- Limiting packages and modules to the latest version
Creating a custom source
To create a custom source, you select vendor software sources to use as a foundation. These must all be of the same OS version and architecture. Then using filters or a package list, you identify the packages and modules to include or exclude from the vendor software sources. This creates a source that's a subset of the packages and modules provided by the base vendor software sources. You can then attach custom software sources to profiles, instances, or groups (lifecycle environments use versioned custom software sources).
A common use of custom software sources is to create a snapshot of a vendor software source. This creates a copy of the vendor software source but with packages that remain at the versions available when you take the snapshot. This can be useful to limit instances to a specific version of packages released by a vendor.
Availability of a custom source
The availability of a custom software source depends on the availability of the vendor software sources that are used to create it. For example, if a custom source uses a vendor source that's available only in OCI, then the custom source is also available only in OCI.
Automatically resolving dependencies
When creating a custom software source, you can choose to have the service automatically resolve package and module dependencies by enabling the Automatically resolve packages and module dependencies option. Dependency resolution can only include packages within vendor software sources that are part of the custom source. If a dependent package resides in an vendor source not included in the custom source, the dependent package will not be included and the custom software source creation will fail.
When using the auto-resolve option, the custom software source also includes the package dependencies of your filters or package list. Therefore, when viewing available packages, you might see packages in the custom software source not explicitly specified by your filters or package list.
Automatically updating content
When creating a custom software source, you can choose to have the service automatically update the content of the custom software source to include the latest available packages by enabling the Automatically update content option. OS Management Hub checks for updates once every 24 hours.
The service only updates content when a filter or package list doesn't specify a version (such as Include | Package | zsh
). When specifying a version (such as Include | Package | zsh | 5.5.1-6.el8
), the service ignores the auto-update option and the package remains at that specified version.
If also using the auto-resolve option, dependent packages that aren't specified in the package list or by a filter could be updated.
You can't use the auto-update option with versioned custom software sources.
For sources created with a package list or filters, you can trigger an immediate update of packages in a custom software source. See Update a Custom Software Source with the Latest Packages.
Using filters and package lists
You can use either filters or a package list to identify specific content that the custom software source contains. You define filters or a package list when creating a custom software source or when editing filters or the package list for a custom software source.
- Filters
-
Use filters to either include or exclude content to build custom software sources. The types of filters include:
- Group to specify a package group. The package groups available depend on the software sources included in the custom source.
- Module to specify a module stream and module stream profile.
- Package to specify a package name and version. The acceptable package version format is 'epoch:version-release' or 'version-release'. For example, package name:
edk2-ovmf
and package version:1:20210616-3.el8
.
If using the auto-resolve dependencies option, the custom software source also includes the package dependencies of your filters. Therefore, when viewing available packages, you might see additional packages in the custom software source not explicitly specified by your filters.
If using the auto-update option, when your filter specifies a version of a package, the option is ignored for that package and it remains at the specified version. However, when your filter specifies a package without a version, the service will update the package to the latest available version.
Additionally, you can use the latest-only option to limit packages and modules to the latest versions. This option adds only the latest version of the package or module stream within the constraints of your filters or package list.
- Package List
-
Use a package list to identify packages to include in the custom software source. See Package List Format for information on valid formatting.
The auto-update and latest-only options are ignored for packages when you provide a specific version of the package. The package version remains at the level specified in the list.
Limiting packages and modules to the latest version
When creating a custom software source, you can choose to limit the packages and modules included in the source to only the latest available versions. Enabling the Only include the latest version option adds only the latest version of the package or module stream within the constraints of your filters or package list. This gives you more control over the content of the custom software source and prevents instances from installing older versions of packages.
When using the latest-only with a package list or filter that specifies a specific version of the package, the service includes only the specified version of the package.
When the latest-only option is enabled, 'Include' filters and package lists behave as follows:
- For a package that doesn't specify a version, includes only the latest available version of the package.
- For a package that specifies a version, includes only the specified version of the package.
- For a module filter that doesn't specify a stream, includes all available streams. Within each stream, includes only the latest version of packages.
- For a module filter that specifies a stream, includes only the latest version of packages for the specified stream.
- For a group filter, includes only the latest version of packages for the group.
If also using the auto-resolve option, dependent packages that aren't constrained by the package list or by a filter are limited to the latest version available.
As an example, consider the following filters for an Oracle Linux 8 custom software source:
Filter | Packages and modules included when using latest-only option | Packages and modules included when not using latest-only option |
---|---|---|
Include | Package | zsh |
zsh-5.5.1-10.el8 (includes only the latest version of the zsh package) |
zsh-5.5.1-10.el8 zsh-5.5.1-9.el8 zsh-5.5.1-6.el8 zsh-5.5.1-6.el8_1.2 (includes all versions of the zsh package) |
Include | Package | zsh | 5.5.1-6.el8 |
zsh-5.5.1-6.el8 (includes the latest version within constraints of the filter of the zsh package) |
zsh-5.5.1-6.el8 (includes the specified version of the zsh package) |
Include | Module | maven |
maven-3.7 maven-3.6 maven-3.5 (includes only the latest version of packages within each stream) |
maven-3.7 maven-3.6 maven-3.5 (includes all versions of packages in each stream) |
Include | Module | maven | 3.6 |
maven-3.6 (includes only the latest version of packages in the stream) |
maven-3.6 (includes all versions of packages in the stream) |
Include | Group | Networking Tools |
network-tools (includes only the latest version of packages in the group) |
network-tools (includes all versions of packages in the group) |
No filters | Includes only the latest version of packages from the underlying vendor software sources. For modules, this means only the latest packages from each module stream. | Includes all versions of packages and modules in the underlying vendor software sources. |