sábado, 3 de marzo de 2012

Consultando paquetes y bugs en Debian con rmadison y reportbug

Esta es la primer entrada sobre Ubuntu Development orientada a aquellos que tengan un entorno de desarrollo funcionando y/o los interesados en la tematica.

Algunas notas rapidas sobre algunas herramientas que nos sirven al momento de consultar paquetes en debian. Uno de los casos mas comunes es el momento de querer arreglar un paquete en Ubuntu, ya que quizas este haya sido solucionado en debian. Por suerte tengo un ejemplo en el que trabaje hace un tiempo . El escenario es el siguiente.

El reporte del bug lo encontré en Ubuntu (Launchpad) y comence a solucionarlo, pero siguiendo las reglas busque algun tipo de reporte similar en Debian, y encontre un reporte del mismo problema.

Todos los paquetes en Ubuntu (o casi todos) son importados directamente de la version en desarrollo de Debian, lo que significa que los paquetes arreglados en Debian llegan felizmente a Ubuntu. Dependiendo del estado del ciclo de la version actual en desarrollo de Ubuntu, los paquetes seran importados (sincronizados) o no. Se hace una unica sincronizacion de manera automatizada (solo imaginen lo descumunal que ha de ser) y si se desea realizar sincronizaciones de paquetes posteriormente, se debe hacer de manera manual.

Algunos desarrolladores en Ubuntu, envian los parches a Debian, y una vez aceptados y aplicados en Debian, se hace manualmente una sincronizacion del paquete en Ubuntu. De esta manera, no solo Ubuntu se verá benefiada por el paquete corregido sino todas las distribuciones que importan sus paquetes desde Debian.

Por suerte, en mi caso el encargado de revistar mi trabajo (reviewer/sponsor) me dio la oportunidad de aplicar el cambio en Ubuntu utilizando el parche aplicado en Debian.

Espero se hagan una pequeña idea de como funciona la relacion Ubuntu-Debian. Dejemos la teoria.

Primero comencemos con rmadison. Esta utilidad, parte del paquete devscripts, nos permite consultar la existencia de paquetes en Debian y Ubuntu. Es una herramienta muy util y facil de utilizar. Veamos.

Si queremos consultar el paquete foo en Debian, hacemos:
rcart*ubuntu:~$ rmadison -u debian foo
rcart*ubuntu:~$

Como vemos, el paquete no existe. Ahora veamos uno que realmente existe: (acorte la salida para no distorcionar)
rcart*ubuntu:~$ rmadison -u debian pidgin
pidgin | 2.4.3-4lenny8 | lenny-security | source, amd64, arm, i386, powerpc, sparc
pidgin | 2.4.3-4lenny8 | lenny | source, alpha, amd64, arm, i386, ia64, powerpc
pidgin | 2.6.6-1~bpo50+1 | backports/lenny | source, hppa
pidgin | 2.7.3-1~bpo50+2 | backports/lenny | source, alpha, amd64, i386, powerpc
pidgin | 2.7.3-1+squeeze2 | squeeze | source, amd64, i386, kfreebsd-amd64
pidgin | 2.10.1-1 | wheezy | source, amd64, i386, kfreebsd-i386, powerpc
pidgin | 2.10.1-1 | sid | source, amd64, i386, kfreebsd-i386, powerpc
rcart*ubuntu:~$

El resultado es bastante claro. Nos muestra el paquete, la version en su rama respectiva y las arquitecturas (lo cual reduje) para las que esta disponible dicho paquete.

Ahora veamos como consultar bugs existentes en Debian.

Primero que nada, debo aclarar que el sistema que Debian utiliza para gestionar los reportes de bugs (Debian Bug Tracking System, BTS) esta diseñado para interactuar mediante correo electronico. Lo que significa que para reportar un bug debemos enviar un correo electronico al BTS, pero no hay por que asustarse, hay herramientas que nos permiten preparar el reporte facilmente ;D

reportbug es la utilidad que nos permite interactuar con el BTS de Debian. En Ubuntu, debemos utilizar la opcion -B debian para indicar que vamos a consultar en Debian, no en Ubuntu.

Normalmente utilizamos esta herramienta para enviar un nuevo reporte sobre un paquete en especifico. reportbug captura el estado del paquete y extrae cierta informacion del mismo para incluirla en el reporte. Pero que pasa si solo queremos consultar los reportes que contiene actualmente un paquete que no tenemos instalado? Utilizamos el argumento -I, el cual indica que no verifique si el paquete esta instalado.

Al momento de consultar los bugs de un paquete, nos pedira que escribamos un Asunto para ser incluido en el reporte, pero como solo estamos consultado, lo dejamos en blanco y presionamos Enter.

Veamos un ejemplo. Vamos a consultar los reportes contra el paquete... mmm... piding:
*** Welcome to reportbug. Use ? for help at prompts. ***
Note: bug reports are publicly archived (including the email address of the submitter).
Detected character set: UTF-8
Please change your locale if this is incorrect.

Using 'X' as your from address.
Please enter the version of the package this report applies to (blank OK)
>
Will send report to Debian (per request).
Querying Debian BTS for reports on pidgin (source)...
130 bug reports found:

Outstanding bugs -- Important bugs; Unclassified (5 bugs)
1) #535790 pidgin: CVE-2009-1889 denial-of-service
2) #563828 finch: GNT shortcuts do not work in Xterm
3) #578476 Crashes when a broken GStreamer plugin is installed
4) #584576 Pidgin randomly crashes
5) #594378 after suspend/resume cycle pidgin fill logs with gstreamer assertion

Outstanding bugs -- Normal bugs; Patch Available (1 bug)
6) #589631 pidgin-data: /etc/purple/prefs.xml is invalid xml
(1-6/130) Is the bug you found listed above [y|N|b|m|r|q|s|f|e|?]?

Si queremos ver en detalle un reporte, escribimos el numero del bug en cuestion, por ejemplo, para ver el primer reporte podemos escribir el numero 1, o 535790, el resultado es el mismo:
What do you want to do now? [N|x|o|r|b|e|q|?]? 1

Original report - #535790: pidgin: CVE-2009-1889 denial-of-service

From: "Michael S. Gilbert"
Date: Sat, 4 Jul 2009 23:42:26 -0400

Package: pidgin
Version: 2.4.3-4lenny2
Severity: important
Tags: security

Hi,
the following CVE (Common Vulnerabilities & Exposures) id was
published for pidgin.

CVE-2009-1889[0]:
| The OSCAR protocol implementation in Pidgin before 2.5.8 misinterprets
| the ICQWebMessage message type as the ICQSMS message type, which
| allows remote attackers to cause a denial of service (application
| crash) via a crafted ICQ web message that triggers allocation of a
| large amount of memory.

More info can be found in redhat bug [1]. Please coordinate with the
security team to prepare updates for the stable releases.

If you fix the vulnerability please also make sure to include the
CVE id in your changelog entry.

For further information see:

[0] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1889
http://security-tracker.debian.net/tracker/CVE-2009-1889
[1]
(END)

Para salir presionamos q, y para terminar la consulta escribimos q y presionamos Enter.

En fin, dos herramientas indispensables al momento de trabajar con paquetes y reportes en Ubuntu. Espero les haya servido ;D

No hay comentarios:

Publicar un comentario