[[Vorlage(Getestet, general)]] {{{#!vorlage Wissen [:Grundlagen_der_Paketerstellung:] [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Paketquellen_freischalten: Eine Paketquelle freischalten] }}} [[Inhaltsverzeichnis(1)]] [[Bild(obs-logo.png, 100, align=left)]] Der [https://openbuildservice.org Open Build Service] {en} (kurz OBS) ist ein Projekt der [https://www.suse.com/de-de SUSE Linux GmbH] {de}, um Software reproduzierbar und zentral in [:Virtualisierung:virtuellen Maschinen] zu kompilieren und zu paketieren. Ziel ist es, saubere Installationspakete für unterschiedliche Linux-Distributionen auszuliefern. Im Gegensatz zu den [:Launchpad/PPA:PPAs] von Canonical werden deutlich mehr Paketformate und auch andere Distrbutionen unterstützt. So ist es möglich, Pakete für Debian/Ubuntu, RedHat/CentOS/Fedora, Mageia/Mandriva, SUSE und Arch Linux gleichzeitig zu bauen. Die [https://build.opensuse.org Referenzimplementierung] {en} wird dazu verwendet, die Linux-Distribution [opensuse:Hauptseite:openSUSE] {de} transparent und offen in Kooperation mit der Gemeinschaft zu erstellen. Die Plattform ist frei zugänglich und kann von jedem Open Source Projekt unentgeltlich verwendet werden. Der Quelltext ist ebenfalls verfügbar, so dass Interessierte auch ihren eigenen internen OBS aufsetzen können und sich an der Weiterentwicklung beteiligen können. {{{#!vorlage Hinweis Die Grundlagen der Paketerstellung [1] werden in diesem Artikel nicht behandelt, sondern als Vorwissen vorausgesetzt. }}} = Weboberfläche = Am einfachsten gestaltet sich das Arbeiten unter [https://build.opensuse.org build.opensuse.org] {en} direkt mit dem Browser. == Anmelden == Man klickt oben auf den Link ''"Sign Up"'' und erstellt einen neuen Zugang. Jeder neu angemeldete Benutzer erhält automatisch ein Projekt `home:BENUTZERNAME`. == Kooperation == Möchte man ein bestehendes Paket aktualisieren oder Fehler ausbessern, wählt man ''"Branch Package"''. Es wird daraufhin standardmäßig eine Kopie unter `home:BENUTZERNAME:branches:PROJEKTNAME/Paket` abgelegt (Beispiel: `http://download.opensuse.org/repositories/home:/BENUTZERNAME:/PROJEKTNAME/`). Diese kann nun mit Klick auf die jeweiligen Steuerungsdateien ('''.spec''' für RPM oder '''.dsc''' für DEB) im Browser editieren. Jede Speicherung legt eine neue Revision an und führt dazu, dass das Paket umgehend neu gebaut wird. Die Änderungen lassen sich über einen Linksklick [[Vorlage(Tasten, lmb)]] auf ''"Show Diff"'' überprüfen. Ist man zufrieden, kann man das Paket an das Ursprungspaket mit den Änderungen zurückschicken: ''"Submit Package"''. Bitte nicht vergessen, im jeweiligen Änderungsprotokoll ('''.changes''' für RPM oder '''debian.changelog''' für DEB) die Änderung zu dokumentieren. == Konfiguration == Unter ''"Repositories"'' kann man auswählen, für welche Distribution man einen Neubau wünscht. Gerade am Anfang, wenn der Paketbau noch häufig fehlschlägt, bietet es sich an, lediglich ein Repository zu aktivieren, um Ressourcen zu sparen oder mit dem Kommandozeilenprogramm `osc` schnell lokal zu bauen. Für Ubuntu-Pakete wählt man ''"Add Repository"'' und klickt die gewünschte Ubuntu-Version an. Diese wird als `xUbuntu_VERSIONSNUMMER` angezeigt. == Auslieferung == Hat man das Paket getestet und für gut befunden, kann man es auch über die vom Open Build Service generierten Paketquellen (Repositories) ausliefern. Unter ''"Repositories"'' aktiviert man öffentlichen Lesezugriff (''"Publishing"''). Benutzer kann man dann auf * `http://software.opensuse.org/package/PAKETNAME` verweisen, wobei PAKETNAME entsprechend zu ersetzen ist (siehe auch den Abschnitt [#Als-Paketquelle-einrichten als Paketquelle einrichten]). = Kommandozeilenclient = Das Programm `osc` richtet sich an fortgeschrittene Benutzer. Es ähnelt von der Syntax her [:Archiv/Subversion:Subversion], ist jedoch eine vollständige Eigenentwicklung, die speziell an die Bedürfnisse des [:Paketbau:Paketbaus] angepasst ist. Im Gegensatz zu [:Launchpad/PPA#Code-in-das-PPA-laden:dput] kann es nicht nur dazu verwendet werden, neue Quellpakete hochzuladen, sondern es ist auch möglich, den Paketbau lokal in einer abgeschotteten Umgebung zu prüfen. == Installation == Folgendes Paket muss installiert [2] werden: {{{#!vorlage Paketinstallation osc, universe }}} == Benutzung == Zunächst öffnet man ein Terminal [3] und navigiert zu dem Ordner, in dem man eine lokale Revision abspeichern möchte. Mit {{{#!vorlage Befehl osc co home:BENUTZERNAME:branches:PROJEKTNAME PAKETNAME }}} lädt man den im Webinterface angelegten Branch herunter (`checkout`, kurz `co`), wobei BENUTZERNAME, PROJEKTNAME und PAKETNAME entsprechend zu ersetzen sind. Im Weiteren führt man seine Änderungen durch [4]. Mittels {{{#!vorlage Befehl osc addremove }}} werden neu erstellte Dateien im Ordner dem Versionsverwaltungsystem hinzugefügt und alte entfernt. Möchte man den Paketbau lokal testen, gibt man für [:Saucy Salamander:Ubuntu 13.10] (32-bit): {{{#!vorlage Befehl osc build xUbuntu_13.10 i586 }}} oder entsprechend eine andere Ubuntu-Versionsnummer ein. Für 64-bit-Pakete benutzt man `x86_64`. Ist man zufrieden, kann man mit {{{#!vorlage Befehl osc ci }}} alle Änderungen hochladen. = Als Paketquelle einrichten = [[Vorlage(Fremd, Quelle, "")]] Möchte man als Ubuntu-Nutzer Pakete bzw. Programme aus einer vom Open Build Service generierten Paketquelle [5] installieren, braucht man zwei Befehle, die hier schematisch dargestellt werden: * Einbinden der Paketquelle: {{{#!vorlage Befehl sudo add-apt-repository 'deb http://download.opensuse.org/repositories/home:/BENUTZERNAME:/PROJEKTNAME/UBUNTUVERSION/ ./' }}} Die `UBUNTUVERSION` ist entsprechend der Versionsnummer (z.B. 12.04) als `xUbuntu_VERSION` anzugeben. Zu beachten ist, dass `xUbuntu` hier nicht für [:Xubuntu:] steht, sondern allgemein für alle Ubuntu-Varianten sowie für inoffizielle Ubuntu-Distributionen, die auf der entsprechenden Ubuntu-Version basieren. * Authentifizieren der Paketquelle: {{{#!vorlage Befehl wget -q http://download.opensuse.org/repositories/home:/BENUTZERNAME:/PROJEKTNAME/UBUNTUVERSION/Release.key -O- | sudo apt-key add - }}} Nach dem obligatorischen Aktualisieren der Paketquellen mit {{{#!vorlage Befehl sudo apt-get update }}} erfolgt die Installation entweder über eine grafische Paketverwaltung wie [:Ubuntu_Software:] oder via Kommandozeile. Beispiele: {{{#!vorlage Befehl sudo apt-get install PAKETNAME }}} bzw. beim Einsatz von [:aptitude:]: {{{#!vorlage Befehl sudo aptitude install PAKETNAME }}} == Fremdpaket == Verwendet man die Downloadseite `http://software.opensuse.org/package/PAKETNAME`, kann man ein Fremdpaket herunterladen und [:Paketinstallation_DEB:manuell installieren], ohne eine Paketquelle einzurichten. = Problembehebung = == Paketquellen == Man sollte beachten, das die Ubuntu-[:Paketquellen:] `multiverse` und `universe` im OBS nicht zur Verfügung stehen. Benötigt man zum Bau Abhängigkeiten daraus, muss man diese zunächst selber bauen. Leider dürfen aus Lizenzgründen nicht alle Pakete aus `universe` (und vermutlich noch mehr aus `multiverse`) auf den Servern gebaut werden. = Links = * [opensuse:Build_Service:Open Build Service Portal] {de} * [opensuse:openSUSE\:Build_Service_Tipps_und_Tricks:Build Service Tipps und Tricks] {de} * [https://openbuildservice.org/help/ Open Build Service - Reference Guide] {en} - Entwickler-Dokumentation * [https://en.opensuse.org/openSUSE:Build_Service_Debian_builds#Configuring_sources.list Build Service Debian builds - Configuring sources.list] {en} * [https://en.opensuse.org/openSUSE:Build_Service_application_blacklist Verbotene Universe-Pakete (unvollständig)] {en} #tag: Community, Paketbau, Programmierung, Ubuntu