Linux experts Seravo background Linux Debian SUSE
Linux-natives blog: Linux and open source – technology and strategy

Cross-distribution packaging with the Open Build Service

The Open Build Service is a great innovation that significantly lowers the barrier to package software for multiple Linux distributions. It enables building packages for many different Linux distributions at one go, both RPM and Deb based. For example the Seravo Remote support program is built via OBS for 15 different Linux distribution versions.

Seravo Remote building at the OpenSUSE Build Service

Seravo Remote building at the OpenSUSE Build Service

Actually the Open Build Service is not a service per se, and should probably be called Open Build Software, since in practice you need to install the software yourself of use some publicly available installation of it, like build.opensuse.org.

The easiest way to get started is to log in to the OBS with a browser and then work your way around clicking the easy to use interface. To create a package, simply click “Create a package” and it will start a wizard. You can build you software either by uploading a the sources files (e.g. .tar.gz) directly or you can configure a script (called source service) that OBS will periodically run and for example download the source directly from your repository (git, bzr, svn and hg supported). In addition to the actual source files you also need to have a .spec file (for RPM packages) and a .dsc (for DEB packages).

Source service options in OSB

Source service options in OSB

One cool feature about the OBS that your can also interact with it via a command line tool called osc (why not obsc or obscli?). Using osc seems familiar to anybody who has used SCM, as the commands are like osc up, osc commit, osc status etc. When using the command line client you will have local copes of the files from the remote OBS instance. Every time you make changes and commit, a new build at the remote OBS instance will be triggered. With osc you can also trigger local builds. For example the command osc build SLE_11_SP2 i586 linux-tuki-etayhteys.spec would build locally the SUSE Linux Enterprise version for 32-bit processors. Local builds are done inside chrooted environments, so it does not matter what host system you have. For example this command worked well under a 64-bit Ubuntu 12.04, building 32-bit SUSE packages!

Open Build Service command line client 'osc'

Open Build Service command line client ‘osc’

The osc tool is available in most distributions so to install it you can just run apt-get install osc, but at least in Ubuntu 12.04 the version was a bit outdated and while using it there was error messages like “Error: you need build.rpm with version 2007.3.12 or newer” and “Error: Package obs-service-tar_scm is required for this operation“. Therefore it is recommended to install the latest version directly from http://software.opensuse.org/download?package=osc&project=openSUSE%3ATools This page also showcases the OBS download page feature. If you build you program using OBS, you can directly provide the OBS as your multi-distro download page. For more information see http://software.opensuse.org/download/doc Altough in our use case we sill provide a custom manual download page (http://linux-tuki.fi/etayhteys).

Written by

Linux-natives – a blog by Linux experts from Finland – is brought to you by Seravo, a Finnish company focused on open source software and services.

Our team provides premium hosting and upkeep for your WordPress website - with open source software.

Leave a Reply

Your email address will not be published.