Home Wiki > Tutorial SUSE Build
Sign up | Login

Tutorial SUSE Build

tagline: De openSUSE

Icono-reciclar.png ¡Este artículo puede reciclarse!

Este artículo no cumple los estándares esperados en la wiki de openSUSE.
Con toda probabilidad, este artículo esté desfasado; sin embargo, puede que contenga suficiente material aprovechable. Estás invitado a ayudar a reciclar el artículo. Para más información ver el equipo del wiki.

Dialogo informacion 64x64.png Si desea información acerca de «OpenSUSE Build Service», el equivalente online de este procedimiento, vea Build Service/Tutorial.

Introducción

Este documento es un resumen de la estructura del programa «build» de SUSE y de cómo construir paquetes RPM para openSUSE. Esta información le ayudará a configurar su propio entorno de construcción temporal. Las primeras cuatro partes de este documento muestran el funcionamiento de forma general, seguidos de varios ejemplos que podrá probar..

Tenga cuidado. Esto no es lo mismo que usar el servicio «build» en sí. Para esto vea Build_Service.

Prerequisitos

Debería tener un buen conocimiento acerca de la creación de RPMs. La intención de este documento no es la de reemplazar la documentación de RPM. Ya hay muchos documentos HOWTO, guías y libros que cumplen este propósito, vea el párrafo de recursos para obtener enlaces relacionados con «RPM».

También debería tener alguna experiencia con las herramientas relacionadas con PGP, especialmente GNU Privacy Guard (gpg) ya que es la implementación más utilizada de OpenPGP. Explicaremos por qué PGP es tan importante más adelante cuando se hablemos de la firma de paquetes. Para firmar paquetes necesitará su propia clave PGP antes de poder utilizar el entorno de construcción de paquetes de openSUSE.

Y por supuesto deberá estar familiarizado con el entorno de código fuente que su proyecto utiliza para su paquete. La estructura de openSUSE build es capaz de evitar y «rodear» algunos errores habituales de los mantenedores de paquetes, pero conocer las herramientas make, autoconf, imake u otros mecanismos de configuración de código fuente será de gran ayuda a la hora de trabajar con paquetes.

Requisitos

Es sencillo. Necesitara 3GB de espacio de disco duro y nuestra herramienta «build». Es todo.

Necesitará 3 GB de espacio en disco porque la estructura build de SUSE utilizará una instalación separada de linux en su disco duro como entorno para construir su paquete. Este entorno aislado tiene una gran ventaja: la construcción de un paquete no interferirá con su instalación actual de linux. La única desventaja es que necesitará 3 GB de espacio (temporal) en disco para cada entorno de construcción. Pero con los tamaños de disco actuales, esto no debería ser un problema.

La herramienta build configura un entorno de construcción en un lugar dado y luego construye el paquete en ese entorno. El entorno de construcción consiste de un sistema base y cualquier paquete adicional que indique el archivo spec del RPM.


Flujo de trabajo

Los siguientes pasos son un esquema de un flujo de trabajo habitual para la construcción de un paquete. Por supuesto que un ejemplo de la vida real fallaría en alguno de los pasos y tendría que repetirlo hasta que funcione correctamente. Este esquema simplemente le dará una visión global de lo que intentamos hacer.

Paso uno - Instalar los requisitos

Instale los siguientes paquetes, si no los tiene ya instalados, de su origen de instalación openSUSE mediante YaST:

  • build
  • gpg

Paso dos - Configurar build

Configure la herramienta build. Hay algunos ajustes que tendrá que retocar para que coincidan con su entorno local, por ejemplo:

  • de dónde obtener los paquetes RPM para montar el entorno de construcción
  • cuál es el nombre del directorio raíz de build

y cosas similares.

Paso tres - Crear el directorio de origen

Cree un directorio en algún lugar que esté accesible a usted y a root. Este será el lugar en el que dejará los archivos utilizados para construir el paquete. Puede utilizar cualquier lugar. Sin embargo debe ser accesible también para root ya que solamente root puede iniciar la configuración del entorno de build. Pero no quiere trabajar siempre como root en el paquete, por lo que necesita un lugar compartido.

Paso cuatro - Obtener los archivos fuente del proyecto

Obtenga los archivos fuente necesarios para construir el paquete. La mayoría de los proyectos proporcionan archivos fuente en archivos tar comprimidos.

Paso cinco - Crear el archivo spec

Ahora que dispone de los archivos fuente deberá seguir el proceso habitual de creación de RPMs. Cree un archivo spec para el paquete.

Paso seis - Construir el paquete

Después de que haya creado el archivo spec es el momento de probar si funciona. Cámbiese a la cuenta root y acceda al directorio en el que están sus archivos spec, código fuente y parches. Ahora inice «build».

Paso siete - Comprobar el paquete

Después de que «build» haya tenido éxito, deberá comprobar la funcionalidad de su paquete.


Archivos spec

Los archivos spec de RPM deberán cumplir las Convenciones de paquetes de openSUSE. Puesto que esto es un asunto bastante complejo de por sí existe un documento aparte acerca de él. Siga las instrucciones de este documento con detenimiento cuando cree su archivo spec.

