Open Build Service

39
open build service Mauro Parra-Miranda [email protected] 1

description

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.

Transcript of Open Build Service

Page 1: Open Build Service

open build serviceMauro Parra-Miranda

[email protected]

1

Page 2: Open Build Service

¿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

Page 3: Open Build Service

¿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

Page 4: Open Build Service

¿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

Page 5: Open Build Service

¿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

Page 6: Open Build Service

¿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

Page 7: Open Build Service

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

Page 8: Open Build Service

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

Page 9: Open Build Service

Ventajas

• Se puede compilar y distribuir para: SUSEDebianRedhatMandriva LinuxUbuntu

• Con soporte para ix86, x86_64, PPC, ARM. Con posible soporte para z390x, ia64.

9

Page 10: Open Build Service

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

Page 11: Open Build Service

RPM spec

• Condicionales - if ’s a nivel de arquitectura o sistema operativo.

11

Page 12: Open Build Service

RPM spec

• Comentarios# This is the spec file for playmidi 2.3...

12

Page 13: Open Build Service

RPM spec

• Tags <something>:<something-else>Vendor: Masuto StudiosName: FooVersion: 1.2Release: 6%description This software does somethingSummary: This software does something.Copyright: GPL

13

Page 15: Open Build Service

RPM spec

• DependenciasProvides: evolutionRequires: glibcConflicts: evolution-1AutoReqProv: noExcludeArch: sparc alphaPrefix: /optBuildRoot: /tmp/cdplayer

15

Page 16: Open Build Service

RPM spec

• Source: ftp://ftp.gnomovision.com/pub/cdplayer-1.0.tgzSource1: Fooobar.tar.gzPatch: foo.patchPatch1: bar.patch

16

Page 17: Open Build Service

Tareas del RPM

• Desempacar los fuentes

• Aplicar parches

• Compilar el software

• Instalar el software

• Empaquetar

• Limpiar

17

Page 18: Open Build Service

Filosofia de RPM

• Comenzar con código fuente pristino.

• Aplicar parches sucesivos

• Compilar la versión parchada.

18

Page 19: Open Build Service

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

Page 20: Open Build Service

Script %build

• Corre después de %prep, usualmente solo implica un:

make

o similar.

20

Page 21: Open Build Service

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

Page 22: Open Build Service

Script %clean

• Limpiar el sitio de trabajo :-)

• rm -rf $RPM_BUILD_ROOT

22

Page 23: Open Build Service

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

Page 24: Open Build Service

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

Page 25: Open Build Service

%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

Page 26: Open Build Service

%files

• %dir - indica que algo es un directorio.

26

Page 27: Open Build Service

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

Page 28: Open Build Service

Prozilla

28

Page 29: Open Build Service

Prozilla

29

Page 30: Open Build Service

Prozilla

30

Page 31: Open Build Service

Prozilla

31

Page 32: Open Build Service

Prozilla

32

Page 33: Open Build Service

obs - web

33

Page 34: Open Build Service

obs - web

34

Page 35: Open Build Service

obs - web

35

Page 36: Open Build Service

obs - web

36

Page 37: Open Build Service

obs - web

37

Page 38: Open Build Service

Links

•http://build.opensuse.org• http://en.opensuse.org/Build_Service

• Build Service Book - https://build.opensuse.org/documentation/obs/index.html

• osc (cli) - http://en.opensuse.org/Build_Service/CLI

• Max RPM - http://www.rpm.org/max-rpm

• http://masutostudios.com/ciencias09/obs.pdf

38

Page 39: Open Build Service

Masuto Studioshttp://www.masutostudios.com

39