Re: patchen

From: Bernd Walter <ticso(at)cicely5.cicely.de>
Date: Tue, 25 Jun 2002 18:28:24 +0200

On Tue, Jun 25, 2002 at 05:33:23PM +0200, Manuel Stuehn wrote:
> On 25 Jun 2002 at 10:49, Bernd Walter wrote:
> > > Und heisst das, wenn ich irgendein Programm patchen will
> > > (ich habe im Moment kein Beispiel, ich hatte nur in einem Buch von
> > > Patchen gelesen, dort stand aber nicht wie man sie einspielt :o(
> )> > muss ich (*) eingeben und diese Komponente neu
> > > kompilieren und installieren (make && make install)?
> >
> > Klar - du änderst ja nur den Source.
>
> Da haette ich noch eine kleine Frage :
> Woher weiss patch welches die Datei ist, die gepatcht werden soll?

Diff packt die Dateinamen in die Ausgabe und patch versucht dann die
Dateien wiederzufinden.
Wenns es nicht gelingt bekommst du einen Prompt für den Dateinamen.

> bsp aus >Re: Tastenkombination für shutdown -p now<
> aus der mailingliste am 4 Juni 2002
> -----zitatanfang------
> Probier stattdessen mal folgenden patch:
>
> ====cut here=============================================
> --- /usr/src/sys/dev/syscons/syscons.c.orig Tue Jun 4 17:20:12
> 2002
> +++ /usr/src/sys/dev/syscons/syscons.c Tue Jun 4 17:23:02 2002
> @@ -3115,7 +3115,7 @@
>
> case RBT:
> #ifndef SC_DISABLE_REBOOT
> - shutdown_nice(0);
> + shutdown_nice(RB_HALT|RB_POWEROFF); /* IR:
> poweroff! */
> #endif
> break;
>
> ====cut here=====================================
> ------zitatende------
>
> Ist oben das ist ein ausschnitt einer Datei die mit diff erzeugt wurde
> ?

Ja.

> ------zitatanfang------
> Anwendung: "ausschneiden" in datei namens "tmp".

"ausschneiden" im Sinne von Cut&Paste ist schlecht.
Patch soll in diesem Fall eine Zeile austauschen.
Wenn er allerdings die originale nicht finded, weil beim Cut&Paste
Tabulatoren zu Leerzeichen geworden sind wird patch die betroffene
Stelle nicht eindeutig identifizieren können.
Derart simple patches kann man aber auch schneller von Hand einpflegen:
@@ -3115,7 +3115,7 @@
Steht für 7 Zeilen ab Zeile 3115 im ersten File (-) und gleiches im
zweiten File (+).

> als root:
> patch < tmp
> ------zitatende------
>
> woher weiss patch (1), welche datei mit tmp gepatcht werden muss?

Wie schon oben erwähnt steht es im diff Output.

> Muss ich mich in einem bestimmten verzeichnis befinden?

In dem Fall - nein, da absolute Pfade auftauchen.
Das ist schlecht - in der Regel macht man diffs relativ.
Anstelle /usr/src/sys/dev/... hätte dann sys/dev/... gestanden.
In dem Fall hättest du in /usr/src stehen müssen.
Deshalb wirft man vorher -immer- einen prüfenden Blick ins File.

-- 
B.Walter              COSMO-Project         http://www.cosmo-project.de
ticso(at)cicely.de         Usergroup           info(at)cosmo-project.de
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 25 Jun 2002 - 18:28:37 CEST

search this site