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.
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
.
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.
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)
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
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
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
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']