Tutoriel de compilation SuSE

Aller à : navigation, rechercher
Le tutoriel de openSuSE Build Service, l'équivalent online de ce processus, et disponible ici Build Service/Tutorial.


Introduction

Ce document est un aperçu de la structure openSuSE Build et un tutoriel pour compiler des paquets RPM pour openSuSE. Il vous aide à mettre en oeuvre votre propre environnement temporaire de compilation. Les quatre premières parties de ce document donnent un aperçu général des fonctionnalités abordées par des exemples que vous pouvez essayer. Soyez prudent ! Ce n'est pas la même chose que d'utiliser le build service lui-même. Pour cela voyez Build_Service

Prérequis

Vous devriez maintenant avoir bonne connaissance de la création de RPMs. Ce document n'a pas pour but d'être un remplaçant de la documentation RPM. Il existe déjà de nombreux HOWTOs, guides et livres : voyez les liens RPM resources paragraph.

Vous devriez aussi avoir un peu d'expérience en matière d'outils PGP, particulièrement GNU Privacy Guard (gpg) car c'est l'implementation la plus courante de openPGP. Nous expliquerons pourquoi PGP est si important lorsque nous parlerons de signature de paquet. Pour signer un paquet, vous avez besoin de votre propre clef PGP avant de commencer à utiliser l'environnement openSuSE Build.

Et puis, bien sûr, vous devriez aussi être familié à l'environnement code source que votre projet utilise pour votre paquet. La structure openSuSE de compilation peut arranger quelques erreurs communes faites par les responsable de projets mais connaître make, autoconf, imake ou tout autre mécanisme de configuration de code source est recommandé pour la compilation de paquets.

Configuration requise

C'est très simple. Vous avez besoin de 3 Go d'espace disque et de notre outil de compilation, build. C'est tout.

Vous avez besoin de 3 Go d'espace disque parce que la structure de compilation openSuSE utilise une installation Linux séparée de votre disque dur comme environnement pour compiler votre paquet. Cet environnement isolé présente un grand avantage : Compiler un paquet ne va pas interférer avec votre installation Linux. Le seul désavantage est que vous avez besoin de 3 Go d'espace disque temporaire pour chaque environnement de compilation. Cela dit, aujourd'hui les capacités existantes de disque dur ne devrait pas poser de problème.

L'outil de compilation installe un environnement de compilation dans un environnement et compile le paquet dans cet environnement. L'environnement de compilation consiste en un système de base et de tous les paquets additionnels que vous définissez dans le fichier .spec de votre RPM.


Link title

Étapes à suivre

Les étapes suivantes donnent une bonne approche de la manière de compiler un paquet. Bien sûr, un exemple réel pourrait vous induire en erreur si vous ne répétez pas les étapes jusqu'à ce que cela fonctionne. Cette approche vous donne modestement l'idée de ce que vous désirer faire.

Étape une - Installation

Installez les paquets suivants depuis votre installation source openSuSE en utilisant YaST, si vous ne les avez pas déjà installés :

  • osc

Ou si vous préférez faire le travail difficile vous-même :

  • build
  • gpg

Étape deux - Configurer build/osc

OSC

La première fois que vous démarrez osc, il vous est demandé votre nom d'utilisateur dans openSuSE Build Service (ci-après OBS) et votre mot de passe. C'est au plus ce dont vous avez besoin pour la configuration.

compilation

Configurez l'outil de compilation (build). Il existe des options que vous devez définir afin de trouver votre environnement local. Par exemple :

  • où trouver les paquets RPM définissant votre environnement de compilation ?
  • quel est le chemin de base vers votre répertoire root de base de compilation ?

La plupart de ces options sont données au script de compilation sous la forme de paramètres.

Étape trois - Créer un répertoire source

Si vous utilisez osc, vous pouvez sauter cette partie, car osc téléchargera tous les paquets reques lui-même et les stockera pour vous.

Si vous avez décidé d'utiliser le compilateur (build) tout seul, vous devez créer un répertoire quelque part qui est accessible en tant que root et à vous même. Cet endroit est le lieu où vous metterez vous fichiers utilisés pour la compilation du paquet (distribution RPM). Vous avez le droit d'utiliser n'importe quel endroit sur votre disque. Toutefois, il doit être accessible à vous-même et à l'utilisateur root car seul root peut démarrer l'installation de l'environnement de compilation. Bien que vous n'ayez pas l'intention de travailler en root, vous avez besoin d'un endroit partagé.

Étape quatre - Obtenir les fichiers sources du projet

Allez chercher les fichiers sources du projet nécessaires à la compilation du paquet. La plupart des projets fournissent les fichiers sources en tarballs compressés.

Étape cinq - Créer le fichier .spec

