% $Id$
\documentclass[blends,slideColor,colorBG,pdf,ps2pdf]{prosper}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
%\usepackage{multicol}
\usepackage{moreverb}


\title{Rpm et politique de packaging}
\subtitle{Adapter un rpm à sa distribution}
\author{Olivier Thauvin}
\email{olivier.thauvin@aerov.jussieu.fr}
%%\institution{
%%  \includegraphics*[height=0.3\textheight]{gnutux.eps}
%%}

\NoFrenchBabelItemize

\begin{document}
\maketitle

\part{Introduction}

\begin{slide}{Plan}
\end{slide}

\part{RPM rappel}

\overlays{2}{
\begin{slide}{RPM: Rpm Package Manager}
Qu'est ce ?
\begin{itemize}
    \item un ensemble d'outils
    \item un format d'archive (.rpm)
    \item des fichiers au format rpm
\end{itemize}
\bigskip

\FromSlide{2}
Rôle:
\begin{itemize}
\item installer
\item inventorier
\item controler
%\item faciliter l'installation des logiciels
%\item suivi des version (evr)
%\item assurer que l'environement est compatible avec le logiciel
%\item assurer l'intégrité du système
\end{itemize}
\end{slide}
}

\begin{slide}{le paquet}
Un fichier .rpm contenant:
\begin{itemize}
\item{entête} les informations sur le rpm
    \begin{itemize}
    \item des informations pratique sur le logiciel (nom, version, url, \ldots)
    \item sur la fabrication du rpm
    \item une liste de dépendances
    \item la liste des fichiers contenus
    \item l'historique du paquet (changelog)
    \end{itemize}
\item une archive contenant les fichiers 
\end{itemize}
\end{slide}

\begin{slide}{faire un rpm}
\begin{center}
\includegraphics*[height=1\textheight]{rpm-building}
\end{center}
\end{slide}

\begin{slide}{le fichier spec}
Il décrit:
\begin{itemize}
\item le ou les rpms produits
\item le moyen de compiler le logiciel
\end{itemize}
\bigskip
Il est composé de sections:
\begin{itemize}
\item En-tête, \%description
\item \%package
\item \%prep, \%build, \%install, \%check
\item \%files
\item \%verify, \%pre, \%preun, \%post, \%postun, \%posttrans, \ldots
\item \%changelog
\end{itemize}
\end{slide}

\begin{slide}{specfile: exemple}
\begin{small}
\verbatiminput{simple.spec}
\bigskip
\begin{verbatim}
$ rpm -ba simple.spec
Ecrit: /home/users/olivier/RPM/SRPMS/simple-1-1.src.rpm
\o/
\end{verbatim}
\end{small}
\end{slide}

\begin{slide}{les macros}
Variable propres à rpm.

Origine:
\begin{tabular}{|l|l|}
\hline
localisation&fournisseur\\
\hline
\hline
fichiers macros systèmes&rpm\\
\hline
fichiers macros systèmes&distribution\\
\hline
\verb+~/.rpmmacros+&utilisateur\\
\hline
fichier spec&packager\\
\hline
\end{tabular}

\bigskip
Elles fournissent des valeurs ou des fonctions.
\end{slide}

\part{Politique: généralité}

\overlays{2}{
\begin{slide}{Pourquoi définir une politique}
\begin{itemize}
\item homogenéité
\item factorisation du travail
\item qualité
\item faciliter le travail
\end{itemize}
\bigskip
Bref, c'est bien (tm)
\bigskip

\FromSlide{2}
Elle doit être:
\begin{itemize}
\item justifiée
\item expliquée
\item discutée
\item documentée
\item approuvée
\end{itemize}
\end{slide}
}

\begin{slide}{Root est méchant}
On ne construit pas sous root,\\
On ne construit pas sous root,\\
Et on ne construit pas sous root.\\
\bigskip

Risques:
\begin{itemize}
\item polluer son système
\item passer à coté d'erreurs
\item compromission, corruption du système
\item c'est impossible sur la machine de compil finale
\item ça donne des boutons
%\item ça rends impuissant
\end{itemize}
\end{slide}

\begin{slide}{ne pas changer la config}
L'environnement de rpm fourni adapte les rpms les uns aux autres.

On trouve nottament:
\begin{itemize}
\item les chemins par défaut
\item la génération des dépendences
\item post installation
\end{itemize}
\end{slide}

\begin{slide}{Règles de base résumées}
\begin{itemize}
\item se documenter
\item demander aux gens habitués à faire des packages pour leur distribution
\item comprendre plutot que contourner
\item un package bien fait pour une distribution est souvent incompatible
avec les autres
\item faire intégrer son paquet dans la distribution
(ça ne vaut pas que pour rpm)
\end{itemize}
\end{slide}

\part{cas concret: Mandriva}

\overlays{2}{
\begin{slide}{Configuration utilisateur}
\begin{itemize}
\item definir son environnement rpm
\item definir le packager tag
\end{itemize}

\FromSlide{2}
.rpmmacros:
\bigskip
\begin{small}
\listinginput[5]{1}{rpmmacros}
\end{small}
\end{slide}
}

\overlays{2}{
\begin{slide}{mkrel}
Problématique des backport:

\begin{tabular}{|l|l|c|l|}
\hline
&cooker&&stable\\
\hline
\hline
sans&1mdv&==&1mdv\\
\hline
avec&1mdk&>&0.1.20060mdk\\
&1mdv2007.0&>&1mdv2006.0\\
\hline
\end{tabular}
\bigskip
\FromSlide{2}

Release: 1mdk

devient:

Release: \%mkrel 1

\end{slide}
}

\end{document}
