9 Binary Package Tracking

Products and updates to them are often officially supported by a company. To allow giving such support, there is binary package tracking. This feature allows checking which exact version of a package was shipped at what time. This feature is often important for release managers, maintenance engineers, QA engineers and supporters.

OBS can track these binary packages and offer a database to search them.

9.1 Which Binaries Are Tracked?

All binaries which are released into projects providing kind=maintenance_release are tracked. In addition to that, the OBS administrator can configure additional projects via the packtrack setting in BSConfig.pm.

9.2 What Data Is Tracked?

In short the information to identify a binary, its building place and timestamps are tracked. In addition to that also information about possible successor versions or if the binary got removed in the meantime. If products do reference the repositories the search interface offers also a listing of products which are supposed to use it. Either as part of the product media itself or in one of its update repositories.

9.2.1 Binary Identifier

A binary is identified by the following information which is extracted from components of the file path of the binary:

  • Repository:  Where is the binary hosted?

  • Name:  Name of the binary file

  • Epoch:  The epoch version (optional, usually not used)

  • Version:  The version

  • Release:  The release number

  • Architecture:  The hardware architecture

  • Medium:  Name of the medium (exists only for product builds)

9.2.2 Binary Information

Additional information about a binary is information which gets updated when a binary gets added or replaced.

  • operation, got the binary added, removed or modified

  • publish time, aka the time when the repository gets published by OBS. This is not the same time as when the release action got invoked.

  • build time

  • obsolete time, exists only when a binary gets removed or replaced

  • supportstatus, meta information about the level of support which is granted for the binary at the time of releasing it.

  • updateinfo id from rpm-md repository

  • maintainer of the binary who has prepared this update

  • disturl, the exact identifier to the source and build repository

9.2.3 Product information

Additional information about products referencing to this binary.

  • updatefor: the listed products do reference the repository as update channel.

  • product: exists when the binary was part of a product medium

9.3 osc Search Interface

9.4 Web UI Search Interface

9.5 API Search Interface

The search is provided via the generic XPath search interface. It is provided below the paths:

  • /search/released/binary/id : short form, just listing the matched binary identifiers

  • /search/released/binary : long form, provides all other tracked information as described above

9.5.1 Examples

To find the latest version of given glibc-devel binary in all products. Skipping old and revoked versions:

/search/released/binary?match=@name"=glibc-devel"+and+obsolete[not(@time)]

To find a specific version by given updateinfo id. This ID is visible in the update tools to the end user:

/search/released/binary?match=updateinfo/@id="OBS-2014-42"

To find a specific version by given disturl. Used to find all affected products by a certain build of a binary:

/search/released/binary?match=disturl="obs://..."

When got the specific package version got released the first time:

/search/released/binary?match=@name='kernel-default'+and+@version='1.0'+and+@release='1'+and+@arch='i586'+and+supportstatus='l3'+and+operation='added'

All binaries in a given repository:

/search/released/binary?match=repository/[@project='BaseDistro3'+and+@name='BaseDistro3_repo']

All binaries part of a product release:

/search/released/binary?match=product/[@project='openSUSE'+and+@name='openSUSE'+and+(@arch='x86_64'+or+not(@arch))]

All binaries part of the update repositories of a product:

/search/released/binary?match=updatefor/[@project='openSUSE'+and+@product='openSUSE'+and+(@arch='x86_64'+or+not(@arch))]

All binaries part of the update repositories of a versioned product:

/search/released/binary?match=updatefor/[@project='openSUSE'+and+@product='openSUSE'+and+@version='13.2']

All binaries part of the update repositories of a versioned product (enterprise style):

/search/released/binary?match=updatefor/[@project='openSUSE'+and+@product='openSUSE'+and+@baseversion='12'+and+@patchlevel='1']
Print this page