[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: wie patch installieren?



Hallo Martin!

Martin Troeger schrieb:
> 
> Hallo Michael,
> 
> on 2002-04-30 17:36 you wrote:
> 
> > > ich möchte diesen Patch
> > > http://www.iostream.com/~jdh/mpeg/MPlayer-vo_YUV.patch installieren,
> > > damit mplayer ein YUV-File ausgeben kann. Nun habe ich aber überhaupt
> > > keine Ahnung, wie das geht. Was ich so mitbekommen habe, gibt es das
> > > Kommando patch. Aber welche Optionen muss ich diesem mitgeben und wo
> > > starte ich das überhaupt?
> > >
> > > Und was mir auch noch völlig unklar ist, was macht "diff..." da in der
> > > ersten Zeile? Müssen meine Verzeichnisse die selben Namen haben?
> >
> > diff erstell einen Patch, patch spielt ihn wieder ein. Nein die Verzeichnisse
> > müssen nicht genauso heissen. Lies mal folgendes:
> 
> Ich meine speziell die ersten Zeilen in diesem Patch. Dort wird diff
> auf spezielle Verzeichnisse angewendet. Aber dieser Patch ist doch
> schon ein Patch, also wieso diff in diesem Patch? Und was hat es mit
> den Verzeichnissen dort auf sich?

Grundverständnis:
Du hast ein Verzeichnis, als Beispiel die Kernelquellen unter
/usr/src/kernel-2.4.18. An den Quellen willst Du selbst etwas
ändern, z.B. neuen Treiber einbauen, PCI-IDs ändern - was auch
immer. Damit die Änderungen verfolgbar sind, kopierst Du das
komplette Verzeichnis /usr/src/kernel-2.4.18 z.B. nach
/usr/src/kernel-2.4.18-neu, hast jetzt also die gleichen
Kernelquellen zweimal auf der Platte, nur in unterschiedlichen
Verzeichnissen. Die Änderungen/Ergänzungen/was_auch_immer
nimmst Du im Verzeichnis ...-neu vor und am Ende erstellt Du
in /usr/src mittels "diff" und ein paar Optionen (-> "man diff")
ein File, welches die Unterschiede zwischen den zwei Verzeich-
nissen (oder genauer gesagt dem Inhalt der Verzeichnisse) auf-
zeigt. Diff protokolliert das, was zu ändern wäre, um von den
Dateien im ersten Verzeichnis auf die Dateien im zweiten Ver-
zeichnis (die neuen) zu kommen. Diff liefert die Unterschiede
auf stdout, also "diff -urN kernel-2.4.18 kernel-2.4.18-neu >
datei.patch". Und dieses File "datei.patch" ist Dein Patch.
Diff protokolliert die Aufruf-Parameter mit, d.h. diese stehen
dann auch in der datei.patch.
Dein Kumpel will Deinen Patch testen - er legt sich die
Kernelsourcen des 2.4.18 auf die Platte und da er sie in
/usr/src/linux legt und von Deinem /usr/src/kernel-2.4.18 und
/usr/src/kernel-2.4.18-neu nichts weiß oder wissen will, legt er
Deine datei.patch in das Verzeichnis /usr/src/linux (und eben
nicht nach /usr/src) und ruft patch auf mit "patch -p1 < 
datei.patch | tee patch.out". Patch vollführt die durch diff
protokollierten Änderungen. Durch "-p1" (-> "man patch") wird
das erste Verzeichnis im diff-File (also das "kernel-2.4.18"
bzw. "kernel-2.4.18-neu" in Deiner "datei.patch") ignoriert.
Das "tee" protokolliert stdout in die Datei "patch.out" und
da kannst Du dann nachschauen, ob alles geklappt hat. Insbe-
sondere beim Einspielen umfangreicher Patches auf einem
schnellen Rechner ist das sehr zu empfehlen  :)


Gruß,
ab


-- 
To err is human; effective mayhem requires the root password!
--


-- 
Zum AUSTRAGEN schicken Sie eine Mail an debian-user-german-request@lists.debian.org
mit dem Subject "unsubscribe". Probleme? Mail an listmaster@lists.debian.org (engl)



Reply to: