Setting up Repositories¶
A crucial part of each appliance is the repository
selection. KIWI NG allows the end user to completely customize the selection
of repositories and packages via the
KIWI NG installs packages into your appliance from the repositories defined in the image description. Therefore at least one repository must be defined, as KIWI NG will otherwise not be able to fetch any packages.
A repository is added to the description via the
which is a child of the top-level
<image schemaversion="7.2" name="Leap-15.1_appliance"> <!-- snip --> <repository type="rpm-md" alias="kiwi" priority="1"> <source path="obs://Virtualization:Appliances:Builder/openSUSE_Leap_15.1"/> </repository> <repository type="rpm-md" alias="OS" imageinclude="true"> <source path="obs://openSUSE:Leap:15.1/standard"/> </repository> </image>
In the above snippet we defined two repositories:
The repository belonging to the KIWI NG project: obs://Virtualization:Appliances:Builder/openSUSE_Leap_15.1 at the Open Build Service (OBS)
The RPM repository belonging to the OS project: obs://openSUSE:Leap:15.1/standard, at the Open Build Service (OBS). The translated http URL will also be included in the final appliance.
repository element accepts one
source child element, which
contains the URL to the repository in an appropriate format and the
following optional attributes:
imageinclude: Specify whether this repository should be added to the resulting image, defaults to false.
imageonly: A repository with
imageonly="true"will not be available during image build, but only in the resulting appliance. Defaults to false.
priority: An integer priority for all packages in this repository. If the same package is available in more than one repository, then the one with the highest priority is used.
alias: Name to be used for this repository, it will appear as the repository’s name in the image, which is visible via
dnf repolist. KIWI NG will construct an alias from the path in the
sourcechild element (replacing each
_), if no value is given.
repository_gpgcheck: Specify whether or not this specific repository is configured to to run repository signature validation. If not set, the package manager’s default is used.
package_gpgcheck: Boolean value that specifies whether each package’s GPG signature will be verified. If omitted, the package manager’s default will be used
components: Distribution components used for
debrepositories, defaults to
distribution: Distribution name information, used for deb repositories.
profiles: List of profiles to which this repository applies.
Supported repository paths¶
The actual location of a repository is specified in the
repository via its only attribute
path. KIWI NG supports the
following paths types:
ftp://URL: a URL to the repository available via HTTP(s) or FTP.
obs://$PROJECT/$REPOSITORY: evaluates to the repository
$REPOSITORYof the project
$PROJECTavailable on the Open Build Service (OBS). By default KIWI NG will look for projects on build.opensuse.org, but this can be overridden using the runtime configuration file (see The Runtime Configuration File). Note that it is not possible to add repositories using the
obs://path from different OBS instances (use direct URLs to the
.repofile instead in this case).
obsrepositories:/: special path only available for builds using the Open Build Service. The repositories configured for the OBS project in which the KIWI NG image resides will be available inside the appliance. This allows you to configure the repositories of your image from OBS itself and not having to modify the image description.
file:///path/to/file: an absolute path to a local directory or file available on the host building the appliance.
iso:///path/to/image.iso: the specified ISO image will be mounted during the build of the KIWI NG image and a repository will be created pointing to the mounted ISO.