Articles

:Hoe een patch toepassen

Posted on

Inleiding

Deze pagina legt uit hoe je een patchbestand kunt toepassen. Patch is een standaard formaat, en er zijn veel opties voor hoe je een patch kunt toepassen. Kies degene die voor u het gemakkelijkst is.

Het meest kritisch is misschien wel het gebruik van de -p vlag, die patch vertelt over de relatie tussen de directory waar het patch bestand zich bevindt en de bestanden die gepatcht zullen worden. Zie de referenties hieronder voor details en veronderstel NIETS.

Een patch toepassen in Windows met gnuwin32

  • Patch voor Windows downloaden en uitpakken van sourceforge Ik heb de patch.exe binary in C:\bin geplaatst (OPMERKING: Het gaat een stuk gemakkelijker als je het in een map zet waar geen witruimtes in staan.)
  • Moodle ergens downloaden en uitpakken. bijv: C:\moodle
  • Download het patchbestand en plaats dit in dezelfde map als Moodle (C:\moodle-pasword-policy-17.diff)
  • Open het patchbestand met Wordpad en klik op ‘Bestand’ >> ‘Opslaan als…’, kies een andere naam voor het bestand, bijvoorbeeld (‘mynewpatch.diff’) en “Opslaan als type” >> ‘Tekstdocument – MS-DOS Formaat’
  • Open een opdracht tekstvenster, en type:
 cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff

Het getal achter de optie ‘-p’ kan per patchbestand verschillen, omdat het afhangt van de manier waarop het patchbestand is gegenereerd. Bekijk de manual pagina van de ‘patch’ utility om te zien hoe de ‘-p’ optie werkt. Je zou ook deze diff en patch tutorial kunnen bekijken.

  • U zou een uitvoer moeten krijgen gelijkaardig aan deze (de namen en het aantal gepatchte bestanden variëren van patch tot patch):
 patching file admin/settings/security.php patching file lang/en_utf8/admin.php patching file lib/moodlelib.php patching file login/change_password.php patching file login/signup.php patching file user/edit.php Hunk #1 succeeded at 430 (offset 2 lines).

In dit stadium is de patch nog niet toegepast. We hebben alleen de toepassing gesimuleerd (met de ‘–dry-run’ optie), om te zien of we er problemen mee gaan vinden. Voordat we uitleggen hoe we de patch daadwerkelijk toepassen, gaan we het hebben over wat er mis zou kunnen zijn, en hoe we daarmee om kunnen gaan.

Mogelijke problemen en hoe daarmee om te gaan

Mogelijke problemen

Als alles goed gaat, zal de patch netjes worden toegepast en zou het leven goed moeten zijn! Maar soms zal de patch niet 100% zuiver worden toegepast door een versieverschil tussen de originele bestanden gebruikt om het patchbestand te maken en uw lokale bestanden. In dit geval zal het ‘patch’ commando proberen om zoveel mogelijk veranderingen toe te passen, en zal het wat diagnostieken uitsturen die de problemen beschrijven die het tegenkomt.

  • Als je een ‘Hunk #n succeeded…’ bericht krijgt, is de patch correct toegepast, hoewel op andere regelnummers dan het originele bestand. Als we de patch daadwerkelijk hadden toegepast, zou het patch-commando een extra bestand hebben aangemaakt voor elk van de bestanden waar de hunk op een andere offset is toegepast, dat dezelfde naam zou hebben als het originele bestand met de extra extensie .orig.
  • Als je de melding ‘Hunk #n mislukt…’ krijgt, zou de patch niet correct zijn toegepast. In dit geval zou de ‘patch’ opdracht twee extra bestanden hebben aangemaakt voor elk van de bestanden waar de hunk niet correct is toegepast, genaamd:
    • originele-bestandsnaam.orig Dit zou het originele bestand zijn voordat de patch werd toegepast, net als hierboven.
    • originele-bestandsnaam.rej Dit bestand zou de hunks bevatten die niet correct konden worden toegepast, zodat je ze zou kunnen inspecteren.

Omgaan met mogelijke problemen

Omgaan met het eerste probleem (de afgezette hunks) is triviaal: we hoeven alleen maar de .orig bestanden te verwijderen zodra we de patch daadwerkelijk toepassen.

In het tweede geval (mislukte hunks), tenzij je weet hoe je de mislukte hunks met de hand kunt repareren, zou je de patch niet moeten toepassen, omdat dat je Moodle installatie zou beschadigen. Als je de patch wil toepassen en de mislukte hunks met de hand proberen te herstellen, dan moet je de ‘-b’ optie gebruiken. Die optie maakt automatisch een backup van elk bestand waarop de patch van toepassing is, met de extensie .orig. Dat zou je in staat stellen om terug te gaan naar de originele bestanden door simpelweg de gewijzigde bestanden te overschrijven met hun .orig backups.

Soms zal er een groot verschil in regelnummers zijn sinds een patch is gegenereerd en de patch zal niet van toepassing zijn. Je kunt patch vertellen om grotere verschillen in regelnummers toe te staan door de fuzz optie ‘-F’ te gebruiken om het aantal regels verschil dat er kan zijn te vergroten. Bijvoorbeeld patch -F 100 zou 100 regels verschil toestaan.

De patch daadwerkelijk toepassen

Nu we weten wat er fout kan gaan en hoe we daar mee om moeten gaan, laten we eens kijken hoe we de patch kunnen toepassen. We hoeven alleen maar de ‘–dry-run’ te verwijderen:

 cd \moodle c:\bin\patch.exe -p1 < mynewpatch.diff

en optioneel de ‘-b’ optie te gebruiken als we gaan proberen de mislukte hunks met de hand te repareren:

 cd \moodle c:\bin\patch.exe -b -p1 < mynewpatch.diff

Een patch toepassen in Windows met NetBeans

NetBeans wordt geleverd met geïntegreerde tools voor versiebeheer en samenwerking tussen ontwikkelaars, waaronder krachtige grafische Diff tools en het eenvoudig toepassen (en maken) van patches. U kunt elke patch toepassen op een bestand vanuit het contextmenu van het bestand.

Een patch toepassen in Linux met “patch”

gebruik iets als:patch -p1 < patchfile.diffsee hier voor meer details over het gebruik van Patch in Linux

Zie ook

  • Patch
  • Ontwikkeling:How_to_create_a_patch
  • Drupal – using Cygwin in Windows to apply a patch
  • Drupal – how to apply a patch in Mac OS X
  • moodle post – using gnuwin32 to apply a patch

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *