Skip to end of metadata
Go to start of metadata
Table of Contents

Overview

Artifactory can act as a full-fledged YUM repository (since Artifactory 2.4.0). As such, it provides:

  1. RPM metadata calculation for RPMs hosted in Artifactory local repositories.
  2. Provisioning RPMs directly from Artifactory to YUM clients.
  3. Detailed RPM metadata views from Artifactory's web UI.

Watch this short screencast to learn how easy it is to host RPMs in Artifactory.

RPM Metadata for Hosted RPMs

The RPM metadata generated by Artifactory is identical to the basic-mode output of the Red Hat-based Linux command createrepo.

A folder named repodata is created in the configured location within a local repository with the following files in it:

  • primary.xml.gz - Contains an XML file describing the primary metadata of each RPM archive.
  • filelists.xml.gz - Contains an XML file describing all the files contained within each RPM archive.
  • other.xml.gz - Contains an XML file describing miscellaneous information regarding each RPM archive.
  • repomd.xml - Contains information regarding all the other metadata files.

YUM Support is Platform Independent!

Artifactory employes a pure Java-based RPM metadata calculation.

It does not rely on the existence of the createrepo binary or on running external processes on the host upon which Artifactory is running.

Triggering RPM Metadata Updates

When enabled, the calculation is run in a number of ways:

  1. Automatically when deploying/removing/copying/moving an RPM file.
  2. Automatically when performing content import (both system and repository imports).
  3. Manually via "Calculate Now" in the local repository YUM configuration tab.
  4. Manually via Artifactory's REST-API.

The produced metadata is served to YUM clients.

Metadata calculation cleans up pre-existing YUM metadata (existing as a result of manual deployment or import), including RPM metdata stored as SQLite database files.

Configuration

To enable RPM metadata calculation on a local repository click on the Admin tab and then Configuration -> Repositories.  Select the repository as described in local repository configuration and select the Packages tab.

The Depth field tells Artifactory under which level of directory to search for RPMs and save the repodata directory.

0 is the default and refers to the repository's root folder; the calculator searches the entire repository for RPMs and save the repodata directory at $REPO-KEY/repodata.

Using a different depth is useful in cases where generating metadata for a repository separates its artifacts by name, version and architecture.

For example:
If the repository layout is similar to that shown below and you want to generate RPM metadata for every artifact divided by name, set the Depth to 1 and the repodata directory is saved at REPO_ROOT/ARTIFACT_NAME/repodata :

Metadata calculation is throttled per metadata base-folder and is asynchronous; Artifactory invokes the actual calculation only after a certain "quiet period" following an action involving update or removal of an RPM file.

For this reason, the creation of the metadata normally occurs 1-2 minutes after an RPM-related action has been completed.

YUM Groups

Artifactory supports attaching a YUM Group file upon YUM calculation, essentially mimic the createrepo -g command.

The process of attaching YUM group metadata to a local repository is simple:

  1. Create an xml file in the groups format used by YUM, you can either open a text editor and create the groups xml file manually or you can run the yum-groups-manager command from yum-utils
  2. Deploy the created group file to the 'repodata' folder, Artifactory will automatically perform the following steps:
    • Create the corresponding gz file and deploy it next to the deployed xml group fie.
    • Invoke YUM calculation on the local repository. 
    • Attach the group information (both the xml and the gz file) to the repomd.xml file.
  3. Make sure the group file names are listed under the Packages tab, this tells Artifactory the files to be attached as a repository group information.

This is how the local repository appears after deploying a 'groups.xml' group metadata file to it ('repodata' is calculated on depth 0):


 

The YUM Group File Names is a comma-separated list of xml group file names, each depth of 'repodata' in your repository may contain different group file name but each 'repodata' may contain only 1 group file metadata (multiple groups should be listed as different tags inside the xml file as stated in the YUM Docs).

Viewing Individual RPM Information

It is also possible to view all the metadata that annotates an RPM by choosing the RPM file in Artifactory's tree browser and selecting the RPM Info tab:

Metadata Fields as Properties

The corresponding RPM metadata fields are automatically added as properties of an RPM artifact in Yum repositories accessed through Artifactory:

  • rpm.metadata.name

  • rpm.metadata.arch

  • rpm.metadata.version

  • rpm.metadata.release

  • rpm.metadata.epoch

  • rpm.metadata.group

  • rpm.metadata.vendor

  • rpm.metadata.summary

Properties can be used for searching and other functions. For more details please refer to Properties.

 

 

 

 

  • No labels