bitacora.lavaramano.md    archivos    feed    acerca de

reportando bugs en Debian, manualmente

Ayer leia el blog de humitos, y habia posteado sobre su experiencia para reportar bugs en debian. Como soy un tipo mas que simpatico (?), le deje un comentario explicando brevemente como podia reportar solamente enviando mails de forma alternativa. Y como me parecio algo interesante para compartir paso a explicarlo nuevamente, pero esta vez tratando de extenderme un poco en que tipo de datos suele usar reportbug.

Leer antes de continuar

No voy a explicar como funciona reportbug, sino como reportar alternativamente a esa herramienta.
Asi mismo, deberian tener una idea del uso del sistema operativo en si para poder utilizar correctamente la informacion que procedere a explicar. Y por sobre todas las cosas, este post es informativo y no esta pensado para que dejen de usar reportbug para reportar por mail directamente. Si la herramienta existe y funciona bien, para que evadirla?

Gracias :-)

A gran escala lo que hace reportbug es preguntarte paso por paso los problemas que tuviste con el programa que supones que tiene un bug, para luego armar un archivo con todos los datos basicos del bug.
Para empezar, solamente necesitamos abrir nuestro cliente de mail favorito y comenzar a redactar un mail a submit@bugs.d.o explicando cual fue el problema que se nos presento en el Subject. Esto debe ser breve, despues de todo es el subject del mail solamente :-)
Una vez que ya hicimos eso, pasamos a escribir el body/cuerpo/mensaje del mail/reporte-de-bug.
Siguiendo los pasos de reportbug, primero nos preguntaria cual es el programa, luego automaticamente obtendria la version del programa instalado y despues nos preguntaria la severidad del error en cuestion, y para eso tenemos las siguientes opciones:

  • critical - cuando el error es completamente destructivo. por ej: borra configuraciones personales.

  • grave - cuando el programa se vuelve inusable. por ej: al ejecutarlo siempre segmentation fault.

  • serious - generalmente se utiliza para indicar que este paquete no es apto para la version estable (de Debian).

  • important - similar a ‘grave’, solo que no sucede todo el tiempo. por ej: arroja segmentation fault si le pasamos un parametro invalido.

  • normal - cuando una funcionalidad del programa no hace lo que deberia.

  • minor - cuando encontramos un error de tipeo o visual del programa, sin que esto afecte al funcionamiento del programa.

  • whishlist - cuando querramos sugerir algo. por ej: el tar.gz original trae ejemplos de uso del programa, pero el paquete de Debian no.

Mas datos se pueden obtener aca.
Como el nombre del programa ya lo sabemos (o deberiamos :-P), nos restaria obtener la version del programa, una de las maneras seria ejecutando lo siguiente:
$ dpkg -l|grep $DEB

Y copiar el nro que aparece en la segunda columna.
Y basicamente con eso ya tenemos un reporte que sera asignado al programa en cuestion, informando al desarrollador.
Pero eso no es todo, si leemos algun reporte de bug, veremos que luego de la descripcion tambien hay informacion sobre la politica del sistema, la version de Debian, la version del kernel, los locales, la shell, las dependencias del programa, los paquetes que dependen del programa (tambien conocidas como rdepends, reverse dependencies o dependencias reversas) y los paquetes que sugiere o tiene conflictos.
Si bien toda esa data reportbug la obtiene automaticamente, tambien es posible obtenerla a mano y de manera bastante sencilla:

obtener la politica del sistema
$ apt-cache policy

Quizas quieran saber que significan esos 1000, 900, 500, 100 que aparecen, para entender como funciona/que significa esto, bien pueden leer sobre apt-pinning o ejecutar man apt_preferences donde tambien lo explican de manera sencilla.

obtener la version de Debian

`$ cat /etc/debian_version  `  
`$ lsb_release -c `  

obtener version del kernel
Esta es facil:
` uname -r `

**obtener los locales **
Los locales no son otra cosa mas que el idioma en el que tenemos nuestro sistema, y para obtenerlo no hace falta hacer otra cosa que:

`$ echo $LANG $LC_TYPE`  
`$ locale `  

lo cual nos deberia devolver algo similar a: “es_AR.UTF-8” o “en_US.utf8”

obtener la shell

$ ls -l /bin/sh

obtener las dependencias, sugerencias y conflictos

$ apt-cache depends $DEB

obtener las dependencias reversas

$ apt-cache rdepends $DEB

Habiendo juntado toda esta informacion, ya tenemos todo lo necesario para reportar decentemente, pero todavia aca no termina!.
Asi como estan los campos package, version, severity tambien estan los tags. Como utilizamos los tags? Solamente necesitamos agregar un campo mas debajo de los antes mencionados y antes de la descripcion que diga “Tags”. Algunos de los tags disponibles son estos, y se los suele utilizar para poder filtrar mas facilmente a los bugs, por ejemplo: bugs irreproducibles.
Una vez que entendimos como funciona, procedamos a escribir el mail que nos quedaria algo similar a esto:

`

Package: *nombre del programa*  
Version: *version del programa*  
Severity: *severidad del bug*  
  
*Descripcion del problema con el programa, tratando de explicarnos y agregando la mayor cantidad posible de informacion sobre el problema.*  
 
`which *programa*`: /usr/bin/*programa*    
  
-- System Information:    
 500 http://ftp.us.debian.org testing/non-free Packages    
 500 http://ftp.us.debian.org testing/contrib Packages    
 500 http://ftp.us.debian.org testing/main Packages    
 500 http://security.debian.org testing/updates/main Packages    
      
Kernel: 2.6.26-1-amd64  
Locale: es_AR.UTF-8  
Shell: /bin/sh -> bash  
  
Dependencies, Recommends, Conflicts:  
 Depends: libc6  
 Depends: libsomething  
 Depends: paquete-extra  
  
Reverse Dependencies:  
 paquete-bla  
 paquete-ble  
 paquete-bli  
 paquete-blo  
 paquete-blu  

`

Ah, y como ultimo tip, para poder reportar con el idioma en ingles (en caso de tenerlo seteado en es_*), deberiamos setear a la variable de entorno $LANG para que tenga el valor por defecto “C”, por lo que deberiamos hacer algo como:

$ LANG_MINE=$LANG; LANG="C" [ reportamos el bug y luego de haber terminado] $ LANG=$LANG_MINE

y voila :-)