1 | \section{Présentation de rpms} |
---|
2 | |
---|
3 | \frame{ |
---|
4 | \frametitle{Historique} |
---|
5 | \vfill |
---|
6 | \begin{block}{Origine} |
---|
7 | Originellement: \textit{Redhat Package Manager} |
---|
8 | |
---|
9 | \href{http://rpm.org/}{http://rpm.org/} |
---|
10 | \end{block} |
---|
11 | \vfill |
---|
12 | \begin{block}{Le fork} |
---|
13 | 2005: Patatra: fork de Jeff Johnson: \textit{RPM Package Manager} |
---|
14 | \href{http://rpm5.org/}{http://rpm5.org/} |
---|
15 | |
---|
16 | Il y a donc deux rpms respectivement en version 4.6.0 et 4.5.2. (au \today{}) |
---|
17 | \end{block} |
---|
18 | \vfill |
---|
19 | } |
---|
20 | |
---|
21 | \frame{ |
---|
22 | \frametitle{Roles de rpms} |
---|
23 | \begin{block}{Gestion des logiciels installés} |
---|
24 | \begin{itemize} |
---|
25 | \item installation |
---|
26 | \item désinstallation |
---|
27 | \item mise à jour |
---|
28 | \end{itemize} |
---|
29 | \end{block} |
---|
30 | |
---|
31 | \begin{block}{Controle de l'état du système} |
---|
32 | \begin{itemize} |
---|
33 | \item Intégrité du système |
---|
34 | \item Repérage des fichiers modifiés |
---|
35 | \end{itemize} |
---|
36 | \end{block} |
---|
37 | } |
---|
38 | |
---|
39 | \frame{ |
---|
40 | \frametitle{Rpm ?} |
---|
41 | \begin{block}{Le terme rpm désigne} |
---|
42 | \begin{itemize} |
---|
43 | \item un logiciel |
---|
44 | \item une série de commandes |
---|
45 | \item une format de fichier |
---|
46 | \end{itemize} |
---|
47 | \end{block} |
---|
48 | } |
---|
49 | |
---|
50 | \section{Utilisation} |
---|
51 | |
---|
52 | \subsection{Fonctionnement} |
---|
53 | |
---|
54 | \begin{frame}[fragile] |
---|
55 | \frametitle{Information de base d'un rpm} |
---|
56 | \begin{block}{Version d'un rpm} |
---|
57 | \begin{itemize} |
---|
58 | \item le nom: deux rpm de même nom se remplacent |
---|
59 | \item la version: identifie la version du logiciel |
---|
60 | \item la release: la version du rpm pour la version de ce logiciel |
---|
61 | \item l'epoch: permet de forcer l'ordre entre deux versions |
---|
62 | \end{itemize} |
---|
63 | \end{block} |
---|
64 | \pause |
---|
65 | \vfill |
---|
66 | \begin{block}{l'Architecture} |
---|
67 | \begin{itemize} |
---|
68 | \item assure que le logiciel fonctionne sur la machine |
---|
69 | \item \verb+noarch+ indique que le rpm fonctionne "partout" |
---|
70 | \item ont des priorités (i586 est mieux que i386) |
---|
71 | \end{itemize} |
---|
72 | \end{block} |
---|
73 | \pause |
---|
74 | \vfill |
---|
75 | \begin{exampleblock}{} |
---|
76 | foo-2.1-1.i586 mets à jour foo-2.0-1.i586 |
---|
77 | \end{exampleblock} |
---|
78 | \end{frame} |
---|
79 | |
---|
80 | \begin{frame}[fragile] |
---|
81 | \frametitle{Dépendances} |
---|
82 | \vfill |
---|
83 | \begin{block}{} |
---|
84 | \begin{itemize} |
---|
85 | \item Contraintes au niveau de l'installation (ou de la construction) des rpms. |
---|
86 | \item Elles s'expriment en terme de mot clef avec éventuellement |
---|
87 | une version (\verb+<=> VERSION+). |
---|
88 | \end{itemize} |
---|
89 | \end{block} |
---|
90 | \pause |
---|
91 | \vfill |
---|
92 | \begin{block}{Les type de dépendances} |
---|
93 | {\scriptsize |
---|
94 | \begin{tabular}{|c|l|l|} |
---|
95 | \hline |
---|
96 | Type&Installation&Construction\\ |
---|
97 | \hline |
---|
98 | \hline |
---|
99 | Provides&Fourni&N/A\\ |
---|
100 | \hline |
---|
101 | \hline |
---|
102 | Requires&A besoin de&A besoin de\\ |
---|
103 | \hline |
---|
104 | Conflicts&Ne peut pas être installer avec&Ne peut être construit avec\\ |
---|
105 | \hline |
---|
106 | Obsoletes&Remplace (discrètement)&N/A\\ |
---|
107 | \hline |
---|
108 | Trigger&Déclancher une action si \ldots est installé&N/A\\ |
---|
109 | \hline |
---|
110 | \end{tabular} |
---|
111 | } |
---|
112 | \end{block} |
---|
113 | \pause |
---|
114 | \vfill |
---|
115 | \begin{alertblock}{Relations:} |
---|
116 | Toutes les contraintes s'appliquent sur les \verb+provides+ dans |
---|
117 | \verb+obsoletes+ qui s'appliquent sur le nom du rpm. |
---|
118 | \end{alertblock} |
---|
119 | \vfill |
---|
120 | \end{frame} |
---|
121 | |
---|
122 | \begin{frame}[fragile] |
---|
123 | \frametitle{Les fichiers} |
---|
124 | \begin{block}{Les règles} |
---|
125 | \begin{itemize} |
---|
126 | \item on installe pas deux fois un fichier (sauf si contenu identique) |
---|
127 | \item rpm créer les répertoires parents si necessaire |
---|
128 | \item rpm restaure les propriétaires, permissions et dates |
---|
129 | \end{itemize} |
---|
130 | \end{block} |
---|
131 | \vfill |
---|
132 | \pause |
---|
133 | \begin{block}{Les type de fichiers} |
---|
134 | \begin{itemize} |
---|
135 | \item documentation (avec locale) |
---|
136 | \pause |
---|
137 | \item configuration (noreplace): |
---|
138 | \pause |
---|
139 | \begin{itemize} |
---|
140 | \item pas de modification: remplacement |
---|
141 | \item \verb+.rpmnew+ nouveau fichier, originale non touché |
---|
142 | \item \verb+.rpmsave+ sauvgarde du fichier remplacé |
---|
143 | \end{itemize} |
---|
144 | \end{itemize} |
---|
145 | \end{block} |
---|
146 | \end{frame} |
---|
147 | |
---|
148 | \subsection{Les .rpm} |
---|
149 | |
---|
150 | \frame{ |
---|
151 | \frametitle{Contenu d'un fichier rpm} |
---|
152 | \begin{block}{le Lead} |
---|
153 | Quasi inutilisé désormais |
---|
154 | \end{block} |
---|
155 | \begin{block}{Le Header} |
---|
156 | Contient la description du fichier rpm, sous de tags |
---|
157 | \end{block} |
---|
158 | \begin{block}{L'Archive CPIO} |
---|
159 | Les fichiers à installer sous format d'un cpio généralement compréssés |
---|
160 | \end{block} |
---|
161 | } |
---|
162 | |
---|
163 | \frame{ |
---|
164 | \frametitle{Le Header} |
---|
165 | \begin{block}{Format} |
---|
166 | \begin{itemize} |
---|
167 | \item à ce jour, format binaire |
---|
168 | \item liste de Tags |
---|
169 | \end{itemize} |
---|
170 | \end{block} |
---|
171 | \vfill |
---|
172 | \begin{block}{Les tags} |
---|
173 | \begin{itemize} |
---|
174 | \item chaque tag a un nom |
---|
175 | \item plusieurs type: numérique, chaine, binaire |
---|
176 | \item valeurs multiple possible pour certains |
---|
177 | \end{itemize} |
---|
178 | \end{block} |
---|
179 | \vfill |
---|
180 | \begin{exampleblock}{Exemple de tag} |
---|
181 | \begin{tabular}{|c|l|} |
---|
182 | \hline |
---|
183 | NAME&Nom du rpms\\ |
---|
184 | \hline |
---|
185 | PACKAGER&Celui qui a fait le rpm\\ |
---|
186 | \hline |
---|
187 | |
---|
188 | \end{tabular} |
---|
189 | \end{exampleblock} |
---|
190 | } |
---|
191 | |
---|
192 | \begin{frame}[fragile] |
---|
193 | \frametitle{Convention de nommage} |
---|
194 | \begin{exampleblock}{} |
---|
195 | \alert<2>{vlc}-\alert<3>{1.0.3}-\alert<4>{2mdv2010.1}.\alert<5>{x86\_64}.rpm |
---|
196 | \alert<2>{\%\{NAME\}}-\alert<3>{\%\{VERSION\}}-\alert<4>{\%\{RELEASE\}}.\alert<5>{\%\{ARCH\}}.rpm |
---|
197 | \end{exampleblock} |
---|
198 | \vfill |
---|
199 | \pause |
---|
200 | \begin{block}{} |
---|
201 | \begin{itemize} |
---|
202 | \item le nom (NAME) |
---|
203 | \pause |
---|
204 | \item la version |
---|
205 | \pause |
---|
206 | \item la release |
---|
207 | \pause |
---|
208 | \item l'arch |
---|
209 | \begin{itemize} |
---|
210 | \item \verb+src+: un rpm source |
---|
211 | \item \ldots: un rpm binaire |
---|
212 | \end{itemize} |
---|
213 | \end{itemize} |
---|
214 | \end{block} |
---|
215 | \end{frame} |
---|
216 | |
---|
217 | \subsection{Le programme} |
---|
218 | |
---|
219 | \frame{ |
---|
220 | \frametitle{Les logiciels} |
---|
221 | \vfill |
---|
222 | \begin{center} |
---|
223 | \begin{tabular}{|c|l|} |
---|
224 | \hline |
---|
225 | Binaire&Fonction\\ |
---|
226 | \hline |
---|
227 | \hline |
---|
228 | rpm&Frontend aux modules rpm\\ |
---|
229 | \hline |
---|
230 | rpmi&Installation (rpm -i/U)\\ |
---|
231 | \hline |
---|
232 | rpmu&Installation (rpm -i/U)\\ |
---|
233 | \hline |
---|
234 | rpme&Désinstallation (rpm -e)\\ |
---|
235 | \hline |
---|
236 | rpmquery&Interrogation (rpm -q)\\ |
---|
237 | \hline |
---|
238 | rpmbuild&Construction de rpm\\ |
---|
239 | \hline |
---|
240 | rpmdb&Action sur la rpm db\\ |
---|
241 | \hline |
---|
242 | \end{tabular} |
---|
243 | \end{center} |
---|
244 | \vfill |
---|
245 | \vfill |
---|
246 | } |
---|
247 | |
---|
248 | \begin{frame}[fragile] |
---|
249 | \frametitle{Les librairies} |
---|
250 | \vfill |
---|
251 | Située dans \verb+/usr/lib(64)+ |
---|
252 | \vfill |
---|
253 | % \begin{center} |
---|
254 | \begin{tabular}{|c|l|} |
---|
255 | \hline |
---|
256 | Librairies&Rôle\\ |
---|
257 | \hline |
---|
258 | \hline |
---|
259 | librpm&Lecture des fichiers rpm\\ |
---|
260 | &Résolution des dépendances\\ |
---|
261 | \hline |
---|
262 | librpmbuild&Construction de rpm\\ |
---|
263 | \hline |
---|
264 | librpmdb&Accès à la rpm db\\ |
---|
265 | \hline |
---|
266 | librpmio&Abstraction générique des entrées/sorties\\ |
---|
267 | &Evaluation des macros\\ |
---|
268 | \hline |
---|
269 | \end{tabular} |
---|
270 | % \end{center} |
---|
271 | \vfill |
---|
272 | \vfill |
---|
273 | \end{frame} |
---|
274 | |
---|
275 | \subsection{Configuration} |
---|
276 | |
---|
277 | \begin{frame}[fragile] |
---|
278 | \frametitle{La configuration} |
---|
279 | \vfill |
---|
280 | Toute la configuration se fait via des macros, |
---|
281 | système de variable à évaluation tardive. |
---|
282 | \vfill |
---|
283 | \begin{itemize} |
---|
284 | \item /usr/lib/rpm/macros (système) |
---|
285 | \item ~/.rpmmacros (utilisateur) |
---|
286 | \end{itemize} |
---|
287 | \vfill |
---|
288 | {\scriptsize |
---|
289 | \begin{verbatim} |
---|
290 | %__dbi_htconfig_current %{__dbi_htconfig} |
---|
291 | %__dbi_htconfig_rebuild %{__dbi_htconfig} %{__dbi_rebuild} |
---|
292 | |
---|
293 | %_dbi_htconfig \ |
---|
294 | %{?_rpmdb_rebuild:%{__dbi_htconfig_rebuild}}\ |
---|
295 | %{!?_rpmdb_rebuild:%{__dbi_htconfig_current}}\ |
---|
296 | %{nil} |
---|
297 | \end{verbatim} |
---|
298 | } |
---|
299 | \vfill |
---|
300 | \vfill |
---|
301 | \end{frame} |
---|
302 | |
---|
303 | |
---|