Is it a fake website?

21 mayo 2007

Chuleta para crear un parche en tu proyecto O.S preferido

Son muchas las maneras de colaborar con el opensource, la más directa es mediante código, ya sea con nuevas funcionalidades que necesitas y no están implementadas, o corrigiendo pequeños bugs que tiene y son fáciles de corregir (esta última, una buena manera de empezar..).
Para ello pego está chuleta con la que podremos crear un parche. Pasos;

  • Puedes trabjar con CVS o subversion pero tambien puedes tener el directorio original y una copia donde realizaras tus modificaciones.

[root@logadmin etc]# ll samba-3.0.24
samba-3.0.24/ samba-3.0.24-MOD/
  • Realiza las modificaciones necesarias en el código (en este ejemplo, simplemente he hecho alguna modificación -sin sentido- para mostrarlo de una manera práctica. Simplemente he cambiado algunos mensajes de debug de inglés a castellano en el archivo

    vi samba-3.0.24-MOD/source/smbd/password.c
  • Una vez hechas las modificaciones necesarias, creamos nuestro parche con:
LC_ALL=C TZ=GMT0 diff -Naur samba-3.0.24/source/smbd/password.c samba-3.0.24-MOD/source/smbd/password.c

Explicación de los parámetros:

La variable de entorno LC_ALL configura el escenario para el comando diff, concretamente, nos aseguramos que todas las traducciones o formatos locales como fecha, hora o similares no serán relevantes en la máquina del usuario.
La variable TZ con el valor GMT0 se asegura que la hora y fecha de la salida de diff estan en "hora universal" para tener las fechas y horas configuradas correctamente en los archivos de patch.
Estas dos opciones se deben principalmente a la peculiaridad de los proyectos Open Source, donde desarrolladores de todo el mundo pueden colaborar. :)

Las opciones de diff son:

-N En la comparación de directorio si un archivo se encuentra en un sólo directorio lo tratará como está, y vacío en el otro directorio (esta opción aunque la pongo por defecto en este caso concreto con dos ficheros únicamente no es necesario)
-a trata todos los archivos como texto y los comparará línea a línea.
-u usará la salida de format unificada, incluirá algún contexto sobre las diferencias que ayudarán a "patch" a encontrar el lugar exacto para aplicar los cambios.
-r cuando se comparen directorios, usa una búsqueda recursiva en los subdirectorios.


[root@logadmin etc]# LC_ALL=C TZ=GMT0 diff -Naur samba-3.0.24/source/smbd/password.c samba-3.0.24-MOD/source/smbd/password.c
--- samba-3.0.24/source/smbd/password.c 2007-02-04 18:59:13.000000000 +0000
+++ samba-3.0.24-MOD/source/smbd/password.c 2007-05-21 06:58:47.000000000 +0000
@@ -276,7 +276,7 @@
vuser->user.unix_name, vuser->user.smb_name,
vuser->user.domain, vuser->guest ));

- DEBUG(3, ("User name: %s\tReal name: %s\n", vuser->user.unix_name,
+ DEBUG(3, ("Nombre de usuario: %s\tReal name: %s\n", vuser->user.unix_name,
vuser->user.full_name));

if (server_info->ptok) {
@@ -688,7 +688,7 @@
BOOL ok = False;

#ifdef DEBUG_PASSWORD
- DEBUG(100,("authorise_login: checking authorisation on "
+ DEBUG(100,("authorise_login: comprobando autorizacion en "
"user=%s pass=%s\n", user,password.data));
#endif

  • La salida de este comando la puedes redirigir a un fichero que habrás nombrado con algo signficativo de la acción que realiza.

Existen multitud de proyectos open source que esperan tu ayuda.

4 comentarios:

Blaxter dijo...

simple y eficiente post :), muy bueno

Emilio dijo...

Gracias blaxter, de eso se trata :)

Anónimo dijo...

Lo mismo digo. Las dos variables que has puesto antes del diff no las conocía

Anónimo dijo...

Impresionante, gracias.