Jan 24, 2010

Creación y aplicación de parches con diff y patch

Patch es una herramienta Linux que permite aplicar un parche a un determinado fichero o directorio.

Un claro ejemplo de la necesidad de emplear esta herramienta puede ser el siguiente: imaginemos que anualmente actualizamos la versión de una determinada aplicación a través del código fuente. El fichero de configuración puede cambiar ligeramente de una versión a otra, pero puede haber ciertos parámetros de configuración que siempre sean los mismos para nosotros y no nos interese modificarlos.

Lo que podemos hacer ante esta situación es generar un parche el cual posteriormente podremos utilizar para parchear las futuras actualizaciones de dicho fichero de configuración.

Vamos a ver todo esto con un sencillo ejemplo. Tenemos dos ficheros, file1 (archivo original) y file2 (archivo modificado) con el siguiente contenido:

[root@centos ~]# cat file1
Hoy es Lunes

[root@centos ~]# cat file2
Hoy es Martes

Para generar el parche ejecutaríamos el comando diff con la opción -u:

[root@centos ~]# diff -u file1 file2 > file.patch

[root@centos ~]# cat file.patch
--- file1 2010-01-21 15:14:08.000000000 +0100
+++ file2 2010-01-21 15:14:42.000000000 +0100
@@ -1 +1 @@
-Hoy es Lunes
+Hoy es Martes

Ahora vamos a suponer que tenemos un tercer fichero con el siguiente contenido:

[root@centos ~]# cat file3
Hoy es Lunes

No me gustan los Lunes

Y queremos parchearlo con el archivo que hemos creado previamente. El resultado sería el siguiente:

[root@centos ~]# patch file3 < file.patch
patching file file3

[root@centos ~]# cat file3
Hoy es Martes

No me gustan los Lunes

Por último, decir que si queremos anular un parche previamente aplicado emplearemos la opción -R.

[root@centos ~]# patch -R file3 < file.patch
patching file file3

[root@centos ~]# cat file3
Hoy es Lunes

No me gustan los Lunes

Utilizando el man pueden verse las múltiples opciones de los comandos diff y patch.

No comments:

Post a Comment