Open Build Service
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Der Open Build Service 🇬🇧 (kurz OBS) ist ein Projekt der SUSE Linux GmbH 🇩🇪, um Software reproduzierbar und zentral in virtuellen Maschinen zu kompilieren und zu paketieren. Ziel ist es, saubere Installationspakete für unterschiedliche Linux-Distributionen auszuliefern. Im Gegensatz zu den 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 Referenzimplementierung 🇬🇧 wird dazu verwendet, die Linux-Distribution openSUSE 🇩🇪 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.
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 build.opensuse.org 🇬🇧 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 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).
Kommandozeilenclient¶
Das Programm osc
richtet sich an fortgeschrittene Benutzer. Es ähnelt von der Syntax her Subversion, ist jedoch eine vollständige Eigenentwicklung, die speziell an die Bedürfnisse des Paketbaus angepasst ist. Im Gegensatz zu 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:
osc (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install osc
Benutzung¶
Zunächst öffnet man ein Terminal [3] und navigiert zu dem Ordner, in dem man eine lokale Revision abspeichern möchte. Mit
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
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 Ubuntu 13.10 (32-bit):
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
osc ci
alle Änderungen hochladen.
Als Paketquelle einrichten¶
Hinweis!
Zusätzliche Fremdquellen können das System gefährden.
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:
sudo add-apt-repository 'deb http://download.opensuse.org/repositories/home:/BENUTZERNAME:/PROJEKTNAME/UBUNTUVERSION/ ./'
Die
UBUNTUVERSION
ist entsprechend der Versionsnummer (z.B. 12.04) alsxUbuntu_VERSION
anzugeben. Zu beachten ist, dassxUbuntu
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:
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
sudo apt-get update
erfolgt die Installation entweder über eine grafische Paketverwaltung wie Ubuntu Software oder via Kommandozeile. Beispiele:
sudo apt-get install PAKETNAME
bzw. beim Einsatz von aptitude:
sudo aptitude install PAKETNAME
Fremdpaket¶
Verwendet man die Downloadseite http://software.opensuse.org/package/PAKETNAME
, kann man ein Fremdpaket herunterladen und 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¶