Introducción
Esta página explica cómo se puede aplicar un archivo de parche. El parche es un formato estándar, y hay muchas opciones de cómo aplicar uno. Elija la que le resulte más fácil.
Tal vez lo más crítico sea el uso de la bandera -p, que le indica a patch la relación entre el directorio donde se encuentra el archivo de parche y los archivos que serán parcheados. Vea las referencias de abajo para más detalles y NO asuma nada.
Aplicar un parche en Windows usando gnuwin32
- Descargue y extraiga el parche para windows desde sourceforge Yo coloqué el binario patch.exe en C:\NBin (NOTA: Las cosas son mucho más fáciles si lo pone en un directorio que no tenga espacios en blanco.)
- Descargue y extraiga Moodle en algún lugar. eg: C:\moodle
- Descarga el archivo del parche y colócalo en el mismo directorio donde pusiste Moodle (C:\moodle\password-policy-17.diff)
- Abre el archivo del parche con el Wordpad, y haz clic en ‘Archivo’ >> ‘Guardar como…’, elige un nombre diferente para el archivo, por ejemplo (‘mynewpatch.diff’) y «Guardar como tipo» >> ‘Documento de texto – Formato MS-DOS’
- Abre una ventana de texto de comandos, y escribe:
cd \moodle c:\bin\patch.exe --dry-run -p1 < mynewpatch.diff
El número que sigue a la opción ‘-p’ puede variar según el archivo de parche, ya que depende de la forma en que se generó el archivo de parche. Echa un vistazo a la página del manual de la utilidad ‘patch’ para ver cómo funciona la opción ‘-p’. También puedes echar un vistazo a este tutorial de diff y patch.
- Deberías obtener una salida similar a esta (los nombres y la cantidad de archivos parcheados varían de un parche a otro):
patching file admin/settings/security.php patching file lang/en_utf8/admin.php patching file lib/moodlelib.php patching file login/change_password.php patching file login/signup.php patching file user/edit.php Hunk #1 succeeded at 430 (offset 2 lines).
En esta fase el parche no se ha aplicado. Sólo hemos simulado la aplicación (con la opción ‘–dry-run’), para ver si vamos a encontrar algún problema con ella. Antes de explicar cómo aplicar realmente el parche, vamos a hablar de lo que podría estar mal, y cómo solucionarlo.
Problemas potenciales y cómo solucionarlos
Problemas potenciales
Si todo va bien, el parche se aplicará limpiamente y ¡la vida debería ser buena! Pero a veces el parche no se aplicará de forma 100% limpia debido a un desajuste de versión entre los archivos originales utilizados para producir el archivo del parche y sus archivos locales. En este caso, el comando Patch intentará aplicar todos los cambios que pueda, y emitirá algunos diagnósticos describiendo los problemas que encuentre.
- Si obtiene algún mensaje ‘Hunk #n succeeded…’, el parche se habría aplicado correctamente aunque en números de línea diferentes a los del archivo original. Si realmente hubiéramos aplicado el parche, el comando ‘patch’ habría creado un archivo adicional para cada uno de los archivos en los que se aplicó el hunk en un offset diferente, que se llamaría como el archivo original con la extensión adicional .orig.
- Si obtiene algún mensaje ‘Hunk #n failed…’, el parche no se habría aplicado correctamente. En este caso, el comando ‘patch’ habría creado dos archivos adicionales para cada uno de los archivos en los que el hunk no se aplicó correctamente, llamados:
- nombre-archivo-original.orig Este sería el archivo original antes de que se aplicara el parche, al igual que en el caso anterior.
- nombre-archivo-original.rej Este archivo contendría los hunks que no pudieron aplicarse correctamente, para que puedas inspeccionarlos.
Tratando con los problemas potenciales
Tratando con el primer problema (los hunks desplazados) es trivial: sólo tenemos que borrar los archivos .orig una vez que apliquemos realmente el parche.
En el segundo caso (hunks fallidos), a menos que sepas cómo arreglar los hunks fallidos a mano, no deberías aplicar el parche, ya que eso corrompería tu instalación de Moodle. Si quiere aplicar el parche e intentar arreglar los hunks fallidos a mano, debe utilizar la opción ‘-b’. Esa opción hace automáticamente una copia de seguridad de cada archivo al que se aplica el parche, con la extensión .orig. Eso le permitiría volver al estado de los archivos originales simplemente sobrescribiendo los archivos modificados con sus copias de seguridad .orig.
A veces, habrá una gran diferencia en los números de línea desde que se generó un parche y el parche no se aplicará. Puede decirle a patch que permita mayores diferencias en los números de línea usando la opción fuzz ‘-F’ para aumentar el número de líneas de diferencia que puede haber. Por ejemplo patch -F 100 permitiría 100 líneas de diferencia.
Aplicando el parche
Ahora que sabemos qué puede salir mal y cómo solucionarlo, vamos a ver cómo aplicar el parche. Sólo tenemos que quitar la opción ‘–dry-run’:
cd \moodle c:\bin\patch.exe -p1 < mynewpatch.diff
y opcionalmente usar la opción ‘-b’ si vamos a intentar arreglar los hunks fallidos a mano:
cd \moodle c:\bin\patch.exe -b -p1 < mynewpatch.diff
Aplicar un parche en Windows usando NetBeans
NetBeans viene con herramientas integradas para el control de versiones y la colaboración entre desarrolladores que incluyen potentes herramientas gráficas de Diff y aplicar (y crear) parches fácilmente. Puedes aplicar cualquier parche a un archivo desde el menú contextual del archivo.
Aplicar un parche en Linux usando «patch»
Usa algo como:patch -p1 < patchfile.diffsee aquí para más detalles sobre el uso de Patch en Linux
Vea también
- Patch
- Desarrollo:Cómo_crear_un_parche
- Drupal – usando Cygwin en Windows para aplicar un parche
- Drupal – cómo aplicar un parche en Mac OS X
- post de moodle – usando gnuwin32 para aplicar un parche
- .