On Mit, 16 Mai 2001, Andreas Meyer wrote:
Am Mit, 16 Mai 2001 schrieb Heinz W. Pahlke:
Bevor du kompilierst, solltest du in fmail.c noch schnell die RE: durch Re: ersetzen, damit xfmail beim Reply RFC-konform wird.
Hier habe ich ein Problem. Ich kann mit dem mc fmail.c aus dem xfmail-1.4.7p2-1.src.rpm extrahieren und die RE:´s durch Re:´s ersetzten, ein Zurücklegen in das src.rpm geht allerdings nicht ;)
Ist (mit genug Plattenplatz) zu machen, allerdings musst du dafuer das .spec ein klein wenig aendern. Vorgehensweise (sie sich auf alle aennlichen Aenderungen in anderen Paketen fast 1:1 uebertragen laesst): 1. Installiere das .src.rpm (bzw. spm) mit rpm -i. Das entpackt das .spec nach SPECS und den tarball nach SOURCES. 2. cd /usr/src/packages/SOURCES 3. tar -xzf name-version.tar.gz Der Archivname kann natuerlich abweichen, bzw. ist -xIf zu verwenden, wenn's ein tar.bz2 ist. 4. mv ausgepacktes_Verzeichnis ausgepacktes_Verzeichnis.orig (meist folgt das Verzeichnis ebenfalls dem Schema name-version, also mv name-version name-version.orig 5. tar -xzf name-version.tar.gz (siehe 3.) Nun hat man den Inhalt des tarballs zweimal in einem Unterverzeichnis. 6. Aenderungen im Verzeichnisbaum <name>-<version> durchfuehren (also dem in 5. ausgepackten, nicht den .orig. 7. diff -urN name-version.orig name-version > name-version.patch (der Name des patches ist relativ beliebig, man sollte aber vorher schauen, dass es diesen Namen nicht schon gibt. 8. cd ../SPECS 9. $EDITOR name.spec Hier muss nun in der sog. Praeambel eine Zeile hinzugefuegt werden, damit der in 7. erzeugte patch "angewendet" wird und ausserdem muss im %prep Abschnitt der Befehl zum patchen eingefuegt werden. Im einfachsten Falle bringt das src.rpm noch keine patches mit, dann gilt es, in der Praemabel die meist wie folgt aussieht: Summary: ... Name: ... [..] Source: [..] eine Zeile Patch: name-version.patch hinzuzufuegen (also den Namen der in Schritt 7. erzeugten Datei mit der Ausgabe von diff. Weiter muss nach den Zeilen: %prep %setup [..] noch ein %patch -p1 eingefuegt werden. das -p1 hat die gleiche Funktion wie bei "patch" direkt, siehe also 'man patch' fuer eine Erklaerung. Fuer einen wie in 7. erzeugten patch passt das -p1 aber. Fuer den Fall, dass schon eine oder mehrere 'Patch:'-Zeilen vorhanden sind, mussen die hinzuzufugenden Zeilen so aussehen: PatchN: name-version.patch [..] %patchN -p1 Wobei N == 1, wenn es nur einen 'Patch:' gibt, bei mehreren die naechste "freie" Nummer. z.B: ==== vorher ==== [..] Source: name-version.tar.gz Patch0: name-version-foo.dif Patch1: name-version-security.patch Patch2: name-version-bar.diff [..] %prep %setup -q %patch -p0 %patch -P 1 -p1 %patch2 -p0 %build [..] ==== vorher ==== ==== nachher ==== [..] Source: name-version.tar.gz Patch0: name-version-foo.dif Patch1: name-version-security.patch Patch2: name-version-bar.diff Patch3: name-version.patch [..] %prep %setup -q %patch -p0 %patch -P 1 -p1 %patch2 -p0 %patch3 -p1 %build [..] ==== nachher ==== Es ist aber darauf zu achten, dass die Reihenfolge der patches nicht beliebig ist. Besser waere es also vor dem diff, in _beide_ Quellverzeichnisse die patches in der im .spec angegeben Reihenfolge einzuspielen, _dann_ die Aenderungen vorzunehmen und dann das diff zu machen. 10. Wie "gewohnt" fortfahren. Um zu ueberpruefen, ob der Patch erfolgreich eingebaut wird, ist ein 'rpm -bp name.spec' sinnvoll. Wenn das klappt (mit einer Meldung) Dann wie "gewohnt" ein 'rpm -ba' (oder 'rpm -bb') durchlaufen lassen. Wenn man das ganze ein paarmal gemacht hat wird das Routine und laesst obige Beschriebung sehr kompliziert erscheinen... Ach ja: Zum Thema rpm-specs kenne ich nur eine (ausreichende) Doku, das "maximum rpmbook", das es auf http://www.rpm.org/ zum DL gibt, dies sollte Pflichtlektuere sein, wenn man oefter mal ein .spec anpassen oder gar ein komplettes rpm selbst erstellen will. HTH, -dnh -- "Usenet is like a herd of performing elephants with diarrhea -- massive, difficult to redirect, awe-inspiring, entertaining, and a source of mind- boggling amounts of excrement when you least expect it." -- spaf (1992)