SPECS
Aus Fedorawiki.de
| |
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.
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:
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.