openSUSE:OSC

Wechseln zu: Navigation, Suche

Das openSUSE Build Service Kommandozeilenwerkzeug heißt OSC

OSC, der Python Kommandozeilen-Client

OSC ist in Python geschrieben. Zusätzlich zur Kommandozeilenschnittstelle liefert es auch ein Python-Modul zur Nutzung anderer Pythonprogramme.

Pakete für verschiedene Distributionen (openSUSE, SLES, Fedora, Mandriva, Debian, etc.) können unter http://download.opensuse.org/repositories/openSUSE:/Tools/ gefunden werden. Wenn Sie den neuesten Quellcode ausprobieren wollen, können Sie das mit Git machen:

 git clone git://github.com/openSUSE/osc.git
 

Damit OSC funktioniert, wird python-xml benötigt:

 zypper install python-xml

OSC dient im Build Service als Client für den Repository-Teil des Quellcodes. Er wird verwendet, um Metadaten oder Anfragen über Bauergebnisse zu bearbeiten.

Einführungsbeispiele werden unten gezeigt. Beachten Sie die Build Service Anleitung. Sie liefert eine systematische Einführung.

OSC ist erweiterbar. Sie können das Verhalten modifizieren oder Ihre eigenen Kommandos schreiben.

OSC wird Sie nach Ihrer Legitimation fragen, wenn Sie ihn das erste Mal benutzen und sie unter ~/.oscrc speichern. Das Passwort wird als klarer Text gespeichert. Schützen Sie Ihre Datei ~/.oscrc und Ihr Dateisystem angemessen.

Hier einige brauchbare Kommandos
Die Informationen zu einem Kommando zeigen:

osc help
osc help <cmd>

Den vorhandenen Inhalts auf einem Server auflisten:

osc ls                          # listet Projekte
osc ls Apache                   # listet Pakete in einem Projekt
osc ls Apache subversion        # listet Dateien von eiem Pakete in einem Projekt

Den Inhalt überprüfen:

osc co Apache                   # das komplette Projekt
osc co Apache subversion        # ein Paket
osc co Apache subversion foo    # eine einzelne Datei

Das Arbeitsverzeichnis aktualisieren:

osc up
osc up <directory>
osc up *                        # innerhalb eines Projetverzeichnisses, 
                                  Aktualisierung aller Pakete
osc up                          # innerhalb eines Projetverzeichnisses, 
                                  Aktualisierung aller Pakete 
                                  UND Überprüfung aller neu hinzugefügten Pakete
                        

Geänderte Inhalte hoch laden

osc ci                          # aktuelles Verzeichnis
osc ci <file1> <file2>          # nur spezielle Dateien
osc ci <dir1> <dir2> ...        # mehrere Pakete
osc ci -m "updated foobar"      # spezifizieren einer Übergabenachricht

Zeige den Übergabe-Log

osc log 

Zeige den Status (welche Dateien wurden lokal geändert)

osc st
osc st <Verzeichnis>

Wenn eine Aktualisierung nicht automatisch zusammengeführt werden kann, dann ist eine Datei im Zustand 'C' (conflict/Konflikt). Konflikte werden mit spezielle Zeilen <<<<<< und >>>>> gekennzeichnet. Nach dem manuellen Lösen des Problems verwenden Sie

osc resolved <Datei>

Sorgen Sie dafür, dass Dateien beim nächsten 'Einchecken' hinzugefügt oder gelöscht werden:

osc add foo
osc rm foo

Fügt alle neuen Dateien lakal hinzu, kopiert und löscht alle verschwundenen Dateien:

osc addremove

Erzeugt eine Differenz, um die Änderungen zu zeigen:

osc diff [Datei]

Zeigt das Bauergebnis des Paketes

osc results
osc results <Plattform>

Zeigt die Log-Dateien eines Paketes (Sie müssen innerhalb eines Paketverzeichnisses sein):

osc buildlog <Plattform> <Architektur>

Zeigt die URLs von .repo Dateien, die Paketquellen für Yum/YaST/smart sind:

osc repourls [dir]

Löst einen Paketneubau aus für alle Repositorys/Architekturen eines Paketes:

osc rebuildpac [dir]

Baut ein Paket auf Ihrer lokalen Plattform:

osc build <Plattform> <Architektur> <Spezifikationsdatei> [--clean|--noinit|...]

Zeigt die konfigurierten Plattformen/Bau-Ziele:

osc platforms [project]

Zeigt das mögliche Bauziel für Ihr Projekt:

osc repos

Zeigt Meta-Information

osc meta prj <Projekt>
osc meta pkg <Projekt> <Paket>
osc meta user <Benutzername>
osc meta prjconf <Projekt>

Bearbeitet die Meta-Information. Erzeugt ein neues Paket/Projekt, wenn es nicht vorhanden ist. Es wird einen Editor mit den Raw XML Metadaten geöffnet. Wenn Sie mit XML unsicher sind, können Sie stattdessen den Web-Client verwenden.

osc meta prj -e <Projekt>
osc meta pkg -e <Projekt> <Paket>
osc meta prjconf -e <Projekt>

(Die Projekt-Konfiguration (prjconf) könnte gut leer sein. Sie wird nur in speziellen Fällen benötigt.)

Aktualisiert Paket-Meta-Daten mit Metataten, die aus der Spezifikationsdatei genommen werden:

osc updatepacmetafromspec <dir>

Paketverfolgung

Mit osc ist es benso möglich, auf SVN ähnliche Weise zu managen. Diese Funktion wird Paketverfolgung (package tracking) genannt und muss im Abschnitt ~/.oscrc's [general] aktiviert werden:

# managen Sie Ihre Pakete  auf svn ähnliche Weise
do_package_tracking = 1

Fügt ein neues Paket zum Projekt hinzu:

osc mkpac <package>

Fügt ein bereits vorhandenes Verzeichnis und seine Dateien zu einem Projekt:

osc add <directory>

Entfernt ein Paket seine Dateien von einem Projekt:

osc deletepac <package>

Alle diese obigen Kommandos ändern nur Ihre lokale Arbeitskopie. Um Ihre Änderungen zum Build Service einzureichen, müssen Sie sie übergeben (osc ci -m <message>).

Das Status-Kommando zeigt ebenso den Zustand der Pakete:

osc st

Dokumentation

Zusätzlich ist für OSC ein Schwindelblatt als Anleitung verfügbar.

Wie sind bei einem nicht-Factory-Paket Fehler zu beheben?

Überprüfen Sie das Paket Ihrer Wahl:

osc -A https://api.suse.de bco SUSE:SLE-11-SP2:GA <Paketbezeichnung>

Behebe die Fehler. Und nachdem Sie den Paketbau überprüft haben, reichen Sie es ein:

osc commit <Paketbezeichnung>

Konfigurationsumzug

Die Version 0.114 erhielt einige Bereinigungen für die Konfigurationsdatei. Darum werden einige Optionen nun abgelehnt, so

  • apisrv
  • scheme

Eine neue Option wurde hinzugefügt:

  • apiurl = <protocol>://<somehost> # verwenden Sie diese als Standard apiurl. Wenn diese Option nicht spezifiziert ist, wird der Standard (https://api.opensuse.org) verwendet.

Bis jetzt hat OSC noch einige Rückwärtskompatibilitäten für diese Optionen. Aber sie könnten in der Zukunft beseitigt werden. Das ist, weil sie eine Misbilligungswarnung für den Fall ausgibt, das eine dieser Optionen noch in Gebrauch ist. Das neue Konfigurationsschema sieht wie folgt aus:

# Eintrag für apiurl
[<protocol>://<apiurl>]
user = <Benutzername>
password = <Passwort>
...

Bevor Sie den Umzug starten, sichern Sie bitte Ihre Dateir ~/.oscrc!

Wenn der Umzug aus irgend einem Grund nicht funktioniert, können Sie gern eine E-Mail an die opensuse-buildservice Mailingliste senden oder im IRC-Kanal #opensuse-buildservice fragen.

Unzugsfall I (nur apisrv)

Die Option apisrv wird zur Spezifizierung des Apihost verwendet. Wenn apisrv überhaupt nicht spezifiziert ist, wird der Standard ("api.opensuse.org") verwendet. Der gegenwärtige (grundsätzliche) Abschnitt sieht wie folgender aus:

[general]
...
apisrv = <somehost>
# or
apisrv = <protocol>://<somehost>

apisrv wird durch die neue apiurl-Option ersetzt und sieht wie folgt aus:

[general]
...
apiurl = <protocol>://<somehost>

Wenn apisrv kein "<protocol>" hat , wird https verwendet. Stellen Sie sicher, dass alle apiurl Abschnitte das neue Format haben, wie oben beschrieben. Hinterher kann apisrv gelöscht werden.

Umzugsfall II (nur scheme)

Der gegenwertige [general] Abschnitt sieht wie folgt aus:

[general]
...
scheme = <protocol>

Das bedeutet, jeder apiurl Abschnitt, der nicht das neue Format, das oben beschrieben wurde hat zum Beispiel

[<somehost>]
user = <username>
password = <password>
...

muss umgewandelt werden zu

[<protocol>://<somehost>]
user = <username>
password = <password>
...

Danach kann die scheme-Option aus der [general] Sektion gelöscht werden (es kann sein, dass einige Abschnitte bereits das richtige Format haben).

Umzugsfall III (apisrv und scheme)

Der momentane [general] Abschnitt sieht wie folgt aus:

[general]
...
apisrv = <somehost>
scheme = <protocol>

Beide Optionen können gelöscht werden, wenn alle apiurl das neue Format besitzen, was oben beschrieben wurde. So Both options can be removed if all apiurl sections have the new format which is described above. Passen Sie hauptsächlich alle apiurl-Abschnitte an (es könnte sein, dass einige Abschnitte bereits das neue Format haben).

OSC Bau mit Xen

Sie müssen Xen-Pakete und den Xen-Kernel installiert und hochgefahren haben, um fortzufahren. Um lokale Bauten mit Xen zu aktivieren, müssen Sie diese Zeilen zum Abschnitt [general] ihrer Datei ~/.oscrc hinzufügen:

build-type=xen
build-device=/tmp/FILE.root
build-swap=/tmp/FILE.swap
build-memory=512

Dann erzeugen Sie 2 Dateien:

dd if=/dev/zero of=/tmp/FILE.root bs=1M count=4096  # 4GB Partition für / . Bei großen Projekten sollten 8GB verwendet werden.
mkfs.ext3 /tmp/FILE.root                            # Tippe (y), wenn es sich über die Datei beklagt, kein Geräteknoten zu sein.
dd if=/dev/zero of=/tmp/FILE.swap bs=1M count=512   # verwenden Sie andere Größen, wenn benötigt
mkswap /tmp/FILE.swap

Wenn Sie eine Funktion zur Kreuz-Kompilierung verwenden wollen, müssen Sie zu Ihrem /etc/sysconfig/kernel hinzufügen:

  • binfmt_misc to INITRD_MODULES
  • binfmt_misc to DOMU_INITRD_MODULES
  • binfmt_misc to MODULES_LOADED_ON_BOOT

Erzeugen Sie die initrd's mit mkinitrd neu.

Starten Sie osc-Bau.

.oscrc Schwindelblatt

Der [general] Abschnitt

Speicher:

# Heruntergeladen Pakete werden hier gecached. Muss von Ihnen geschrieben werden.
# Standard:
packagecachedir = /var/tmp/osbuild-packagecache
# rootdir um die chroot Umgebung einzurichten
# kann enthalten %(repo)s und/oder %(arch)s zum Ersetzen
# /<path>/%(repo)s-%(arch)s-%(project)s-%(package)s
# Standar:
build-root = /var/tmp/build-root/

API Kommunikation:

# verwenden Sie diesen API Server (hostname[:port])
# (er benötigt einen Abschnitt [api.opensuse.org] mit den Referenzen)
# Standar:
apisrv = api.opensuse.org
# verwenden Sie dieses Protokoll, um auf den API-Server zu zu greifen (http oder https)
# Standar:
scheme = https

API Host:

# API Hosts können mit Aliase versehen werden, z.B. 'osc -A alias ...'
# Listen Sie Aliase für API Hosts unter dem API Host-Abschnitt.
# https://api.opensuse.org
# user=jdoe
# aliases=

Lokaler Bau:

# Wrapper, um den Bau als Root aufzurufen (sudo, su -, ...)
# Standard: 
su-wrapper = su -c
# kein Passwort gefordert mit:
# su-wrapper = sudo
# mit Eitrag in sudoers Datei:
# <username> ALL = NOPASSWD: /usr/bin/build
# Für die Bequemlichket/Fehlerbeseitigung, osc fügt intern vim gdb strace zu 
# den Paketen hinzu, die im gebauten chroot installiert sind, wenn extra-pkgs nicht bestimmt ist zu:
#extra-pkgs=
# build type - mögliche Werte:
#  * empty -> chroot
#  * xen -> xen VM
#  * kvm -> kvm VM (Test benötigt) 
# Standard: nicht festgelegt/chroot
#build-type=xen
# build-device - Root Dateisystem, zu verwenden für VM
# default: nicht festgelegt
#build-device=/tmp/FILE.root
# build-swap - swap Dateisystem, zu verwenden für VM
# Standard: nicht festgelegt
#build-swap=/tmp/FILE.swap
# build-memory - Beitrag der memory für VM
# Standard: nicht festgelegt
#build-memory=512