Maintenant que vous avez la source vous pouvez suivre la procédure de création de RPM usuelle. Créer le fichier .spec pour le paquet.

Étape six - Compiler le paquet

Après que vous avez créé le fichier .spec RPM, il est temps d'essayer et de voir si cela compile. Passez au compte de root et allez au répertoire où votre fichier .spec, la source, et les patchs se trouvent. Ensuite, démarrez la compilation !

Étape sept - Tester le paquet

Une fois la compilation achevée avec succès, vous devez tester le fonctionnement de votre paquet.


Fichiers .spec

Les fichiers .spec RPM doivent être écrits de manière accordante aux Package Conventions. Comme cela est plutôt complexe en soi, il existe un document supplémentaire en cela. S'il-vous-plaît, suivez les instructions de ce document très attentivement lorsque vous développez votre fichier .spec.

Vous pouvez trouver des exemples de fichiers .spec pour différents paquets à la page suivante : the Build Service SVN.

IBM developerWorks possède également un résumé à ce sujet : Part 1 and Part 2.


Configuration

Variables d'environnement de compilation

  • BUILD_DIST

La distribution pour laquelle vous compilez.

  • BUILD_RPMS

C'est l'endroit où les RPMs openSuSE devraient se trouver : si le DVD openSuSE vient d'être inséré, cette variable devrait être définie à <point_de_montage_DVD>/suse. Si le contenu du DVD a été copié dans un répertoire, cela devrait être <le_répertoire>/suse .

La valeur par défaut de BUILD_RPMS est /media/dvd/suse .

  • BUILD_ROOT

Le répertoire isolé chroot où le .rpm est compilé.

Par défaut, BUILD_ROOT est /var/tmp/build-root .

  • BUILD_RPM_BUILD_STAGE

Ce sont les options qui seront passées à rpmbuild (voir la man.page de rpmbuild pour avoir une liste complète des options)

La valeur par défaut de BUILD_RPM_BUILD_STAGE est '-ba' (i.e. compiler les paquets binaire et source aèr avoir passé les étapes %prep, %build, et %install).


Exemples

Voici quelques exemples concrets de différents groupes de paquets et de fonctionnalités spécifiques aux paquets.

KDE Packages

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 L'applicaion peut créer des configurations pour diverses sortes de connections VPN. Vous

devriez installer aussi les paquets "vpnc" ou "openswan".

%prep
# extrait la source et va au répertoire kvpnc-0.7.2
%setup -q
# lie l'environnement de compilation standard comme défini dans le paquet kdelibs3
. /etc/opt/kde3/common_options
# remplace le dossier admin/ avec la version de kdelibs3 (ce qui marche avec autoconf et automake)
# et crée un fichier Makefile.in et configure le script.
update_admin --no-unsermake
%build # lie l'environnement de compilation standard comme défini dans le paquet kdelibs3 . /etc/opt/kde3/common_options ./configure $configkde --disable-final # compile avec le nombre de travaux (jobs) donnés en paramètre --jobs du script de compilation. make %{?jobs:-j%jobs}
%install iconv -f iso8859-1 -t utf-8 src/kvpnc.desktop > w && mv w src/kvpnc.desktop # installe tous les fichiers dans BuildRoot make DESTDIR=$RPM_BUILD_ROOT install rm -rf $RPM_BUILD_ROOT/opt/kde3/share/doc/HTML/kvpnc # met à jour le fichier .desktop et applique les traductions additionnelles et les catégories # pour un positionnement correct dans le menu KDE %suse_update_desktop_file %name System Network # recherche tous les fichiers de traductions (localization files) et ajoute les attributs de base de données correspondant %find_lang %name
%clean # nettoie le disque dur après la compilation 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

Gnome Packages

Les directives pour la création de paquets GNOME ont été déplacées à la page the GNOME packaging page.

Perl Packages

Les paquets Perl sont suffisamment faciles à empaqueter, car ils sont pratiquement près pour l'archive CPAN.

Name:         perl-Curses
Version:      1.12
Release:      1
# définir le nom depuis CPAN
%define cpan_name Curses
# est-ce que ce paquet était nommé "perl_cur" par le passé ? Nous devons donc fournir (Provide) et déprécier (Obsolete)
# ce paquet. YaSR installera ce paquet durant la mise à jour au lieu de prendre l'ancien de cette manière.
Provides:     %cpan_name
# nous ferions mieux de requisitionner la version exacte de perl, qui était utilisée pour créer ce paquet
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 Ceci est un module dynamique chargeable pour Perl5. Ce paquet peut être trouvé dans n'importe quelle archive CPAN.
%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 # nettoyage du disque dur après la compilation 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}

Ressources