SPECS

Aus Fedorawiki.de

Wechseln zu: Navigation, Suche
Neu.png Dieser Artikel wurde neu erstellt und bedarf evtl. noch einer Korrekturlesung. Danach kann diese Box entfernt werden.

In diesem Artikel soll gezeigt werden, wie mithilfe einer vorhandenen SPEC-Datei ein RPM erstellt wird. Der Artikel ist dabei ähnlich wie das Erstellen eines RPMs aus einem SRPM, nur das hier davon ausgegangen wird, dass erstmal nur die SPEC-Datei vorhanden ist. Voraussetzung dafür ist, dass die Buildumgebung schon eingerichtet ist.

<b>Achtung</b> <b>Achtung:</b> Um ein RPM aus der vorhanden SPEC-Datei zu erstellen, muss diese für Fedora geeignet sein. Das trifft dabei nicht auf alle im Internet oder in den Quellpaketen befindlichen SPEC-Dateien zu und kann dabei verschiedene Gründe haben. Normalerweise müssen diese bei einem Fehlschlag dann von Hand angepasst werden.


Vorbereitung

Die SPEC-Datei sollte zuallererst an den richtigen Ort kopiert werden, damit sie später einfacher wiedergefunden wird. In diesem Falle ist das der Ordner ~/rpmbuild/SPECS/:

rpmbuild@linux:~$ cp gnome-blog.spec ~/rpmbuild/SPECS/

Danach müssen die benötigten Dateien in den Ordner ~/rpmbuild/SOURCES/ kopiert werden. Diese finden sich alle namentlich in der SPEC-Datei. Im einzelnen sind das:

  • ein oder mehrere Quellpakete (Sourcen)
  • evtl. Patches

Im SPEC selbst sind sie mit Source{0,1,2,...} und Patch{0,1,2,...} angegeben. Falls keine direkte Adresse zum Herunterladen eingetragen wurde, sollte man zuerst zuerst auf der Homepage des Programms schauen, die bei Url angegeben ist.

Ist dies geschehen, steht dem eigentlichen Erstellen des RPMs nicht mehr viel im Wege. Die folgenden Schritte sind dabei auch dieselben, wie bei einem SRPM.

Erstellung des RPMs: Erster Versuch

Anschließend wird rpmbuild benutzt, um aus dem SRPM ein normales RPM zu erstellen. Beim ersten Aufruf werden i.d.R. noch fehlende Entwicklungspakete bemängelt:

rpmbuild@linux:~$ rpmbuild -ba ~/rpmbuild/SPECS/gnome-blog.spec
Fehler: Fehlgeschlagene Paket-Abhängigkeiten:
        pygtk2-devel >= 1.99.13 wird benötigt von gnome-blog-0.8-13.fc5.noarch
        glib2-devel wird benötigt von gnome-blog-0.8-13.fc5.noarch
        gettext wird benötigt von gnome-blog-0.8-13.fc5.noarch
rpmbuild@linux:~$   

Dies bedeutet, dass die von gnome-blog zur Erstellung des RPMs benötigten Pakete pygtk2-devel, glib2-devel und gettext noch nicht im System installiert sind. Dies sollte jetzt durch yum oder pirut nachgeholt werden:

[root]# yum install pygtk2-devel glib2-devel gettext


Erstellung des RPMs: wirklicher Anlauf

Nach der Installation der Abhängigkeiten des SRPMs (diese sind nicht zu verwechseln und können differieren mit dem eigentlich RPM) sollte einer erfolgreichen Erstellung des RPMs nichts mehr im Wege stehen. Die Option -ba für rpmbuild besagt, dabei, dass sowohl ein RPM als auch ein SRPM generiert werden soll (vgl. dazu die Ausgabe von rpmbuild --help):

rpmbuild@linux:~$ rpmbuild -ba ~/rpmbuild/SPECS/gnome-blog.spec
Ausführung(%prep): /bin/sh -e /var/tmp/rpm-tmp.24403
+ umask 022
+ cd /home/rpmbuild/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /home/rpmbuild/rpmbuild/BUILD
+ rm -rf gnome-blog-0.8
+ /bin/gzip -dc /home/rpmbuild/rpmbuild/SOURCES/gnome-blog-0.8.tar.gz
+ tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd gnome-blog-0.8

[...Ausgabe gekürzt...]

Prüfe auf nicht gepackte Datei(en): /usr/lib/rpm/check-files /var/tmp/gnome-blog-0.8-13.fc5-root-rpmbuild
Erstellt: /home/rpmbuild/rpmbuild/SRPMS/gnome-blog-0.8-13.fc5.src.rpm
Erstellt: /home/rpmbuild/rpmbuild/RPMS/noarch/gnome-blog-0.8-13.fc5.noarch.rpm
Ausführung(%clean): /bin/sh -e /var/tmp/rpm-tmp.50964
+ umask 022
+ cd /home/rpmbuild/rpmbuild/BUILD
+ cd gnome-blog-0.8
+ rm -rf /var/tmp/gnome-blog-0.8-13.fc5-root-rpmbuild
+ exit 0
rpmbuild@linux:~$

Wenn die Erstellung so abschließt, war alles erfolgreich. Das fertige RPM befindet sich nun im Verzeichnis /home/rpmbuild/RPMS/ unter der jeweiligen Architektur. In diesem Beispiel ist das noarch. Eine Installation des erstellten RPMs muss dabei wie üblich als root erfolgen.