<Precedenti | Contenuti | Succ.>
patch
. patch programma viene utilizzato per applicare modifiche ai file di testo. Accetta output da diff ed è generalmente utilizzato per convertire le versioni precedenti dei file in versioni più recenti. Consideriamo un esempio famoso. Il kernel Linux è sviluppato da un team numeroso e poco organizzato di
collaboratori che inviano un flusso costante di piccole modifiche al codice sorgente. Il kernel Linux è composto da diversi milioni di righe di codice, mentre le modifiche apportate da un collaboratore alla volta sono piuttosto piccole. Non ha senso per un collaboratore inviare a ogni sviluppatore un intero albero sorgente del kernel ogni volta che viene apportata una piccola modifica. Invece, viene inviato un file diff. Il file diff contiene la modifica dalla versione precedente del kernel alla nuova versione con le modifiche apportate dal collaboratore. Il destinatario utilizza quindi il patch programma per applicare la modifica al proprio albero sorgente. Utilizzando diff/patch offre due vantaggi significativi:
1. Il file diff è molto piccolo rispetto alle dimensioni totali dell'albero sorgente.
2. Il file diff mostra in modo conciso la modifica apportata, consentendo ai revisori della patch di valutarla rapidamente.
Naturalmente, diff/patch Funziona su qualsiasi file di testo, non solo sul codice sorgente. È ugualmente applicabile ai file di configurazione o a qualsiasi altro testo.
Per preparare un file diff da utilizzare con patch, la documentazione GNU (vedere Ulteriori letture di seguito) suggerisce di utilizzare diff come segue:
diff -Naur vecchio_file nuovo_file > file_diff
Dove vecchio_file e nuovo file sono singoli file o directory contenenti file. r
l'opzione supporta la ricorsione di un albero di directory.
Una volta creato il file diff, possiamo applicarlo per applicare la patch al vecchio file nel nuovo file:
toppa file_diff
Lo dimostreremo con il nostro file di prova:
[io@linuxbox~]$ diff -Naur file1.txt file2.txt > patchfile.txt
[io@linuxbox~]$ patch < patchfile.txt
patch del file file1.txt [me@linuxbox ~]$ file gatto1.txt b
cde
[io@linuxbox~]$ diff -Naur file1.txt file2.txt > patchfile.txt
[io@linuxbox~]$ patch < patchfile.txt
patch del file file1.txt [me@linuxbox ~]$ file gatto1.txt b
cde
In questo esempio, abbiamo creato un file diff denominato patchfile.txt e poi ha usato il patch programma per applicare la patch. Nota che non abbiamo dovuto specificare un file di destinazione per patch, poiché il file diff (in formato unificato) contiene già i nomi dei file nell'intestazione. Una volta applicata la patch, possiamo vedere che file1.txt ora corrisponde file2.txt.
patch ha un gran numero di opzioni e ci sono programmi di utilità aggiuntivi che possono essere utilizzati per analizzare e modificare le patch.