Encontrará algunos archivos spec de ejemplo en el SVN de Build Service.

También encontrará algún documento en IBM developerWorks acerca de este tema: Parte 1 y Parte 2.


Configuración

Variables de entorno de «build»

  • BUILD_DIST

La distribución para la que desea construir paquetes

  • BUILD_RPMS

Indica dónde se supone que están los RPMs de openSUSE: si solamente ha montado el DVD de openSUSE, esta variable debería contener «<punto_de_montaje del_DVD>/suse». Si el DVD ha sido copiado a un directorio, esta variable debería contener «<ese_directory>/suse».

El valor predeterminado de BUILD_RPMS es /media/dvd/suse

  • BUILD_ROOT

El directorio chroot aislado en el que se construirá el paquete rpm.

El valor predeterminado de BUILD_ROOT es /var/tmp/build-root

  • BUILD_RPM_BUILD_STAGE

Estas son las opciones reales que se pasarán a «rpmbuild» (consulte la página man de rpmbuild para obtener una lista completa de estas opciones)

El valor predeterminado de BUILD_RPM_BUILD_STAGE es '-ba' (es decir, (build all) construir paquetes binarios y de código fuente después de realizar los pasos %prep, %build e %install).


Ejemplos

Vea a continuación unos ejemplos reales de diferentes grupos de paquetes de ejemplo y de características concretas de paquetes.

Paquetes KDE

BuildRequires: kdelibs3-devel update-desktop-files
Name: kvpnc License: GPL Group: Productivity/Networking/System Summary: GUI frontend for openswan and vpnc Version: 0.7.2 Release: 1 URL: http://home.gna.org/kvpnc/ BuildRoot:  %{_tmppath}/%{name}-%{version}-build Source0:  %name-%{version}.tar.bz2
%description The application can create configurations for various kinds of VPN connections. You should install also the "vpnc" or "openswan" package.
%prep # extract the source and go into the kvpnc-0.7.2 directory %setup -q # source the standard build enviroment as defined in kdelibs3 package . /etc/opt/kde3/common_options # replace the admin/ folder with the version from kdelibs3 (will work for sure with # current autoconf and automake) and create Makefile.in and configure script. update_admin --no-unsermake
%build # source the standard build enviroment as defined in kdelibs3 package . /etc/opt/kde3/common_options ./configure $configkde --disable-final # do compile with the number of jobs given to the --jobs parameter of the build script. make %{?jobs:-j%jobs}
%install iconv -f iso8859-1 -t utf-8 src/kvpnc.desktop > w && mv w src/kvpnc.desktop # install all files into the BuildRoot make DESTDIR=$RPM_BUILD_ROOT install rm -rf $RPM_BUILD_ROOT/opt/kde3/share/doc/HTML/kvpnc # updates the .desktop file. It applys additional translations and Categories for a # proper position in the KDE menu %suse_update_desktop_file %name System Network # does find all localisation files and adds proper database attributes to them %find_lang %name
%clean # clean up the hard disc after build rm -rf $RPM_BUILD_ROOT
%files -f %name.lang %defattr(-,root,root) %dir /opt/kde3/share/icons/hicolor/16x16/apps %dir /opt/kde3/share/icons/hicolor/32x32/apps /opt/kde3/bin/kvpnc /opt/kde3/share/appl*/*/kvpnc.desktop /opt/kde3/share/apps/kvpnc /opt/kde3/share/icons/*/*/*/kvpnc*.png

Paquetes GNOME

Las directrices de creación de paquetes Gnome se han movido a la página de empaquetado Gnome.

Paquetes Perl

Los paquetes Perl son bastante sencillos y parecidos de empaquetar porque prácticamente están preparados para el archivo CPAN.

Name:         perl-Curses
Version:      1.12
Release:      1
# define the name from CPAN
%define cpan_name Curses
# do this package was known as "perl_cur" in old times. So we do need to Provide and Obsolete
# this package. YaST will install this package during update instead of the old one in this way.
Provides:     %cpan_name
# we better require the exact perl version, which was used to create this package
Requires:     perl = %{perl_version}
Group:        Development/Libraries/Perl
License:      Artistic License, Other License(s), see package
URL:          http://cpan.org/modules/by-module/Curses/
Summary:      A Dynamic Loadable Curses Module for Perl5
Source:       %cpan_name-%{version}.tar.bz2
BuildRoot:    %{_tmppath}/%{name}-%{version}-build
%description This is a dynamic loadable curses module for Perl5. This package can be found at any CPAN archive.
%prep %setup -q -n %cpan_name-%{version}
%build perl Makefile.PL OPTIMIZE="$RPM_OPT_FLAGS -Wall" make make test
%install make DESTDIR=$RPM_BUILD_ROOT install_vendor %perl_process_packlist
%clean # clean up the hard disc after build rm -rf $RPM_BUILD_ROOT
%files %defattr(-,root,root) %doc Artistic Copying README %doc %{_mandir}/man3/* %{perl_vendorarch}/%cpan_name.pm %{perl_vendorarch}/auto/%cpan_name /var/adm/perl-modules/%{name}

Recursos