Comment créer des correctifs de fichiers (patch)
Un seul Fichier
Voici comment créer un fichier correctif que vous appliquerez ensuite sur un système cible pour modifier l'un de ses fichiers.
Obtenir la copie originale
cp /pathtofile/myfile.conf /pathtofile/myfile.conf.orig
Modifier le fichier manuellement
À l’aide de n’importe quel éditeur, apportez manuellement les modifications souhaitées au fichier /pathtofile/myfile.conf.
Capturez la différence dans un patch
diff -u /pathtofile/myfile.conf.orig /pathtofile/myfile.conf >myfile.patch
Essayez le patch
Annulez les modifications manuelles que vous avez apportées.
patch -R -p0 <myfile.patch
Refaites vos modifications.
patch -p0 <myfile.patch
Répertoire récursif
Dans cet exemple, nous regroupons toutes les modifications apportées à une arborescence de thèmes Pelican dans un seul fichier correctif.
Dupliquer
Nous commençons par dupliquer l’arbre complet.
cp -r ${HOME}/pelican-themes ${HOME}/pelican-themes.orig
CONSEIL
J'ai tendance à conserver ma copie originale et à la réutiliser fréquemment lorsque je modifie des éléments. Pour éviter de modifier par inadvertance quelque chose dans la version originale et de compromettre ainsi toutes les modifications ultérieures, j'aime protéger les fichiers .orig.
Ce n'est pas indispensable, mais cela m'a bien servi.
chmod -w --recursive pelican-themes.orig/
Créer un fichier de correctif
Nous effectuons maintenant toutes les modifications souhaitées dans le répertoire pelican-themes. Une fois cela fait, nous créons le fichier patch intégrant toutes les modifications.
cd ${HOME}/pelican-themes
diff -Naru ../pelican-themes.orig . > ../pelican-themes.patch
Note:
-N --new-fil traiter les fichiers absents comme vides-a --text traiter tous les fichiers comme du texte-r --recursive comparer récursivement les sous-répertoires-u -U --unified[=NUM] Émettre NUM lignes de contexte unifié (par défaut 3)
Annuler les modifications
cd ${HOME}/pelican-themes
patch -Rs -p0 < ${HOME}/pelican-themes.patch
Note:
N'oubliez pas que les répertoires créés par patch doivent être supprimés manuellement.-R --reverse Supposons que le patch a été créé avec les anciens et les nouveaux fichiers échangés-s --silent Silencieusement-pN Supprimez le plus petit préfixe de fichier contenant N barres obliques. 0 signifie préfixe complet.
Appliquer les modifications du correctif
cd ${HOME}/pelican-themes
patch -s -p0 < ${HOME}/pelican-themes.patch