7 Commande Exemples Patch à Appliquer Diff Patch fichiers sous Linux
Quand il y a un correctif de sécurité disponible pour un logiciel particulier, nous faisons généralement une mise à niveau binaire en utilisant les outils de gestion de paquets comme yum ou apt-get.
Mais, il pourrait y avoir des cas où vous avez installé un logiciel en compilant à partir du code source.
Dans ces conditions, comment appliquez-vous le correctif de sécurité du logiciel?
La réponse est de télécharger le correctif de sécurité et l'appliquer au code source d'origine et recompiler le logiciel.
Ce tutoriel explique comment créer un fichier de patch en utilisant diff, et l'appliquer en utilisant la commande patch.
Un fichier patch est un fichier texte qui contient les différences entre les deux versions du même fichier (ou même source arbre). fichier Patch est créé en utilisant la commande diff.
1. Création d'un fichier de patch en utilisant diff
Pour comprendre cela, laissez-nous créer un petit programme C nommé hello.c
Maintenant, copiez le hello.c à hello_new.c
Modifier le hello_new.c comme indiqué ci-dessous pour faire quelques petits changements:
Enfin, créez le fichier patch en utilisant la commande diff, comme indiqué ci-dessous:
La commande ci-dessus crée un fichier patch nommé « hello.patch ».
2. Appliquer fichier patch à l'aide de commande Patch
La commande « patch » prend un fichier patch en entrée et appliquer les différences à un ou plusieurs fichiers d'origine (s), produisant des versions corrigées.
Utilisez la commande patch comme indiqué ci-dessous pour appliquer le hello.patch au code source hello.c d'origine.
Le fichier hello.patch contient le nom du fichier à patcher. Une fois que le fichier est patché, à la fois hello.c et hello_new.c auront le contenu.
3. Créer un patch d'une arborescence source
L'exemple ci-dessus était si simple que cela fonctionne uniquement avec un seul fichier. Nous verrons comment créer et appliquer le correctif pour un arbre source complet en prenant le code source « OpenVPN » comme exemple.
J'ai téléchargé 2 version de OpenVPN, OpenVPN-2.3.2 et OpenVPN-2.3.4.
Maintenant, nous allons créer le patch en utilisant la commande suivante.
La commande ci-dessus fonctionnera de manière récursive et trouver les différences et placer ces différences dans le fichier de patch.
4. Appliquer fichier correctif à un code source d'arbre
Les commandes de patch suivantes peuvent être utilisées pour appliquer le patch à l'arbre source.
S'il vous plaît noter que nous exécutons la commande de / usr / src /. Le fichier correctif contient tous les noms de fichiers au format chemin absolu (de la racine). Ainsi, lorsque nous exécutons sans l'option « -p » de / usr / src, il ne fonctionnera pas correctement.
-p3 indique la commande patch pour sauter 3 barres obliques des présents dans le nom de fichier fichier patch. Dans notre cas, le nom du fichier dans le fichier patch est « /usr/src/openvpn-2.3.2/aclocal.m4 », puisque vous avez donné « -p3 », 3 barres obliques, à savoir jusqu'à ce que / usr / src / est ignoré.
5. Faites une sauvegarde avant d'appliquer le patch à l'aide -b
Vous pouvez faire une sauvegarde du fichier d'origine avant d'appliquer la commande patch en utilisant l'option -b comme indiqué ci-dessous.
Maintenant, vous aurez un nom de fichier « hello.c.orig », qui est la sauvegarde de l'hello.c d'origine.
6. Valider le patch sans application (File Patch marche à sec)
Vous pouvez sécher exécuter la commande patch pour voir si vous obtenez des erreurs, sans patcher le fichier en utilisant l'option -dry-run comme indiqué ci-dessous.
Vous pouvez voir que hello.c n'est pas modifié du tout.
7. inverse un patch qui est déjà appliqué (Annuler un patch)
Vous pouvez utiliser l'option R pour inverser un patch qui est déjà appliquée.
Vous pouvez remarquer de la taille du fichier, que le patch, qui est appliqué est déjà inversé lorsque nous avons utilisé l'option -R.