{"id":8151,"date":"2024-11-24T18:45:53","date_gmt":"2024-11-24T17:45:53","guid":{"rendered":"https:\/\/www.credativ.de\/?p=8151"},"modified":"2025-11-24T18:46:09","modified_gmt":"2025-11-24T17:46:09","slug":"open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution","status":"publish","type":"post","link":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/","title":{"rendered":"Open Build Service &#8211; Utility to build and publish updated packages of an EOL distribution"},"content":{"rendered":"<h2><strong>Introduction<\/strong><\/h2>\n<p>When it comes to providing extended support for end-of-life (EOL) Linux distributions, the traditional method of building packages from sources may present certain challenges. One of the biggest challenges is the need for individual developers to install build dependencies on their own build environments. This often leads to different build dependencies being installed, resulting in issues related to binary compatibility. Additionally, there are other challenges to consider, such as establishing an isolated and clean build environment for different package builds in parallel, implementing an effective package validation strategy, and managing repository publishing, etc.<\/p>\n<p>To overcome these challenges, it is highly recommended to have a dedicated build infrastructure that enables the building of packages in a consistent and reproducible way. With such an infrastructure, teams can address these issues effectively, and ensures that the necessary packages and dependencies are available, eliminating the need for individual developers to manage their own build environments.<\/p>\n<p>OpenSUSE&#8217;s <a href=\"https:\/\/github.com\/openSUSE\/open-build-service\">Open Build Service (OBS)<\/a> provides a widely recognized <a href=\"https:\/\/build.opensuse.org\">public build infrastructure<\/a> that supports RPM-based, Debian-based, and Arch-based package builds. This infrastructure is well-regarded among users who require customized package builds on major Linux distributions. Additionally, OBS can be deployed as a <a href=\"https:\/\/en.opensuse.org\/openSUSE:Build_Service_private_installation\">private instance<\/a>, offering a robust solution for organizations engaged in private software package builds. With its extensive feature set, OBS serves as a comprehensive build infrastructure that meets the requirements of teams to build security-patched package on top of already existing packages in order to extend the support of end-of-life (EOL) Linux distributions, for example.<\/p>\n<h2>Facts<\/h2>\n<p>On June 30, 2024, two major Linux distributions, <a href=\"https:\/\/www.debian.org\/\">Debian<\/a> <a href=\"https:\/\/www.debian.org\/News\/2024\/20240615\">10 <em>&#8220;Buster&#8221;<\/em><\/a>\u00a0and <a href=\"https:\/\/www.centos.org\/\">CentOS<\/a> <a href=\"https:\/\/blog.centos.org\/2023\/04\/end-dates-are-coming-for-centos-stream-8-and-centos-linux-7\/\">7<\/a>, have reached their End-of-Life (EOL) status. These distributions gained widespread adoption in numerous large enterprise environments. However, due to various factors, organizations may face challenges in completing migration processes in a timely manner, requiring temporary extended support for these distributions.<\/p>\n<p>When a distribution reaches its End-of-Life (EOL) support from upstream, mirrors and corresponding infrastructure are typically <a href=\"http:\/\/mirror.centos.org\/centos-7\/7.9.2009\/\">removed<\/a>. This creates a significant challenge for organizations still using those distributions and seeking extended support, as they not only require access to a local offline mirror but also need the infrastructure to rebuild packages in such a way that is consistent with their former original upstream builds whenever there is a need to rebuild packages for security reasons.<\/p>\n<h2>Goal<\/h2>\n<p>To provide utilities that support teams building packages, OBS is able to help them. Thereby, it also helps them to have a build infrastructure that builds all existing source and binary packages along with their security patches in a semi-original build environment, further extending their support of EOL Linux distributions. This is achieved by keeping package builds at a similar level of quality and compatibility to their former original upstream builds.<\/p>\n<h2>Requirements<\/h2>\n<p>To achieve the goal mentioned above, two essential components are required:<\/p>\n<ol>\n<li>Local mirror of the EOL Linux distribution<\/li>\n<li>Private OBS instance.<\/li>\n<\/ol>\n<p>In order to set up a <a href=\"https:\/\/en.opensuse.org\/openSUSE:Build_Service_private_installation\">private OBS instance<\/a>, you can fetch OBS from the <a href=\"https:\/\/github.com\/openSUSE\/open-build-service\">upstream GitHub repository<\/a> and install as well as build it on your local machine, or alternatively, you can simply download the <a href=\"https:\/\/openbuildservice.org\/download\/\">OBS Appliance Installer<\/a> to integrate a private OBS instance as a new build infrastructure.<\/p>\n<p>Keep in mind that the local mirror typically doesn&#8217;t contain the security patches to properly extend the support of the EOL distribution. Just rebuilding the existing packages won&#8217;t automatically extend the support of such distributions. Either those security patches must be maintained by the teams themselves and added to the package update by hand, or they are obtained from an upstream project that provides those patches already.<\/p>\n<p>Nevertheless, once the private OBS instance is successfully installed, it can then be linked with the local offline mirror that the team wants to extend the support for, and be configured as a semi-original build environment. By doing so, the build environment can be configured as close as possible to the original upstream build environment to keep a similar level of quality and compatibility although packages might get built for security update with new patches.<\/p>\n<p class=\"p1\">This way, the already ended support of a Linux distribution can be extended because a designated team can not only build packages on their own but also provide patches for packages that are affected by bugs or security vulnerabilities.<\/p>\n<h2>Achievement<\/h2>\n<p>The OBS build infrastructure provides a semi-original build environment to simplify the package building process, reduce inconsistencies, and achieve reproducibility. By adopting this approach, teams can simplify their development and testing workflows and enhance the overall quality and reliability of the generated packages.<\/p>\n<h2>Demonstrates<\/h2>\n<p>Allow us to demonstrate how OBS can be utilized as a build infrastructure for teams in order to provide the build and publish infrastructure needed for extending the support of End-of-Life (EOL) Linux distributions. However, <strong>please note that the following examples are purely for demonstration purposes and may not precisely reflect the specific approach.<\/strong><\/p>\n<h4><strong>Config OBS<\/strong><\/h4>\n<p>Once your private OBS instance is set up, you can log in to OBS by using its WebUI. You must use the &#8216;<strong>Admin<\/strong>&#8216; account with its default password &#8216;<em>opensuse<\/em>&#8216;. After that, you can create a new project for the EOL Linux distribution as well as add users and groups for teams that are going to work on this project. In addition, you must link your project with a local mirror of the EOL Linux distribution and customize your OBS project to replicate the former upstream build environment.<\/p>\n<p>OBS supports the <strong>Download on Demand (DoD)<\/strong> feature that can establish a connection with a local mirror on the OBS instance with the designated project within OBS to fetch build dependencies on-demand during the build process. This simplifies the build workflow and reduces the need for manual intervention.<\/p>\n<p>Note: some configurations are only available with the Admin account, including <strong>Manage Users,<\/strong> <strong>Groups <\/strong>and <strong>Add Download on Demand (DoD) Repository<\/strong>.<\/p>\n<p>Now, let&#8217;s dive into the OBS configuration of such a project.<\/p>\n<h4>Where to Add DoD Repository<\/h4>\n<p>After you created a new project in OBS, you may find the &#8220;<strong>Add DoD Repository&#8221;<\/strong> option in the Repositories tab under the &#8216;Admin&#8217; account.<\/p>\n<p>There, you must click the Add DoD Repository button as shown below:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8147\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png\" alt=\"Add DoD Repository in Reposotory tab on private OBS instance.\" width=\"646\" height=\"171\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png 646w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository-300x79.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository-600x159.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository-180x48.png 180w\" sizes=\"auto, (max-width: 646px) 100vw, 646px\" \/><\/p>\n<h4>Link your local mirror via DoD<\/h4>\n<p>Next, you can provide a URL to link your local mirror via &#8220;<strong>Add DoD Repository<\/strong>&#8220;.<\/p>\n<p class=\"p1\">By doing so, you are going to configure the DoD repository. For this, you have to:<\/p>\n<ul>\n<li class=\"p1\">Name the DoD Repo<\/li>\n<li class=\"p1\">Provide a URL that points to the local mirror that is going to be used as a base for building packages in our project<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8149 size-medium\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/12-internal-mirror-dod-repository-231x300.png\" alt=\"Configure local mirror as DoD repository.\" width=\"231\" height=\"300\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/12-internal-mirror-dod-repository-231x300.png 231w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/12-internal-mirror-dod-repository-180x234.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/12-internal-mirror-dod-repository.png 495w\" sizes=\"auto, (max-width: 231px) 100vw, 231px\" \/><\/p>\n<p>The <strong>build dependencies<\/strong> should now be available for OBS to download automatically via the DoD feature.<\/p>\n<p>As you can see in the example below, OBS was able to fetch all the build dependencies for the shown &#8220;kernel&#8221; package via DoD before it actually started to build the package:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8123 size-large\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/01-fetch-build-deps-via-dod-1024x452.png\" alt=\"Download on Demand(DoD): fetching build dependencies packages from offline local mirror.\" width=\"1024\" height=\"452\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/01-fetch-build-deps-via-dod-1024x452.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/01-fetch-build-deps-via-dod-300x132.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/01-fetch-build-deps-via-dod-768x339.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/01-fetch-build-deps-via-dod-600x265.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/01-fetch-build-deps-via-dod-180x79.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/01-fetch-build-deps-via-dod.png 1276w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>However, after you connected the local mirror with the EOL Linux Distribution, we should also customize the project configuration to re-create the semi-original build environment of the former upstream project in our OBS project.<\/p>\n<h4>Project Config<\/h4>\n<p>OBS offers a <strong>customizable build environment<\/strong> via <strong>Project Config<\/strong>, allowing teams to meet specific project requirements.<\/p>\n<p class=\"p1\">It allows teams to customize the build environment through the project configuration, enabling them to define macros, packages, flags, and other build-related settings. This helps to adapt their project to all requirements needed to keep the compatibility with the original packages.<\/p>\n<p>You can find the Project Config here:<\/p>\n<p><em><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8152\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/13-project-config.png\" alt=\"OBS offers a customizable build environment.\" width=\"767\" height=\"172\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/13-project-config.png 767w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/13-project-config-300x67.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/13-project-config-600x135.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/13-project-config-180x40.png 180w\" sizes=\"auto, (max-width: 767px) 100vw, 767px\" \/><br \/>\n<\/em><\/p>\n<p class=\"p1\">Let&#8217;s have a closer look at some examples showing how the project configuration could look like for building RPM-based packages or Debian-based packages.<\/p>\n<p class=\"p1\">Depending on the actual package type that has been used by the EOL Linux distribution, the project configuration must be adjusted accordingly.<\/p>\n<p><strong>RPM-based config<\/strong><br \/>\nHere is an example for an RPM-based distribution where you can define macros, packages, flags, and other build-related settings.<\/p>\n<p>Please note that this example is only for demonstration purposes:<\/p>\n<p><em><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-8154\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/14-project-config-content-1024x759.png\" alt=\"Project config may looks like.\" width=\"1024\" height=\"759\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/14-project-config-content-1024x759.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/14-project-config-content-300x222.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/14-project-config-content-768x569.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/14-project-config-content-600x445.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/14-project-config-content-180x133.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/14-project-config-content.png 1085w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/em><\/p>\n<h4>Debian based config<\/h4>\n<p>Then, there is another example for Debian-based distribution where you can specify <strong>Repotype: debian<\/strong>, define preinstalled packages, and build-related settings in the build environment.<\/p>\n<p>Again, please note that this example is for demonstration purposes only:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-8139\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/09-Customized-build-environment-1024x712.png\" alt=\"Customizable Build Environment.\" width=\"1024\" height=\"712\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/09-Customized-build-environment-1024x712.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/09-Customized-build-environment-300x209.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/09-Customized-build-environment-768x534.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/09-Customized-build-environment-600x417.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/09-Customized-build-environment-180x125.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/09-Customized-build-environment.png 1117w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>As you can see in the examples above, the <strong><code>Repotype<\/code><\/strong> defines the repository format for the published repositories. <strong>Preinstall<\/strong> defines packages that should be available in the build environment while building other packages. You may find more details about the syntax in the <a href=\"https:\/\/www.open-build-service.org\/help\/manuals\/obs-user-guide\/cha-obs-prjconfig\">Build Configuration<\/a> chapter in the manual provided by OpenSuSE.<\/p>\n<p>With this customizable build environment feature, each build starts in a clean chroot or KVM environment, providing consistency and reproducibility in the build process. Teams may have different build environments in different projects that are isolated and can be built in parallel. The separated projects together, with dedicated chroot or KVM environments for building packages prevent interference or conflicts between builds.<\/p>\n<h4><strong>User Management<\/strong><\/h4>\n<p>In addition to projects, OBS offers flexible access control, allowing team members to have different roles and permissions for various projects or distributions. This ensures efficient collaboration and streamlined workflow management.<\/p>\n<p>To use this feature properly, we must create Users and Groups by using the <strong>Admin<\/strong> account in OBS. You may find the &#8216;<strong>Users<\/strong>&#8216; tab within the project where you can add users and groups with different roles.<\/p>\n<p>The following example shows how to add users and groups in a given project:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8121 size-large\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/00-Builtin-Acess-control-1024x513.png\" alt=\"Built-in Access Control: different users and groups in different roles.\" width=\"1024\" height=\"513\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/00-Builtin-Acess-control-1024x513.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/00-Builtin-Acess-control-300x150.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/00-Builtin-Acess-control-768x385.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/00-Builtin-Acess-control-600x301.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/00-Builtin-Acess-control-180x90.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/00-Builtin-Acess-control.png 1275w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><strong>Flexible Project Setup<\/strong><\/p>\n<p>OBS allows teams to create separate projects for development, staging, and publishing purposes. This controlled workflow ensures thorough testing and validation of packages before they are submitted to the production project for publishing.<\/p>\n<h4>Testing Strategy with Projects<\/h4>\n<p>Before packages are released and published, proper testing of those packages is crucial. To achieve this, OBS offers repository publish integration that helps to implement a <strong>Testing Strategy<\/strong>. Developers may get their packages published in a corresponding <strong>Staging<\/strong> repository first before starting the validation process of the packages, so that they can be submitted to the <strong>Production<\/strong> project. From there, they will then be published and made available to other systems.<\/p>\n<p>It seamlessly integrates with local repository publishing, ensuring that all packages in the build process are readily available. This eliminates the need for additional configuration on internal or external repositories.<\/p>\n<p>The next example shows a &#8216;home:andrew:internal-os:10:staging&#8217; project, which is used as a staging purposed repository. There, we import the nginx source package to build and validate it afterward.<\/p>\n<h4>Start the Build Process<\/h4>\n<p>Once the build dependencies are downloaded via DoD, the build process starts automatically.<\/p>\n<p><em><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-8137\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1024x677.jpg\" alt=\"Bootstrap in clean chroot or KVM environment and start the build process. Shows the progress via webui.\" width=\"1024\" height=\"677\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1024x677.jpg 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-300x198.jpg 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-768x508.jpg 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-600x397.jpg 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-180x119.jpg 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build.jpg 1268w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/em><\/p>\n<p>As soon as the build process for a package like &#8216;nginx&#8217; succeeds, we will also see it in the interface:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8125 size-large\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/03-staging-build-result-on-webui-1024x545.jpg\" alt=\"Staging repo: Build Result on WebUI.\" width=\"1024\" height=\"545\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/03-staging-build-result-on-webui-1024x545.jpg 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/03-staging-build-result-on-webui-300x160.jpg 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/03-staging-build-result-on-webui-768x409.jpg 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/03-staging-build-result-on-webui-600x320.jpg 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/03-staging-build-result-on-webui-180x96.jpg 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/03-staging-build-result-on-webui.jpg 1273w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Last but not least, the package will automatically be published into a repository that is ready to be used with package managers like YUM. In our test case, the YUM-ready repository helps us to easily perform <strong>validation<\/strong> by conducting <strong>tests<\/strong> on VM or actual hardware.<\/p>\n<p>Below, you can see an example of this staging repository (Index of the YUM-ready staging repository):<em><br \/>\n<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8127 size-large alignnone\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/04-auto-published-staging-repo-1024x267.png\" alt=\"Repository Publish Integration: automatically published in staging repo once package builds.\" width=\"1024\" height=\"267\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/04-auto-published-staging-repo-1024x267.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/04-auto-published-staging-repo-300x78.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/04-auto-published-staging-repo-768x200.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/04-auto-published-staging-repo-600x156.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/04-auto-published-staging-repo-180x47.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/04-auto-published-staging-repo.png 1277w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Please note: To meet the testing strategy in our example, packages should only be submitted to the <strong>Prod project<\/strong> once they have successfully passed the <strong>validation<\/strong> process in the <strong>Staging repository<\/strong>.<\/p>\n<h4>Submit to Prod after Validation<\/h4>\n<p>As soon as we validate the functionality of a package in the staging project and repository, we can move on by submitting the package to the production project. Underneath the package overview page (e.g., in our case, the &#8216;nginx&#8217; package), you can find the <strong>Submit Package<\/strong> button to start this process:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8200\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/15-submit-package.png\" alt=\"Submit package\" width=\"713\" height=\"239\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/15-submit-package.png 713w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/15-submit-package-300x101.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/15-submit-package-600x201.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/15-submit-package-180x60.png 180w\" sizes=\"auto, (max-width: 713px) 100vw, 713px\" \/><\/p>\n<p>In our example, we use the &#8216;internal-os:10:prod&#8217; project for the <strong>Production<\/strong> repository. Previously, we <strong>built<\/strong> and <strong>validated<\/strong> the &#8216;nginx&#8217; package in the <strong>Staging <\/strong>repository. Now we want to submit this package into the <strong>Production<\/strong><strong>\u00a0project<\/strong> which we call &#8216;internal-os:10:prod&#8217;.<\/p>\n<p>Once you click &#8220;<strong>Submit package<\/strong>&#8220;, the following dialog should pop up. Here, you can fill out the form to submit the newly built package to production:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8129 size-full\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/05-submit-staging-to-prod.png\" alt=\"Submit a package from staging to prod.\" width=\"498\" height=\"768\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/05-submit-staging-to-prod.png 498w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/05-submit-staging-to-prod-195x300.png 195w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/05-submit-staging-to-prod-180x278.png 180w\" sizes=\"auto, (max-width: 498px) 100vw, 498px\" \/><\/p>\n<p>Fill out this form and click &#8216;Create&#8217; as soon as you are ready to submit the new package to the production project.<\/p>\n<h4>Find Requests<\/h4>\n<p>Next to submitting a package, a so-called repository master must approve the newly created requests for the designated project. This master can find a list of all requests in the <strong>Requests <\/strong>tab, where he\/she can do the <strong>Request Review Control<\/strong>.<\/p>\n<p>The master can find &#8216;<strong>Requests<\/strong>&#8216; in the project overview page like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-8202\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/16-Requests.png\" alt=\"See Requests\" width=\"512\" height=\"252\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/16-Requests.png 512w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/16-Requests-300x148.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/16-Requests-180x89.png 180w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/p>\n<p>Here, you can see an example of a package that was submitted from Staging to the Prod project.<\/p>\n<p>The master must click on the link marked with a red circle to perform the <strong>Request Review Control<\/strong>:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-8204\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/17-Request-list-1024x371.png\" alt=\"List of Requests\" width=\"1024\" height=\"371\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/17-Request-list-1024x371.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/17-Request-list-300x109.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/17-Request-list-768x278.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/17-Request-list-600x217.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/17-Request-list-180x65.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/09\/17-Request-list.png 1105w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>This will bring up the interface for <strong>Request Review Control<\/strong>, in which the <strong>repository master<\/strong> from the production project may <strong>decline<\/strong> or <strong>accept<\/strong> the package request:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-8131\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/06-review-by-repo-master-1024x549.png\" alt=\"Review by prod repo master to accept or decline.\" width=\"1024\" height=\"549\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/06-review-by-repo-master-1024x549.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/06-review-by-repo-master-300x161.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/06-review-by-repo-master-768x412.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/06-review-by-repo-master-600x322.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/06-review-by-repo-master-180x97.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/06-review-by-repo-master.png 1277w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>Reproduce in Prod Project<\/h4>\n<p>Once the package is accepted into the production project, it will automatically download all required dependencies from DoD, and reproduce the build process.<\/p>\n<p>The example below shows the successfully built package in the production repo after the build process has been completed:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-8133\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/07-prod-build-result-on-webui-1024x425.png\" alt=\"Prod repo: See Build Result on WebUI.\" width=\"1024\" height=\"425\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/07-prod-build-result-on-webui-1024x425.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/07-prod-build-result-on-webui-300x125.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/07-prod-build-result-on-webui-768x319.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/07-prod-build-result-on-webui-600x249.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/07-prod-build-result-on-webui-180x75.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/07-prod-build-result-on-webui.png 1277w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h4>Publish to YUM-ready repository for Prod<\/h4>\n<p>Finally, the package will then also be <strong>published<\/strong> to the YUM-ready <strong>Prod repository<\/strong> as soon as the package has been built successfully. Here, you can see an example of the YUM-ready Prod repository that OBS handles.<\/p>\n<p>(Note: you can name the project and repository name on your preferences):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-8135 size-large\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/08-auto-published-prod-repo-1024x305.png\" alt=\"Automatically published to prod repo once package builds\" width=\"1024\" height=\"305\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/08-auto-published-prod-repo-1024x305.png 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/08-auto-published-prod-repo-300x89.png 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/08-auto-published-prod-repo-768x229.png 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/08-auto-published-prod-repo-600x179.png 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/08-auto-published-prod-repo-180x54.png 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/08-auto-published-prod-repo.png 1279w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2><strong>Extras<br \/>\n<\/strong><\/h2>\n<p>In this chapter, we want to have a look at some possible extra customizations for OBS in your build infrastructures.<\/p>\n<h4>Automated Build Pipelines<\/h4>\n<p>OBS supports automated builds that may seamlessly integrate into delivery pipelines. Teams can set up CI triggers to commit new packages into OBS to initiate builds automatically based on predefined criteria, reducing manual effort and ensuring timely delivery of updated packages.<\/p>\n<p>Packages get automated builds when committed into an OBS project, which enables administrators to easily integrate automated builds via pipelines:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-8143\" src=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1-1024x677.jpg\" alt=\"Package got automated builds when committed into an OBS project. Easily to integrate into a delivery pipelines.\" width=\"1024\" height=\"677\" srcset=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1-1024x677.jpg 1024w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1-300x198.jpg 300w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1-768x508.jpg 768w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1-600x397.jpg 600w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1-180x119.jpg 180w, https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/02-automaticlly-build-1.jpg 1268w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><strong>OBS Worker<\/strong><\/p>\n<div class=\"page\" title=\"Page 5\">\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<p>Further, the Open Build Service is capable of configuring multiple workers (builders) in multiple architectures. If you want to build with other architectures, just install the &#8216;obs-worker&#8217; package on another hardware with a different architecture and then simply edit the <span class=\"strong\"><strong>\/etc\/sysconfig\/obs-server<\/strong><\/span> file.<\/p>\n<p>In that file, you must set at least those parameters on the worker node:<\/p>\n<ul>\n<li><strong>OBS_SRC_SERVER<\/strong><\/li>\n<li><span class=\"strong\"><strong>OBS_REPO_SERVERS<\/strong><\/span><\/li>\n<li><span class=\"strong\"><strong>OBS_WORKER_INSTANCES<\/strong><\/span><\/li>\n<\/ul>\n<p>This method may also be useful if you want to have more workers in the same architecture available in OBS. The <a href=\"https:\/\/build.opensuse.org\/monitor\">OpenSUSE&#8217;s public OBS instance<\/a> has a large-scale setup which is a good example of this.<\/p>\n<p><strong>Emulated Build<\/strong><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>In Open Build Service, it is also possible to configure emulated builds for cross-architecture build capabilities via QEMU. By using this feature, almost no changes are needed in package sources. Developers can build on target architectures without the need for other hardware architectures to be available. However, you might encounter problems with bugs or missing support in QEMU, and emulation may slow down the build process significantly. For instance, see how OpenSuSE managed this on <a href=\"https:\/\/en.opensuse.org\/openSUSE:RISC-V#Build_Service\">RISC-V<\/a> when they didn&#8217;t have the real hardware in the initial porting stage.<\/p>\n<div class=\"section\">\n<div class=\"layoutArea\">\n<div class=\"column\">\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Integrating a <strong>private OBS instance<\/strong> as the <strong>build infrastructure<\/strong> provides teams a robust and comprehensive solution to build security-patched package for extended support of end-of-life (EOL) Linux distributions. By doing so, teams can unify the package building process, reduce inconsistencies, and achieve reproducibility. This approach simplifies the development and testing workflow while enhancing the overall quality and reliability of the generated packages. Additionally, by replicating the <strong>semi-original build environment<\/strong>, the resulting packages builds in the similar level of quality and compatibility to upstream builds.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>If you are interested in integrating a private build infrastructure, or require extended support for any EOL Linux distribution. Please reach out to us. Our team is equipped with the expertise to assist you in integrating a private OBS instance into your exist infrastructure.<\/p>\n<p><em>This article was originally written by Andrew Lee.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction When it comes to providing extended support for end-of-life (EOL) Linux distributions, the traditional method of building packages from sources may present certain challenges. One of the biggest challenges is the need for individual developers to install build dependencies on their own build environments. This often leads to different build dependencies being installed, resulting [&hellip;]<\/p>\n","protected":false},"author":90,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_improvement_type_select":"improve_an_existing","_thumb_yes_seoaic":false,"_frame_yes_seoaic":false,"seoaic_generate_description":"","seoaic_improve_instructions_prompt":"","seoaic_rollback_content_improvement":"","seoaic_idea_thumbnail_generator":"","thumbnail_generated":false,"thumbnail_generate_prompt":"","seoaic_article_description":"","seoaic_article_subtitles":[],"footnotes":""},"categories":[3,1883],"tags":[1775,1842,2145,2144,2143],"class_list":["post-8151","post","type-post","status-publish","format-standard","hentry","category-credativ-inside","category-debian-en","tag-debian-en","tag-linux-en","tag-obs","tag-open-build-server","tag-open-build-service"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Open Build Service - Utility to build and publish updated packages of an EOL distribution - credativ\u00ae<\/title>\n<meta name=\"description\" content=\"The Open Build Service supports a clean and isolated environment for parallel package development in Linux.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Open Build Service - Utility to build and publish updated packages of an EOL distribution\" \/>\n<meta property=\"og:description\" content=\"The Open Build Service supports a clean and isolated environment for parallel package development in Linux.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/\" \/>\n<meta property=\"og:site_name\" content=\"credativ\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/credativDE\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-24T17:45:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-24T17:46:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png\" \/>\n\t<meta property=\"og:image:width\" content=\"646\" \/>\n\t<meta property=\"og:image:height\" content=\"171\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"credativ Redaktion\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@credativde\" \/>\n<meta name=\"twitter:site\" content=\"@credativde\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"credativ Editorial Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/\"},\"author\":{\"name\":\"credativ Redaktion\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/63430ac9e022ccceba0f8d53ffe6db12\"},\"headline\":\"Open Build Service &#8211; Utility to build and publish updated packages of an EOL distribution\",\"datePublished\":\"2024-11-24T17:45:53+00:00\",\"dateModified\":\"2025-11-24T17:46:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/\"},\"wordCount\":2635,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/11-add-dod-repository.png\",\"keywords\":[\"Debian\",\"Linux\",\"OBS\",\"Open Build Server\",\"open build service\"],\"articleSection\":[\"credativ\u00ae Inside\",\"Debian\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#respond\"]}],\"copyrightYear\":\"2024\",\"copyrightHolder\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/\",\"name\":\"Open Build Service - Utility to build and publish updated packages of an EOL distribution - credativ\u00ae\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/11-add-dod-repository.png\",\"datePublished\":\"2024-11-24T17:45:53+00:00\",\"dateModified\":\"2025-11-24T17:46:09+00:00\",\"description\":\"The Open Build Service supports a clean and isolated environment for parallel package development in Linux.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/11-add-dod-repository.png\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/11-add-dod-repository.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Open Build Service &#8211; Utility to build and publish updated packages of an EOL distribution\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"name\":\"credativ GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Organization\",\"Place\"],\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#organization\",\"name\":\"credativ\u00ae\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/\",\"logo\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#local-main-organization-logo\"},\"image\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#local-main-organization-logo\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/credativDE\\\/\",\"https:\\\/\\\/x.com\\\/credativde\",\"https:\\\/\\\/mastodon.social\\\/@credativde\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/credativ-gmbh\",\"https:\\\/\\\/www.instagram.com\\\/credativ\\\/\"],\"description\":\"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\\\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.\",\"legalName\":\"credativ GmbH\",\"foundingDate\":\"2025-03-01\",\"duns\":\"316387060\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"11\",\"maxValue\":\"50\"},\"address\":{\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#local-main-place-address\"},\"geo\":{\"@type\":\"GeoCoordinates\",\"latitude\":\"51.1732374\",\"longitude\":\"6.392010099999999\"},\"telephone\":[\"+4921619174200\",\"08002733284\"],\"contactPoint\":{\"@type\":\"ContactPoint\",\"telephone\":\"08002733284\",\"email\":\"vertrieb@credativ.de\"},\"openingHoursSpecification\":[{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\"],\"opens\":\"09:00\",\"closes\":\"17:00\"},{\"@type\":\"OpeningHoursSpecification\",\"dayOfWeek\":[\"Saturday\",\"Sunday\"],\"opens\":\"00:00\",\"closes\":\"00:00\"}],\"email\":\"info@credativ.de\",\"areaServed\":\"D-A-CH\",\"vatID\":\"DE452151696\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/#\\\/schema\\\/person\\\/63430ac9e022ccceba0f8d53ffe6db12\",\"name\":\"credativ Redaktion\",\"description\":\"Dieser Account dient als Sammelpunkt f\u00fcr die wertvollen Beitr\u00e4ge ehemaliger Mitarbeiter von credativ. Wir bedanken uns f\u00fcr ihre gro\u00dfartigen Inhalte, die das technische Wissen in unserem Blog \u00fcber die Jahre hinweg bereichert haben. Ihre Artikel bleiben hier weiterhin f\u00fcr unsere Leser zug\u00e4nglich.\"},{\"@type\":\"PostalAddress\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#local-main-place-address\",\"streetAddress\":\"Hennes-Weisweiler-Allee 23\",\"addressLocality\":\"M\u00f6nchengladbach\",\"postalCode\":\"41179\",\"addressRegion\":\"Deutschland\",\"addressCountry\":\"DE\"},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.credativ.de\\\/en\\\/blog\\\/credativ-inside\\\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\\\/#local-main-organization-logo\",\"url\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"contentUrl\":\"https:\\\/\\\/www.credativ.de\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/credativ-logo-right.svg\",\"caption\":\"credativ\u00ae\"}]}<\/script>\n<meta name=\"geo.placename\" content=\"M\u00f6nchengladbach\" \/>\n<meta name=\"geo.position\" content=\"51.1732374;6.392010099999999\" \/>\n<meta name=\"geo.region\" content=\"Germany\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Open Build Service - Utility to build and publish updated packages of an EOL distribution - credativ\u00ae","description":"The Open Build Service supports a clean and isolated environment for parallel package development in Linux.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/","og_locale":"en_US","og_type":"article","og_title":"Open Build Service - Utility to build and publish updated packages of an EOL distribution","og_description":"The Open Build Service supports a clean and isolated environment for parallel package development in Linux.","og_url":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/","og_site_name":"credativ\u00ae","article_publisher":"https:\/\/www.facebook.com\/credativDE\/","article_published_time":"2024-11-24T17:45:53+00:00","article_modified_time":"2025-11-24T17:46:09+00:00","og_image":[{"width":646,"height":171,"url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png","type":"image\/png"}],"author":"credativ Redaktion","twitter_card":"summary_large_image","twitter_creator":"@credativde","twitter_site":"@credativde","twitter_misc":{"Written by":"credativ Editorial Team","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#article","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/"},"author":{"name":"credativ Redaktion","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/63430ac9e022ccceba0f8d53ffe6db12"},"headline":"Open Build Service &#8211; Utility to build and publish updated packages of an EOL distribution","datePublished":"2024-11-24T17:45:53+00:00","dateModified":"2025-11-24T17:46:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/"},"wordCount":2635,"commentCount":0,"publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png","keywords":["Debian","Linux","OBS","Open Build Server","open build service"],"articleSection":["credativ\u00ae Inside","Debian"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#respond"]}],"copyrightYear":"2024","copyrightHolder":{"@id":"https:\/\/www.credativ.de\/#organization"}},{"@type":"WebPage","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/","url":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/","name":"Open Build Service - Utility to build and publish updated packages of an EOL distribution - credativ\u00ae","isPartOf":{"@id":"https:\/\/www.credativ.de\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#primaryimage"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#primaryimage"},"thumbnailUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png","datePublished":"2024-11-24T17:45:53+00:00","dateModified":"2025-11-24T17:46:09+00:00","description":"The Open Build Service supports a clean and isolated environment for parallel package development in Linux.","breadcrumb":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#primaryimage","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2024\/08\/11-add-dod-repository.png"},{"@type":"BreadcrumbList","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.credativ.de\/en\/"},{"@type":"ListItem","position":2,"name":"Open Build Service &#8211; Utility to build and publish updated packages of an EOL distribution"}]},{"@type":"WebSite","@id":"https:\/\/www.credativ.de\/en\/#website","url":"https:\/\/www.credativ.de\/en\/","name":"credativ GmbH","description":"","publisher":{"@id":"https:\/\/www.credativ.de\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.credativ.de\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Organization","Place"],"@id":"https:\/\/www.credativ.de\/en\/#organization","name":"credativ\u00ae","url":"https:\/\/www.credativ.de\/en\/","logo":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#local-main-organization-logo"},"image":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#local-main-organization-logo"},"sameAs":["https:\/\/www.facebook.com\/credativDE\/","https:\/\/x.com\/credativde","https:\/\/mastodon.social\/@credativde","https:\/\/www.linkedin.com\/company\/credativ-gmbh","https:\/\/www.instagram.com\/credativ\/"],"description":"Die credativ GmbH ist ein f\u00fchrendes, auf Open Source Software spezialisiertes IT-Dienstleistungs- und Beratungsunternehmen. Wir bieten umfassende und professionelle Services, von Beratung und Infrastruktur-Betrieb \u00fcber 24\/7 Support bis hin zu individuellen L\u00f6sungen und Schulungen. Unser Fokus liegt auf dem ganzheitlichen Management von gesch\u00e4ftskritischen Open-Source-Systemen, darunter Betriebssysteme (z.B. Linux), Datenbanken (z.B. PostgreSQL), Konfigurationsmanagement (z.B. Ansible, Puppet) und Virtualisierung. Als engagierter Teil der Open-Source-Community unterst\u00fctzen wir unsere Kunden dabei, die Vorteile freier Software sicher, stabil und effizient in ihrer IT-Umgebung zu nutzen.","legalName":"credativ GmbH","foundingDate":"2025-03-01","duns":"316387060","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"11","maxValue":"50"},"address":{"@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#local-main-place-address"},"geo":{"@type":"GeoCoordinates","latitude":"51.1732374","longitude":"6.392010099999999"},"telephone":["+4921619174200","08002733284"],"contactPoint":{"@type":"ContactPoint","telephone":"08002733284","email":"vertrieb@credativ.de"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":["Monday","Tuesday","Wednesday","Thursday","Friday"],"opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":["Saturday","Sunday"],"opens":"00:00","closes":"00:00"}],"email":"info@credativ.de","areaServed":"D-A-CH","vatID":"DE452151696"},{"@type":"Person","@id":"https:\/\/www.credativ.de\/en\/#\/schema\/person\/63430ac9e022ccceba0f8d53ffe6db12","name":"credativ Redaktion","description":"Dieser Account dient als Sammelpunkt f\u00fcr die wertvollen Beitr\u00e4ge ehemaliger Mitarbeiter von credativ. Wir bedanken uns f\u00fcr ihre gro\u00dfartigen Inhalte, die das technische Wissen in unserem Blog \u00fcber die Jahre hinweg bereichert haben. Ihre Artikel bleiben hier weiterhin f\u00fcr unsere Leser zug\u00e4nglich."},{"@type":"PostalAddress","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#local-main-place-address","streetAddress":"Hennes-Weisweiler-Allee 23","addressLocality":"M\u00f6nchengladbach","postalCode":"41179","addressRegion":"Deutschland","addressCountry":"DE"},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.credativ.de\/en\/blog\/credativ-inside\/open-build-service-utility-to-build-and-publish-updated-packages-of-an-eol-distribution\/#local-main-organization-logo","url":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","contentUrl":"https:\/\/www.credativ.de\/wp-content\/uploads\/2025\/04\/credativ-logo-right.svg","caption":"credativ\u00ae"}]},"geo.placename":"M\u00f6nchengladbach","geo.position":{"lat":"51.1732374","long":"6.392010099999999"},"geo.region":"Germany"},"_links":{"self":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/8151","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/users\/90"}],"replies":[{"embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/comments?post=8151"}],"version-history":[{"count":2,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/8151\/revisions"}],"predecessor-version":[{"id":10250,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/posts\/8151\/revisions\/10250"}],"wp:attachment":[{"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/media?parent=8151"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/categories?post=8151"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.credativ.de\/en\/wp-json\/wp\/v2\/tags?post=8151"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}