Como crear y aplicar un parche a un código fuente

A veces cuando se descarga el código fuente de un programa puede ser necesario cambiar algunas cosas para hacerlo funcionar: el código está obsoleto y necesita cambios, algunas librerí­as se encuentran en otro lado, errores en el código. O también puede ser necesario agregarle/remover código para funcione mas rápido, tenga nuevas funciones, mayores optimizaciones, etc.

Para ello se usa un parche, que es un archivo que contiene información de lo que se debe cambiar al archivo original para que quede a como se modificó previamente por otra persona (o uno mismo). Así­ que en vez de que cada persona que desea modificar de la misma manera el código deba abrir cada archivo, buscar las lí­neas donde se mete el código nuevo, borrar lo necesario y guardar; se les da el parche que realiza esta tarea de manera automatizada. Esto es usado por ejemplo por algunos empaquetadores que deben modificar el código fuente de un programa para que cumpla el estándar ó funcione como lo pide su distribución, para enviar cambios código fuente a un proyecto de software, entre otras cosas.

Por ejemplo, existen modificaciones no oficiales que se la hacen al kernel linux para agregarle nuevas funcionalidades, nuevas optimizaciones de velocidad, soporte para algunos dispositivos (ejem: el hardware del PS3), entre muchas cosas. Pero para ello, no es necesario hacer copias de todo el código fuente para cada modificación hecha: por ejemplo, el sitio kernel.org no tiene que colocar el todo código fuente de linux modificado para funcionar mejor en escritorio, todo el código fuente del kernel para el ps3, el código fuente para correr en una plataforma no soportado, sino sólo ofrecer el código fuente original y los “programadores/empaquetadores/geeks” se encargarán de aplicar un parche para modificar el archivo original agregando los cambios necesario para su propósito.

Los pasos a seguir para crear un parche se hace con solo 1 comando, primero modificamos el programa de acuerdo a nuestras necesidades en una carpeta/archivo aparte (para no perder el original), y utilizamos el programa diff para ver la diferencia entre el archivo original y el nuevo (modificado). Usamos el siguiente comando para guardar la información de cambios en un archivo/directorio en un archivo patch:

//se pueden usar directorios para modificaciones múltiples de archivos
diff -Naur dir_archivo_original archivo_nuevo > parche.patch

Con esto ya se tiene guardado en el archivo parche.patch la información acerca de los cambios realizados y donde se encuentran los mismos. Ahora la persona que recibe o quiere usar el parche para cambiar el código fuente original por lo que necesita sólo debe hacer:

//se puede usar un directorio en vez de archivo a modificar
patch -Np1 -i ruta_archivo_parche ruta_archivo_a_modificar

¡Y listo! De esta manera es como se recomienda enviar cambios de un código, ya que la persona no tiene que leer todo el código para encontrar los cambios (el mismo parche te dice donde se han realizado) y puede aplicar los cambios si lo desea y sin perder el original.

Nota: Disculpen, creo que lo escribí­ un poco confuso.

7 comentarios

  1. No tenia ni idea que los parches eran tan fáciles de hacer, he aplicado parches a código pero nunca me habia preocupado por saber como estaban hechos. Gracias por el articulo!

  2. Como hacen las personas que crean parches para softwares de otras compañias.

    Ejemplo: He visto en internet gente que crea parches para juegos, para camtasia, etc.

    Es interesante porque ellos no poseen el codigo fuente.

  3. [cuote]
    Nota: Disculpen, creo que lo escribí­ un poco confuso.
    [/cuote]
    Tí­o, como esto me funcione está escrito de P.M. Sencillo y conciso.
    Faltarí­a especificar desde qué ruta debes llamar al parche, pero he dado con ello al 2º intento 😀

  4. hola, que tal,
    Muy interesante el articulo.

    Quisiera saber lo mismo que dijo “ItaloMorales”:
    Como hacen las personas que crean parches para softwares de otras compañias.
    Ejemplo: He visto en internet gente que crea parches para juegos, para camtasia, etc.
    Es interesante porque ellos no poseen el codigo fuente.

    Se puede inyectar código en un exe, ya compilado?

    Desde ya muchas gracias. Saludos.

  5. A veces la compañias de juegos dan acceso a herramientas para crear modificaciones oficiales, luego hacen un parche binario, que cambia los bits necesarios en el ejecutable/archivos para realizar la modificacion.

Deja un comentario