ActualizarPaquetes
Semana del desarrollador
Miercoles 1 de Febrero del 2012 - Como actualizar paquetes - coolbhavi
1 10:01 < chilicuil> y ahora llega coolbhavi que nos hablara sobre como actualizar una aplicacion que ya este
2 en los repositorios de Ubuntu
3 10:02 < chilicuil> asegurense de tener el paquete packaging-dev para seguir la sesion
4 10:02 < chilicuil> actualizar un paquete, la mayor parte de veces es traer la ultima version estable
5 de upstream a ubuntu
6 10:03 < chilicuil> normalmente hacemos esto con un merge o una sincronizacion con los repositorios de Debian
7 10:03 < chilicuil> pero hay casos donde no podemos, por ejemplo, cuando debian se encuentra en etapa
8 'freeze' o cuando el paquete no tiene mantenedor
9 10:04 < chilicuil> o tal vez, solo necesitemos la ultima version para arreglar un error critico
10 10:04 < chilicuil> en ese caso podemos obtenerlo en ubuntu y despues enviarlo a Debian
11 10:04 < chilicuil> asumiendo que hemos entendido este proceso comenzaremos la charla
12 10:04 < chilicuil> lo primero que tenemos que hacer es obtener la ultima version de upstream
13 10:05 < chilicuil> esto tal vez nos de un paquete .tar
14 10:05 < chilicuil> en caso de que tengamos correctamente definido el archivo debian/watch, podemos usar
15 el comando "uscan" para obtener la ultima version
16 10:05 < chilicuil> mas sobre este procedimiento aqui: http://wiki.debian.org/debian/watch
17 10:06 < chilicuil> uscan manda a llamar a uupdate, recomiendo que tambien vean su manual $ man uupdate
18 10:07 < chilicuil> tambien podemos tener una regla en debian/rules, si la tiene podriamos obtener la
19 ultima version si corremos $ make -f debian/rules get-orig-source
20 10:07 < chilicuil> aunque eso depende de paquete en paquete
21 10:07 < chilicuil> no olviden leer el changelog (debian/changelog) para ver si existe algun otro metodo
22 para obtener la ultima version del programa
23 10:08 < chilicuil> bien, una vez que tengamos la ultima version, debemos renombrarlo conforme a la politica
24 de empaquetamiento
25 10:08 < chilicuil> por ejemplo si tenemos foo-1.1.tar.gz lo renombraremos a foo_1.1.orig.tar.gz
26 10:10 < chilicuil> en el caso mas simple, donde no haya cambios en el empaquetamiento, descompriremos
27 el archivo, copiaremos el archivo debian, agregaremos el nuevo cambio en el changelog, sobre la actualizacion
28 y crearemos el binario
29 10:10 < chilicuil> me gustaria que todas las actualizaciones fueran asi de simples =)
30 10:13 < chilicuil> anteriormente a la version 3.0 de dpkg-source, si el empaquetador hacia sus cambios sobre
31 el programa upstream, en lugar de usar un sistema de parches (podias checar estos si veias el diff.gz
32 anterior), hacer cambios dentro del directorio debian no era suficiente, tenias que volver a aplicar el
33 parche sobre el programa, y entonces ocasionalmente te encontrabas con que ya no era compatible, o
34 tenia algunos errores de acoplamiento
35 10:13 < chilicuil> tenias que correr $ date ../foo_2.orig.tar.gz en la version anterior para automatizar
36 el proceso
37 10:14 < chilicuil> pero ahora, gracias a la version 3.0 de dpkg-source, que genera automaticamente un
38 archivo debian-changes-* si encuentra cambios fuera del directorio debian es mucho mas facil
39 10:14 < chilicuil> ademas lintian tambien envia warnings =)
40 10:14 < chilicuil> pueden encontrar mas informacion sobre la nueva version de dpkg-source aqui:
41 http://wiki.debian.org/Projects/DebSrc3.0
42 10:15 < chilicuil> un escenario mas complejo, pero tambien mas real, involucraria revisar las licencias
43 de todos los archivos, para ver si se ha agregado alguna nueva (licensecheck -r --copyright)
44 10:16 < chilicuil> verificar si todos los parches de la version anterior aun sirven para esta, o si se
45 han integrado
46 10:17 < chilicuil> ver si el paquete requiere nuevas dependencias (algunas veces se reporta en los
47 changelogs del programa, pero otras tantas hay que encontrarlas revisando los autoconf y los archivos Make)
48 10:18 < chilicuil> asegurarse que el paquete contiene manual (pagina man), lanzador (archivo .desktop)
49 y si tiene verificar si es valido (desktop-file-validate)
50 10:18 < chilicuil> algunas veces los autores cambian algunas cosas que requiren que se agreguen banderas
51 de compilacion
52 10:18 < chilicuil> en especial si se trata de una libreria, entonces debemos tener cuidado con eso
53 10:19 < chilicuil> hay que verificar si los cambios en la API/ABI se reflejan en SONAME/version (para
54 saber que es soname, ver: http://en.wikipedia.org/wiki/Soname)
55 10:19 < chilicuil> check-symbols te puede ayudar con esa tarea
56 10:20 < chilicuil> algunas veces se necesitara compilar muchos paquetes en los repositorios, si
57 estamos actualizando una libreria de la que dependen muchos programas
58 10:20 < chilicuil> ahora usaremos un ejemplo, para que todo quede mas claro
59 10:21 < chilicuil> espero que no este llendo demasiado rapido, si tienen cualquier pregunta, no duden
60 en interrumpir
61 10:21 < chilicuil> #tambien, si desean que les ayudemos a hacer su pregunta, no duden en hacerla
62 10:22 < chilicuil> regresando.., el paquete que usare como ejemplo es un paquete que yo mismo he creado
63 10:22 < chilicuil> mobile-broadband-provider-info (que por cierto, no he actualizado ultimamente, porque
64 he estado liado con otros asuntos)
65 10:22 < chilicuil> escribiremos en una terminal $ mkdir m-b-p-i && cd m-b-p-i && dget -x
66 https://launchpad.net/ubuntu/+archive/primary/+files/mobile-broadband-provider-info_20111113-1ubuntu1.dsc
67 10:23 < chilicuil> que descargara la ultima version del paquete fuente de debian, de launchpad
68 10:24 < chilicuil> vean que no estoy usando apt-get source mobile-broadband-provider-info dado que
69 eso descargaria la version de oneiric,natty,maverick or lucid), una cosa util solo si se desea hacer un SRU
70 10:24 < chilicuil> obounaim menciona que esta teniendo un error de validacion
71 10:24 < chilicuil> coolbhavi ha pedido que haga $ gpg --recv-keys ID_de_la_llave_con_la_que_tiene_problemas
72 10:25 < chilicuil> y que vuelva a intentar descargarlo $ dget -x
73 https://launchpad.net/ubuntu/+archive/primary/+files/mobile-broadband-provider-info_20111113-1ubuntu1.dsc
74 10:25 < chilicuil> tambien se puede descargar de esta forma $ pull-lp-source mobile-broadband-provider-info
75 10:26 < chilicuil> #me pregunto si sera lo mismo que hacer $ bzr branch
76 lp:ubuntu/mobile-broadband-provider-info ...
77 10:27 < chilicuil> ahora que tengan el directorio mobile-broadband-provider-info-20111113/ hay que entrar a
78 el y buscar el directorio debian
79 10:28 < chilicuil> una vez dentro de debian/ veran los archivos +changelog, +control,
80 +mobile-broadband-provider-info.docs, +copyright, +rules, etc
81 10:29 < chilicuil> bueno, han contestado a mi pregunta diciendo que funcionaria, pero que ahora no esta
82 explicando el metodo distribuido
83 10:30 < chilicuil> sino el metodo clasico
84 10:31 < chilicuil> obounaim ha mencionado que no encuentra el directorio
85 mobile-broadband-provider-info-20111113/
86 10:33 < chilicuil> coolbhavi le ha pedido que verifique si ha extraido el codigo fuente correctamente,
87 puede hacerse de esta manera $ dpkg-source -x mobile-broadband-provider-info_20111113-1ubuntu1.dsc
88 10:34 < Marverick> lo chilicuil
89 10:34 < chilicuil> continuando, una vez dentro del directorio debian/ veran un archivo llamado +format
90 10:35 < chilicuil> o/ Marverick, bienvenido =)
91 10:35 < Marverick> gracias
92 10:35 < chilicuil> dentro de el encontraremos una cadena llamada "3.0 (quilt)"
93 10:35 < chilicuil> que especifica la version de dpkg-source
94 10:35 < chilicuil> ahora, si ven el archivo +watch
95 10:36 < chilicuil> observaran que realmente no contiene nada, solo lo hice para satisfacer las politicas
96 de empaquetamiento, lintian debio haber mostrado la falta del archivo
97 10:36 < chilicuil> Marverick: tal vez tambien quieras entrar a #ubuntu-classroom, ahi es donde todo esta
98 pasando, esto solo es una interpretacion de aquello
99 10:37 < Marverick> si
100 10:37 < Marverick> you sé
101 10:37 < Marverick> yo
102 10:37 < chilicuil> ahora que hemos visto que no podemos usar el archivo watch, podemos hechar un vistaso
103 al archivo debia/rules
104 10:37 < chilicuil> veran que he definido una regla llamada get-orig-source
105 10:38 < chilicuil> el archivo debian/rules es en realidad un archivo Makefile con un nombre distinto ;)
106 10:38 < chilicuil> si ven un poco mas la regla get-orig-source notaran que requiere tener instalados
107 los programas automake y git-core
108 10:39 < chilicuil> asi que pueden instalarlos, si desean seguir con el ejemplo
109 10:39 < chilicuil> suponiendo que no hay dudas hasta aqui, continuaremos
110 10:42 < chilicuil> asi que, si tienen esos programas pueden obtener la ultima version del paquete haciendo:
111 10:42 < chilicuil> $ make -f debian/rules get-orig-source
112 10:43 < chilicuil> esto descargara la ultima version en git-head y lo comprimira en un tar
113 10:44 < chilicuil> despues lo descomprimira en el directorio mobile-broadband-provider-info-20120201/
114 10:44 < chilicuil> pueden ver todo lo que hace, si revisan los comandos que aplican para la regla
115 get-orig-source en debian/rules
116 10:45 < chilicuil> ahora, dado que no hay cambios, ni parches fuera del directorio debian, copiamos
117 ese directorio de mobile-broadband-provider-info-20111113/ a mobile-broadband-provider-info-20120201/
118 10:45 < chilicuil> una vez completado, entraremos al directorio debian de
119 mobile-broadband-provider-info-20120201/
120 10:45 < chilicuil> y utilizaremos $ dch -i para describir nuestros cambios
121 10:46 < chilicuil> le cambiaremos la version a la 20120201-0ubuntu1 (usaremos -0ubuntu1 dado que esta
122 version no esta en Debian), y le pondremos que es para 'precise'
123 10:47 < chilicuil> ahora deberia verse mas o menos asi: mobile-broadband-provider-info
124 (20120201-0ubuntu1) precise; urgency=low
125 10:47 < chilicuil> tambien agregaremos la leyenda, en ingles: * Merging upstream version 20120201 from git
126 and make a list
127 10:47 < chilicuil> of upstream changes
128 10:48 < chilicuil> tambien listaremos los bugs que esten relacionados, con los errores que corriga
129 la actualizacion, de esta manera una vez que se suba a los repositorios, cerran cerrados automaticamente
130 10:48 < chilicuil> mañana hablare un poco mas sobre el formato que debe tener el changelog
131 10:49 < chilicuil> jincreator1 pregunta que ha escuchado hablar sobre fakeroot.
132 10:49 < chilicuil> y se pregunta cual es la diferencia entre $ fakeroot debian/rules y make -f debian/rules
133 10:52 < chilicuil> coolbhavi ha contestado que make -f usa el comando make en tu entorno, mientras que
134 fakeroot crea un entorno temporal, donde se le hace creer a make que se esta ejecutando con permisos
135 de administrador
136 10:52 < chilicuil> regresando al tema
137 10:53 < chilicuil> una vez hechos los cambios y guardado el changelog, escribiremos $ debuild -S -sa
138 para obtener el paquete fuente
139 10:54 < chilicuil> una vez que el archivo .dsc y changes se hayan generado, podemos seguir pasos
140 adicionales, para ganar puntos extra
141 10:54 < chilicuil> como usar pbuilder para probar si se generan correctamente binarios en base al nuevo
142 archivo .dsc que tenemos
143 10:55 < chilicuil> tendremos una sesion especifica sobre pbuilder mañana con tumbleweed =)
144 10:57 < chilicuil> tambien podemos hacer un diff entre los directorios, y subirlos a launchpad junto con el
145 tar del codigo fuente (mi forma preferida de revisar parches) #nota del interprete, aunque es su forma
146 preferida, Ubuntu como distribucion y muchos otros desarrolladores prefieren usar el metodo distribuido
147 (bzr+lp)
148 10:57 < chilicuil> para hacer un diff de este ejemplo corremos:
149 10:57 < chilicuil> $ diff -Nurb mobile-broadband-provider-info-20111113
150 mobile-broadband-provider-info-20120201 > m-b-p-i.diff
151 10:58 < chilicuil> una vez que hayan subido sus cambios, suscriban al equipo ubuntu-sponsors para que los vea
152 10:58 < chilicuil> si sus cambios son correctos, la nueva version del programa estara disponible en los
153 repositorios de Ubuntu
154 10:58 < chilicuil> tenemos mas preguntas?
155 10:59 < chilicuil> gracias a todos, eso es todo de mi parte, espero poder verlos en #ubuntu-motu o en
156 #ubuntu-devel
157 11:00 < chilicuil> tambien pueden contactarme por email en bhavi@ubuntu.com o en fb facebook.com/bshankar
158 11:00 < chilicuil> con eso termina la sesion de coolbhavi =)
SemanaDesarrollador/OneiricLogs/ActualizarPaquetes (last edited 2012-02-02 06:57:19 by javier-lopez)