![](https://seccdn.libravatar.org/avatar/ff7dd008feb89b770f501d3477d8f34a.jpg?s=120&d=mm&r=g)
Hallo David, On Mon October 19 2009 David Haller wrote:
Hallo,
Am Mon, 19 Okt 2009, Werner Franke schrieb:
On Mon October 19 2009 David Haller wrote:
Am Mon, 19 Okt 2009, Werner Franke schrieb:
im letzten c't war ein guter Artikel, wie man ein RPM baut.
Gut? *Muahahahaha* Solche .spec Dateien würden übrigens im OBS nicht gebaut werden.
Frage eines unwissenden: Was passt daran nicht ? Was sollte man anders machen ?
- man kann die Rechte von /usr/src/packages anpassen - %_tmppath braucht man nicht zu ändern - %_distribution ebenfalls nicht - Name, Version und Release muß man nicht als Makro zu definieren (kann man aber), es reicht: Name: foo Version: 1.0.1 Release: 1.ichbins im Rest des .spec kann man dennoch %name, %version und %release verwenden. - Oben im .spec: %define _prefix /usr/local, damit nach /usr/local installiert wird und dennoch alle Standardmakros (wie %_bindir) funktionieren - %setup sollte man mit -q aufrufen, und wenn sich der Name des Verzeichnisses vom Paketnamen unterscheidet ist das auch kein Problem: %setup -q -n abweichender_name_des_Verzeichnisses (und die Option -n von %setup ist _grundlegend_). - man sollte das %configure Makro verwenden, weitere Optionen kann man einfach anhängen: %define scoredir %{_var}/lib/games %configure --with-highscore-path=%{scoredir} - make sollte man mit passendem jobs Argument aufrufen: make %{?jobs:-j %jobs} - in der Dateiliste sollte man die Pfad-Makros verwenden, im Beispiel: %files %defattr(-,root,root) # man könnte auch noch %name statt lbreakout2 verwenden %{_bindir}/%{name} %{_bindir}/%{name}server %{_datadir}/games/%{name} %attr(664,root,games) %{scoredir}/%{name}.hscr %doc ... - Ich vermisse Hinweise auf andere Buildsysteme als automake/autoconf, z.B. imake, cmake, qmake (v.a. bei KDE/QT Programmen beliebt), smake, ant, scons, bjam, ... - Ich vermisse einen Hinweis auf das OpenSUSE Build System, wo man ja auch für andere Distributionen (u.a. auch Mandrake und RH, sowie sogar Debian und Ubuntu) backen kann ...
Mehr dazu: http://de.opensuse.org/Paketbau http://de.opensuse.org/SUSE_Paketbauanleitung http://de.opensuse.org/Paketbau/SUSE-Paketkonventionen http://de.opensuse.org/Paketbau/RpmLint
Generell sollte man sich daran halten und ggfs. in opensuse-packaging oder opensuse-buildservice nachfragen. Wenn man aufpasst kann man auch Pakete für z.Z. openSUSE 10.3 bis Factory mit einem .spec bauen und braucht nur selten Versionsspezifika im .spec behandeln, meist geht's um umbenannte Pakte (die man braucht) oder anderes was sich geändert hat (deutlich unterschiedliche Versionen von gcc oder python z.B.).
vielen Dank für diese ausführliche Beschreibung. Mir hat der c't Artikel zumindest so weit geholfen, dass ich mich wieder mit dem Thema RPM beschäftigt habe und dass meine bisherigen Bemühungen, die leider nicht erfolgreich waren, endlich zu einem Ergebnis geführt haben. Nun kann ich ja noch Deine Anmerkungen mit einbauen und erhalte ein noch besseres RPM. Wenn ich die Ergebnisse vom Thread OT: eigene Tools in KDE4 einbinden dann auch noch funktionieren, wird's noch besser ;-) (Ich versuche ein RPM für http://home.arcor.de/wfranke/tkburn/index.html zu machen) vielen Dank Werner -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: opensuse-de+help@opensuse.org