Plática que dí en la Facultad de Ciencias, UNAM en 2009, en el marco del 70 aniversario de la facultad. Habla acerca del open build service, un servicio de SUSE para crear paquetes para SUSE y otras distribuciones.
2. ¿Qué es?
• Servicio público para ayudar a los
desarrolladores a distribuir su software.
• Novell/SUSE proporciona una granja de
compilación con todos los sistemas
soportados configurados y listos.
• Genera paquetes para múltiples
distribuciones, tales como openSUSE,
Ubuntu, Mandrake, Fedora.
2
3. ¿Qué es?
• Soporta múltiples arquitecturas: ix86,
ix86_64, PPC; en un futuro para ARM.
• Un solo RPM spec genera paquetes para
todas las distribuciones que se desee,
incluyendo ubuntu, que usa paquetes “.deb”.
• Genera automagicamente un canal de
distribución de software. Algo como:
http://software.opensuse.org/yourproject
3
4. ¿Qué es?
• Los usuarios pueden buscar la última versión
del software que necesitan, via
http://software.opensuse.org
• Acceso a compañias externas a dar soporte
fácilmente a linux (proveer repositorios para
cada proyecto de las compañias, con su
respectivo repositorio e incluso sus propias
dependencias).
4
5. ¿Qué es?
• Permite el desarrollo en equipo.
• La granja compilara todos tus proyectos tan
seguido como los cambies, pero si requieres
hacer pruebas rápidas, puedes realizar la
compilación (y el paquete) en tu propia
estación, con un minimo de esfuerzo y un
minimo de paquetes instalados
(prácticamente, solo hay que instalar osc).
5
6. ¿Qué es?
• Obtener parches y aplicaciones para
distribuciones con versiones viejas (o la
habilidad de compilar alguna versión más
reciente tu mismo, sin dolor).
• Más info en el video:
http://en.opensuse.org/BSVideo
6
7. Ventajas
• No necesidad de granjas de compilación o
múltiples máquinas soportadas o
configuraciones.
• Resolución de dependencias automatica, con
su respectiva compilación si es necesario
(por ejemplo, si alguna de las dependencias
de paquete foo se actualizaran, el paquete
foo se vuelve a compilar con la nueva
dependencia).
7
8. Ventajas
• Ligas a otros proyectos, por lo que puedes
reutilizar los paquetes que haya hecho
alguien más. Por ejemplo, ustedes generaron
un parche para banshee, que quieren probar.
No tienen que hacer el paquete de cero,
sino que ligan al paquete banshee del
proyecto, y encima de eso hacen
modificaciones. Asi, siempre tendran las
versiones más frescas.
8
9. Ventajas
• Se puede compilar y distribuir para:
SUSE
Debian
Redhat
Mandriva Linux
Ubuntu
• Con soporte para ix86, x86_64, PPC, ARM.
Con posible soporte para z390x, ia64.
9
10. RPM spec
• Comentarios - Ignorados por RPM.
• Tags - Definir datos.
• Scripts - Conjunto de comandos a ejecutar.
• Macros - Abreviación para múltiples
comandos a ejecutar.
• %files - La lista de archivos en el RPM
• Directivas - modificadoras de archivos.
10
17. Tareas del RPM
• Desempacar los fuentes
• Aplicar parches
• Compilar el software
• Instalar el software
• Empaquetar
• Limpiar
17
18. Filosofia de RPM
• Comenzar con código fuente pristino.
• Aplicar parches sucesivos
• Compilar la versión parchada.
18
19. Script %prep
• Corre antes que cualquier cosa, usualmente
crea los directorios, desempaca el código
fuente, aplica parches, aplica cualquier tipo
de operaciones para poder generar el
código fuente a compilar, como cualquier
desarrolladfor haria.
19
20. Script %build
• Corre después de %prep, usualmente solo
implica un:
make
o similar.
20
21. Script %install
• Primero intenta correr un:
make install
uno después puede añadir cualquier otra
cosa que se requiera, como un theme o
branding, que en ocasiones no se requiere
para compilar.
21
23. Otros scripts interesantes
• %pre - corre antes que se instale el RPM
• %post - corre despues que se instale el RPM
(normalmente para correr ldconfig).
• %preun - igual que %pre, pero se corre antes
de desinstalar el RPM
• %postun - igual que %post, pero se corre
despues de desinstalar el RPM
23
24. Scripts comunes
• %setup - desempaqueta los fuentes, revisa
permisos, se puede indicar el orden en el
cual se desempaquetan los fuentes.
• %patch - permite aplicar uno o tal parche en
los fuentes.
24
25. %files
• Indica que archivos deben ser incluidos,
incluye manuales, graficas, etc.
• Puede uno usar %doc para indicar que es
documento, %config es para indicar que es
un archivo de configuracion que se debe
guardar aun despues de borrado el paquete.
• %attr (mode, user, group) file, como:
(755,root,root)
25
27. Subpaquetes
• %package hace posible hacer mas de un
paquete con un mismo SPEC; muchos lo
usan para hacer subpaquetes, como los que
contienen la documentación y similar.
%package -n doc
Lo cual hace un subpaquete foo-doc
27