Articles

:Come applicare una patch

Posted on

Introduzione

Questa pagina spiega come puoi applicare un file patch. Patch è un formato standard, e ci sono molte opzioni su come applicarne una. Scegliete quella più semplice per voi.

Perfettamente critico è l’uso del flag -p, che indica a patch la relazione tra la directory in cui si trova il file di patch e i file che saranno patchati. Vedere i riferimenti qui sotto per i dettagli e NON supporre nulla.

Applicare una patch in Windows usando gnuwin32

  • Scaricare ed estrarre patch per windows da sourceforge Ho messo il binario patch.exe in C:\bin (NOTA: Le cose sono molto più facili se lo metti in una directory che non ha spazi bianchi.)
  • Scaricare ed estrarre Moodle da qualche parte. es: C:\moodle
  • Scarica il file patch e mettilo nella stessa directory in cui hai messo Moodle (C:\moodle\password-policy-17.diff)
  • Apri il file patch con Wordpad, e clicca su ‘File’ >> ‘Salva con nome…’, scegli un nome diverso per il file ad esempio (‘mynewpatch.diff’) e “Salva come tipo” >> ‘Documento di testo – Formato MS-DOS’
  • Aprire una finestra di testo di comando, e scrivere:
 cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff

Il numero dopo l’opzione ‘-p’ può variare a seconda del file di patch, poiché dipende dal modo in cui il file di patch è stato generato. Dai un’occhiata alla pagina del manuale dell’utilità ‘patch’ per vedere come funziona l’opzione ‘-p’. Puoi anche dare un’occhiata a questo tutorial su diff e patch.

  • Dovresti ottenere un output simile a questo (i nomi e la quantità di file patchati variano da patch a 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).

A questo punto la patch non è stata applicata. Abbiamo solo simulato l’applicazione (con l’opzione ‘–dry-run’), per vedere se troveremo qualche problema con essa. Prima di spiegare come applicare effettivamente la patch, parleremo di cosa potrebbe essere sbagliato e come affrontarlo.

Problemi potenziali e come affrontarli

Problemi potenziali

Se tutto va bene, la patch verrà applicata in modo pulito e la vita dovrebbe essere buona! Ma a volte la patch non si applica in modo pulito al 100% a causa di una discrepanza di versione tra i file originali usati per produrre il file patch e i tuoi file locali. In questo caso, il comando ‘patch’ cercherà di applicare quante più modifiche possibili, ed emetterà alcuni diagnostici che descrivono i problemi che incontra.

  • Se si ottiene qualche messaggio ‘Hunk #n succeeded…’, la patch sarebbe stata applicata correttamente anche se a numeri di linea diversi dal file originale. Se avessimo effettivamente applicato la patch, il comando ‘patch’ avrebbe creato un file addizionale per ciascuno dei file in cui l’hunk è stato applicato ad un diverso offset, che sarebbe stato nominato come il file originale con l’estensione addizionale .orig.
  • Se ottieni qualche messaggio ‘Hunk #n failed…’, la patch non sarebbe stata applicata correttamente. In questo caso il comando ‘patch’ avrebbe creato due file addizionali per ogni file in cui l’hunk non è stato applicato correttamente, chiamati:
    • original-file-name.orig Questo sarebbe il file originale prima che la patch fosse applicata, proprio come sopra.
    • original-file-name.rej Questo file conterrebbe gli hunk che non hanno potuto essere applicati correttamente, così da poterli ispezionare.

Gestione dei potenziali problemi

Gestire il primo problema (le hunks spostate) è banale: abbiamo solo bisogno di cancellare i file .orig una volta che abbiamo effettivamente applicato la patch.

Nel secondo caso (hunks falliti), a meno che non si sappia come correggere le hunks fallite a mano, non si dovrebbe applicare la patch, poiché ciò corromperebbe l’installazione di Moodle. Se vuoi applicare la patch e provare a sistemare a mano gli hunk falliti, dovresti usare l’opzione ‘-b’. Questa opzione fa automaticamente un backup di ogni file a cui si applica la patch, con l’estensione .orig. Questo ti permetterebbe di tornare allo stato originale dei file semplicemente sovrascrivendo i file modificati con i loro backup .orig.

A volte, ci sarà una grande differenza nei numeri di linea da quando una patch è stata generata e la patch non sarà applicata. Puoi dire alla patch di permettere differenze maggiori nei numeri di linea usando l’opzione fuzz ‘-F’ per aumentare il numero di linee di differenza che possono esserci. Per esempio patch -F 100 permetterebbe 100 linee di differenza.

Applicare effettivamente la patch

Ora che sappiamo cosa potrebbe andare storto e come affrontarlo, vediamo come applicare la patch. Dobbiamo solo rimuovere l’opzione ‘–dry-run’:

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

e opzionalmente usare l’opzione ‘-b’ se vogliamo provare a sistemare a mano gli hunk falliti:

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

Applicare una patch in Windows usando NetBeans

NetBeans è dotato di strumenti integrati per il controllo della versione e la collaborazione degli sviluppatori che includono potenti strumenti grafici Diff e la facile applicazione (e creazione) di patch. È possibile applicare qualsiasi patch ad un file dal menu contestuale del file.

Applicare una patch in Linux usando “patch”

usare qualcosa come:patch -p1 < patchfile.diffe vedere qui per maggiori dettagli sull’uso delle patch in Linux

Vedi anche

  • Patch
  • Sviluppo:How_to_create_a_patch
  • Drupal – usare Cygwin in Windows per applicare una patch
  • Drupal – come applicare una patch in Mac OS X
  • moodle post – usare gnuwin32 per applicare una patch

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *