Fedora RPM Guide - en to fr translation catalogue (345 entries)

note: Tag: title
en: Programming RPM with Python
fr: Programmation RPM avec Python

note: Tag: para
en: This chapter covers:
fr: Ce chapitre porte sur :

note: Tag: para
en: Using the RPM with Python
fr: l'utilisation du Python avec RPM

note: Tag: para
en: Installing the necessary modules
fr: l'installation des modules nécessaires

note: Tag: para
en: Programming with the RPM database
fr: la programmation avec la base de données RPM

note: Tag: para
en: Programming with RPM files
fr: la programmation avec les fichiers RPM

note: Tag: para
en: Installing packages programmatically
fr: l'installation de paquets pour la programmation

note: Tag: title
en: Setting Up a Python Development Environment
fr: La mise en œuvre d'un environnement de développement Python

note: Tag: para
en: Setting up a Python development environment is much the same as setting up a C programming environment. You need to install a set of packages for general Python development, install a package that provides the Python API to the RPM system, and choose a program for editing your Python scripts.
fr: La mise en œuvre d'un environnement de développement pour le Python est sensiblement identique à celle pour le <literal>C</literal>. Vous devez installer un ensemble de paquets pour le développement Python en général, un paquet fournissant l'API Python pour le système RPM et choisir un programme pour éditer vos scripts Python.

note: Tag: para
en: Cross Reference
fr: Référence croisée

note: Tag: para
en: <xref linkend="ch-development-tools" /> covers Linux text editors and development tools.
fr: Le <xref linkend="ch-development-tools" /> traite des éditeurs de texte Linux, ainsi que des outils de développement.

note: Tag: para
en: If you want to make a graphical user interface in your Python programs, you need to install a separate Python package.
fr: Si vous voulez créer une interface utilisateur graphique pour vos programmes en Python, vous devez installer un paquet Python distinct.

note: Tag: title
en: Installing the base Python packages
fr: Installer les paquets Python de base

note: Tag: para
en: The base Python package needed for developing applications is python. For RPM usage, you should install Python 2.2, not Python 1.5. That’s because the RPM bindings for Python are moving to support only 2.2 and higher releases.
fr: Le paquet Python de base nécessaire pour développer des applications est <package>python</package>. Pour l'utiliser avec RPM, vous devez installer la version 2.2, et non 1.5, étant donné que les liens de Python avec RPM ne sont pris en charge qu'avec la version 2.2 ou ultérieure.

note: Tag: para
en: The Python package for RPM access is rpm-python. Install these as you would any other packages.
fr: Le paquet Python nécessaire pour accéder à RPM est <package>rpm-python</package>. Puis, installez tout autre paquet que vous souhaiteriez.

note: Tag: para
en: <xref linkend="ch-using-rpm" /> covers installing packages.
fr: Le <xref linkend="ch-using-rpm" /> porte sur l'installation des paquets.

note: Tag: title
en: Using Python for graphics
fr: Utiliser Python pour les applications graphiques

note: Tag: para
en: Python supports a number of different toolkits for creating graphical user interfaces. You need one of these toolkits if you want to create Python applications that sport a user interface instead of command-line tools. Among the most popular toolkits are PyGKT, PyQt, and Tkinter.
fr: Python prend en charge diverses boîtes à outils pour créer des interfaces utilisateur graphiques. Vous aurez besoin de l'une d'entr'elles si vous voulez créer des applications Python qui arborent une interface utilisateur graphique au lieu de la ligne de commande. Parmi les boîtes à outils les plus courantes, citons PyGKT, PyQt et Tkinter.

note: Tag: para
en: *PyGTK is a binding between Python and the GTK+ toolkit used by the GNOME desktop, one of two main desktop environments for Linux. (KDE is the other main desktop environment.) The Red Hat redhat-config-packages program uses PyGTK and sports a very good-looking user interface.
fr:  * PyGTK est une liaison entre Python et la boîte à outils GTK+ utilisée par le bureau GNOME, un des deux principaux environnements de bureau pour Linux, KDE étant l'autre. Le programme <application>redhat-config-packages</application> de Red Hat utilise PyGTK et présente une très belle interface utilisateur.

note: Tag: para
en: PyGTK provides full access to the GTK+ widgets such as menus, dialog windows, and buttons. Install the pygtk2 module for PyGTK. For more on PyGTK, see www.daa.com.au/~james/pygtk/.
fr: PyGTK met à disposition un plein accès aux widgets GTK+ tels que menus, dialogues et boutons. Installez le module <package>pygtk2</package> pour disposer de PyGTK. Pour plus de détails à propos de PyGTK, voyez <ulink url="http://www.pygtk.com/" />.

note: Tag: para
en: *PyQt connects Python scripts to the Qt C++ user interface toolkit. Qt forms the base library used by the KDE desktop environment and KDE applications. As with PyGTK, PyQt allows you to access the rich widget set provided by the library.
fr:  * PyQt établit une connexion des scripts Python avec la boîte à outils de l'interface utilisateur <literal>C++ Qt</literal>. <literal>Qt</literal> est la bibliothèque de base utilisée par l'environnement de bureau KDE et les applications KDE. Tout comme avec PyGTK, PyQt vous permet d'avoir accès au riche ensemble de widgets fourni par la bibliothèque.

note: Tag: para
en: Install the PyQt package for PyQt. For more on PyQt, see www.riverbankcomputing.co.uk/pyqt/.
fr: Pour disposer de PyQt, installez le paquet <package>PyQt</package>. Pour plus de détails à propos de PyQt, voyez <ulink url="http://www.riverbankcomputing.co.uk/software/pyqt/intro" />.

note: Tag: para
en: *Tkinter is considered a standard part of Python and is based on the Tk (pronounced teekay) toolkit from the Tcl scripting language. The main advantages of Tkinter are that it is considered part of Python, meaning users are more likely to have it, and Tkinter works on multiple platforms, including Windows.
fr:  * Tkinter est considéré comme partie intégrante de Python ; il se fonde sur la boîte à outils Tk (prononcez <emphasis>teekay</emphasis>) issue du langage de script Tcl. Les principaux avantages de Tkinter sont son intégration à Python (les utilisateurs le possèdent vraisemblablement) et son fonctionnement sur de multiples plates-formes, y compris Windows.

note: Tag: para
en: The main drawback of Tkinter is that the widget sets are not as rich as PyQt or PyGTK. For more on Tkinter, see www.python.org/topics/tkinter/.
fr: Le principal inconvénient de Tkinter est que l'ensemble de ses widgets n'est pas aussi riche que celui de PyQt ou PyGTK. Pour plus de détails à propos de Tkinker, voyez <ulink url="http://www.python.org/topics/tkinter/" />.

note: Tag: para
en: After you’ve set up your environment and installed all the necessary packages, the next step is to start working with the Python API for RPM.
fr: Une fois votre environnement mis en place et les divers paquets installés, l'étape suivante consiste à débuter le travail avec l'API Python pour RPM.

note: Tag: title
en: The Python API Hierarchy
fr: La hiérarchie de l'API du Python

note: Tag: para
en: The RPM Python API provides a high-level abstraction into RPM functionality divided into logical areas. Table 17-1 lists the main RPM types. In most cases, you need to begin with rpm and create a transaction set.
fr: L'API du RPM de Python met à votre disposition pour les fonctionnalités de RPM une abstraction de haut niveau classée en zones logiques. Le tableau 17-1 liste les principaux types RPM. Dans la plupart des cas, vous devrez commencer avec <command>rpm</command> et créer un ensemble de transaction.

note: Tag: para
en: Table 17-1 Python types for RPM usage
fr: Tableau 17-1 : types Python à utiliser pour RPM

note: Tag: para
en: Class
fr: Classe

note: Tag: para
en: Covers
fr: Porte sur

note: Tag: para
en: RPM base module into RPM API
fr: Module de base RPM dans l'API RPM

note: Tag: para
en: Transaction sets
fr: Ensembles de transaction

note: Tag: para
en: Transaction elements, a package in a transaction set
fr: Éléments de transaction, un paquet dans un ensemble de transaction

note: Tag: para
en: Match iterators, used for querying the RPM database
fr: Itérateurs d'assortiments, utilisés pour questionner la base de donnée RPM

note: Tag: para
en: Dependency set
fr: Jeu de dépendances

note: Tag: para
en: File into set
fr: Fichier dans un ensemble

note: Tag: para
en: A package header
fr: Un en-tête de paquet

note: Tag: para
en: In general, the RPM Python API is well-integrated into the standard Python API. For example, you use the Python os class to read in RPM package files.
fr: En règle générale, l'API Python pour RPM est bien intégrée dans l'API Python standard. Par exemple, vous utilisez la classe <classname>os</classname> pour lire dans dans les fichiers paquets de RPM.

note: Tag: para
en: The examples in this chapter use the RPM 4.1 Python API. The API in previous versions is significantly different from the 4.1 version.
fr: Les exemples de ce chapitre utilisent l'API Python pour RPM version 4.1. L'API des versions antérieures est notablement différente de celle de la version 4.1.

note: Tag: title
en: Programming with the RPM Database
fr: Programmer avec la base de données RPM

note: Tag: para
en: Compared to the RPM C API, discussed in <xref linkend="ch-programming-c" /> , the Python API is much simpler and requires many fewer programming statements to get your job done.
fr: Comparée à l'API C de RPM, exposée dans le <xref linkend="ch-programming-c" />, l'API Python est beaucoup plus simple et demande bien moins d'instructions de programmation pour faire le travail.

note: Tag: para
en: Just about every Python RPM script needs a transaction set. Create a transaction set with rpm.TransactionSet:
fr: Pratiquement tout script Python RPM nécessite un ensemble de transaction. Créez un ensemble de transaction avec <function>rpm.TransactionSet</function> :

note: Tag: para
en: The transaction set will automatically open the RPM database if needed.
fr: L'ensemble de transaction ouvre automatiquement la base de données RPM si nécessaire.

note: Tag: para
en: The code examples in this chapter follow the Red Hat conventions for naming variables, such as ts for a transaction set. This is to make it easier to read the Python examples in the RPM sources, along with Red Hat installer programs written in Python.
fr: Les exemples de code de ce chapitre suivent les conventions Red Hat pour la dénomination des variables, comme <varname>ts</varname> pour un ensemble de transaction. La lecture des exemples Python dans les sources RPM en est facilitée. Il en est de même avec les programmes d'installation Red Hat écrits en Python.

note: Tag: para
en: You will need a transaction set in just about every Python script that accesses RPM functionality.
fr: Confirmons que vous aurez besoin d'un ensemble de transaction dans pratiquement tout script Python qui accède à une fonctionnalité RPM.

note: Tag: title
en: Accessing the RPM database
fr: Accéder à la base de données RPM

note: Tag: para
en: Transaction sets provide a number of methods for working with the RPM database at the database level. Use these methods if you need to interact with the database as a whole, as opposed to accessing individual packages in the database. For example, you can initialize or rebuild the RPM database with these methods. You can also use a handy trick for accessing another RPM database instead of the default system database.
fr: Les ensembles de transaction mettent à disposition un certain nombre de méthodes pour travailler avec la base de données RPM au niveau de son ensemble. Utilisez ces méthodes si vous devez interagir globalement avec la base de données, par opposition à un accès à des paquets pris individuellement dans ladite base de données. Par exemple, vous pouvez initialiser ou reconstruire la base de données RPM avec ces méthodes. Vous pouvez aussi utiliser une ruse pratique pour avoir accès à une autre base de données RPM au lieu de la base de données système par défaut.

note: Tag: title
en: Setting the Database Location
fr: Définir la localisation de la base de données

note: Tag: para
en: A transaction set will open the RPM database assuming the default location. To specify a different RPM database location, call addMacro, as shown following:
fr: Un ensemble de transaction ouvre la base de données RPM en supposant qu'elle est à son emplacement par défaut. Pour indiquer un emplacement de base de données différent, appelez <function>addMacro</function> ainsi :

note: Tag: para
en: rpm.addMacro("_dbpath", path_to_rpm_database)
fr: rpm.addMacro("_dbpath", <replaceable>CHEMIN_VERS_BASE</replaceable>)

note: Tag: para
en: You can work with more than one RPM database by setting the _dbpath macro, creating a transaction set, and then removing the macro. After doing this, you can create another transaction set for the default RPM database, allowing your script to work with more than one database. For example:
fr: Vous pouvez travailler avec plus d'une base de données en définissant la macro <literal>_dbpath</literal>, en créant un ensemble de transaction, puis en effaçant la macro. Après ces manipulations, vous créez un autre ensemble de transaction pour la base de données RPM par défaut. Vous permettez ainsi à votre script d'opérer sur plus d'une base de données. Par exemple :

note: Tag: para
en: # Open the rpmdb-redhat database
fr: # Ouvrir la base de données rpmdb-redhat

note: Tag: para
en: # Open default database
fr: # Ouvrir la base de données par défaut

note: Tag: para
en: This example uses the rpmdb-redhat package, which holds a database of all Red Hat Linux packages. The explicit call to openDB opens the RPM database. In most Python scripts, though, you do not want to call openDB. Instead, a transaction set will open the database as needed.
fr: Cet exemple utilise le paquet <package>rpmdb-redhat</package>, qui gère une base de données de tous les paquets Red Hat Linux. L'appel explicite à <function>openDB</function> ouvre la base de données. Toutefois, dans la plupart des scripts Python vous n'aurez pas besoin d'un appel à <function>openDB</function> : l'ensemble de transaction ouvrira la base de données si nécessaire.

note: Tag: para
en: The call to delMacro removes the _dbpath macro, allowing the next call to TransactionSet to use the default RPM database.
fr: L'appel à <function>delMacro</function> efface la macro <literal>_dbpath</literal>, permettant à l'appel suivant de <function>TransactionSet</function> de se réfèrer à la base de données RPM par défaut.

note: Tag: para
en: Do not call closeDB on a transaction set. This method does indeed close the RPM database, but it also disables the ability to automatically open the RPM database as needed.
fr: Ne faites pas appel à <function>closeDB</function> sur un ensemble de transaction. Cette méthode ferme en effet la base de données RPM, mais elle désactive également la capacité d'ouvrir automatiquement la base de données selon les besoins.

note: Tag: title
en: Initializing, Rebuilding, and Verifying the Database
fr: Initialiser, reconstruire et vérifier la base de données

note: Tag: para
en: The transaction set provides an initDB method to initialize a new RPM database. This acts like the rpm --initdb command.
fr: L'ensemble de transaction met à disposition la méthode <function>initDB</function> pour initialiser une nouvelle base de données. Elle agit comme la commande <command>rpm --initdb</command>.

note: Tag: para
en: The rebuildDB method regenerates the RPM database indices, like the rpm --rebuilddb command:
fr: La méthode <function>rebuildDB</function> régénère les index de la base de données RPM, comme la commande <command>rpm --rebuilddb</command> :

note: Tag: para
en: The rebuildDB method regenerates the RPM database indices, like the rpm --rebuilddb command.
fr: La méthode <function>rebuildDB</function> régénère les index de la base de données RPM, comme la commande <command>rpm --rebuilddb</command>.

note: Tag: para
en: The verifyDB method checks that the RPM database and indices are readable by the Berkeley DB library:
fr: La méthode <function>vérifieDB</function> vérifie que la base de données RPM et ses index peuvent être lus par la bibliothèque Berkeley DB :

note: Tag: para
en: Calling this method is the same as running the db_verify command on each of the database files in /var/lib/rpm.
fr: L'appel de cette méthode est identique au lancement de la commande <command>db_verify</command> sur chacun des fichiers de base de données dans <filename>/var/lib/rpm</filename>.

note: Tag: para
en: See <xref linkend="ch-using-rpm-db" /> for more on initializing, rebuilding, and verifying RPM databases.
fr: Voyez le <xref linkend="ch-using-rpm-db" /> pour plus de détails sur l'initialisation, la reconstruction et la vérification des bases de données RPM.

note: Tag: para
en: Once you have a transaction set, you can start querying the RPM database.
fr: Une fois que avez obtenu un ensemble de transaction, vous pouvez commencer à interroger la base de données.

note: Tag: title
en: Querying the RPM database
fr: Interroger la base de données

note: Tag: para
en: Call dbMatch on a transaction set to create a match iterator. As with the C API, a match iterator allows your code to iterate over the packages that match a given criteria.
fr: Appelez <function>dbMatch</function> sur un ensemble de transaction pour créer un itérateur d'assortiment. De même qu'avec l'API <literal>C</literal>, un itérateur d'assortiment permet à votre code de naviguer parmi les paquets qui satisfont le critère de tri donné.

note: Tag: para
en: A call to dbMatch with no parameters means to set up a match iterator to go over the entire set of installed packages. The basic format follows:
fr: Un appel à <function>dbMatch</function> sans paramètre définit un itérateur d'assortiment portant sur la totalité des paquets installés. La signature de base est la suivante :

note: Tag: para
en: # Do something with header object...
fr: # Faire quelque chose avec l'objet Header

note: Tag: para
en: In this example, the call to dbMatch returns a match iterator. The for loop iterates over the match iterator, returning one header each time.
fr: Dans cet exemple, l'appel à <function>dbMatch</function> renvoie un itérateur. La boucle <literal>for</literal> parcourt les objets correspondants et renvoie un <literal>Header</literal> à chaque cycle.

note: Tag: para
en: In addition to this syntax, you can call next on the match iterator to get the next entry, a header object that represents one package. For example:
fr: Avec cette syntaxe, vous pouvez en plus faire un appel sur cet itérateur pour obtenir l'entrée suivante, un objet <literal>Header</literal> représentant un paquet. Par exemple :

note: Tag: para
en: # Do something with the header object
fr: # Faire quelque chose avec l'objet Header

note: Tag: para
en: The explicit call to next on the match iterator will likely no longer be supported in a future version of the RPM Python API, since the PEP-234 (Python Enhancement Proposal) calls for one means or the other for iterating, but not both.
fr: L'appel explicite à <function>next</function> sur un itérateur d'assortiment ne sera vraisemblablement plus pris en charge dans une future version de l'API Python pour RPM, étant donné que le PEP-234 (Python Enhancement Proposal) exige l'une ou l'autre signification à propos de l'itération et non les deux.

note: Tag: para
en: For example, Listing 17-1 shows a Python script to print out the name, version, and release information for all installed packages.
fr: Par exemple, le listage 17-1 montre un script Python pour afficher le nom ainsi que les informations de version et de parution pour tous les paquets installés.

note: Tag: para
en: Listing 17-1: rpmqa.py
fr: Listage 17-1 : <filename>rpmqa.py</filename>

note: Tag: para
en: # Acts like rpm -qa and lists the names of all the installed packages.
fr: # Fait la même chose que rpm -qa et liste les noms de tous les paquets installés

note: Tag: para
en: # Usage:
fr: # Utilisation :

note: Tag: para
en: When you call this script, you should see output like the following, truncated for space:
fr: Quand vous lancez ce script, vous obtenez une sortie du type suivant, écourtée pour des raisons de place :

note: Tag: para
en: $ python rpmqa.py
fr: <prompt>$</prompt> <userinput>python rpmqa.py</userinput>

note: Tag: para
en: If you set the execute permission on this script, you can skip the explicit call to the python command. For example:
fr: Si, dans les droits d'accès de ce script, vous autorisez son exécution, vous pourrez vous épargner l'appel explicite à la commande <command>python</command>. Par exemple :

note: Tag: para
en: $ ./rpmqa.pyr
fr: <prompt>$</prompt> .<userinput>/rpmqa.pyr</userinput>

note: Tag: title
en: Examining the package header
fr: Examiner l'en-tête du paquet

note: Tag: para
en: The code in Listing 17-1 introduces the package header object, an object of the hdr class. This represents a package header, and contains entries such as the name, version, pre- and post-installation scripts, and triggers.
fr: Le code dans le listage 17-1 traite de l'objet <literal>package header</literal>, un objet de la classe <classname>hdr</classname>. Il représente l'en-tête du paquet et comporte des entrées telles que le nom, la version, les scripts préalables et différés pour l'installation et les commutateurs.

note: Tag: title
en: The hdr Class
fr: La classe <classname>hdr</classname>

note: Tag: para
en: You can access each entry in the header using Python's dictionary syntax. This is much more convenient than calling headerGetEntry in C programs. The basic syntax to access header entries follows:
fr: Vous pouvez avoir accès à chaque entrée de l'en-tête en utilisant la syntaxe du dictionnaire du Python. C'est beaucoup plus commode que l'appel à <function>headerGetEntry</function> dans les programmes en <literal>C</literal>. Voici la syntaxe de base pour avoir accès aux entrées de l'en-tête :

note: Tag: para
en: For example, to get the package name, use the following code:
fr: Par exemple, pour obtenir le nom du paquet, utilisez le code suivant ;

note: Tag: para
en: You can also use a set of predefined RPMTAG_ constants that match the C API. These constants are defined in the rpm module. For example:
fr: Vous pouvez également utiliser le jeu des constantes prédéfinies RPMTAG_ correspondant à celui de l'API <literal>C</literal>. Ces constantes sont définies dans le module rpm. Par exemple :

note: Tag: para
en: Using the rpm constants such as rpm.RPMTAG_NAME is faster than using the strings such as 'name'.
fr: Utiliser les constantes rpm telles que <literal>rpm.RPMTAG_NAME</literal> est plus rapide qu'utiliser des chaînes littérales comme <literal>name</literal>.

note: Tag: para
en: For header entries that hold an array of strings, such as the list of files in the package, the data returned is a Python list. For example:
fr: Pour les entrées d'en-tête qui comportent une table de chaînes littérales, comme la liste des fichiers du paquet, la donnée est renvoyée sous forme de liste Python. Par exemple :

note: Tag: para
en: You can use file info sets to achieve more compact code. For example:
fr: Vous pouvez utiliser les ensembles <literal>file info</literal> pour réaliser un code encore plus compact. Par exemple :

note: Tag: para
en: The requires, provides, obsoletes, and conflicts information each appear as three separate but related lists for each set of information, with three lists for the requires information, three for the provides information, and so on. You can extract this information using Python dependency sets using the simple code following:
fr: Les informations requises, fournies, obsolètes et conflictuelles apparaissent chacune sous forme de trois listes séparées mais en relation pour chaque ensemble d'information, avec trois listes pour les informations requises, trois pour les informations fournies, etc. Vous pouvez extraire ces informations en utilisant les ensembles de dépendance Python à l'aide de ce simple code :

note: Tag: para
en: The rpminfo.py script in Listing 17-3 shows how to print out this information.
fr: Le script <filename>rpminfo.py</filename> du listage 17-3 montre comment afficher cette information.

note: Tag: title
en: Printing Header Information with sprintf
fr: Afficher l'information d'en-tête avec <function>sprintf</function>

note: Tag: para
en: In addition to using the Python dictionary syntax, you can use the sprintf method on a header to format data using a syntax exactly the same as the query format tags supported by the rpm command.
fr: Outre l'utilisation de la syntaxe du dictionnaire Python, vous pouvez utiliser la méthode <function>sprintf</function> sur un en-tête pour mettre en forme les données exactement de la même façon qu'avec les marques de format prises en charge par l'option <option>query</option> de la commande <command>rpm</command>.

note: Tag: para
en: <xref linkend="ch-using-rpm-db" /> covers query formats.
fr: Le <xref linkend="ch-using-rpm-db" /> traite des formats de requête.

note: Tag: para
en: The basic syntax is as follows:
fr: La syntaxe de base est la suivante :

note: Tag: para
en: You can also use special formatting additions to the tag name. For example:
fr: Vous pouvez également utiliser des ajouts spéciaux au format du nom du marqueur. Par exemple :

note: Tag: para
en: print "Header signature: ", h.sprintf("%{DSAHEADER:pgpsig}")
fr: print "Signature de l'en-tête : ", h.sprintf("%{DSAHEADER:pgpsig}")

note: Tag: para
en: print "%-20s: %s" % ('Installed on', h.sprintf("%{INSTALLTID:date}") )
fr: print "%-20s: %s" % ('Installé le', h.sprintf("%{INSTALLTID:date}") )

note: Tag: para
en: You can combine this information into functions that print out header entries with specific formatting. For example:
fr: Vous pouvez combiner cette information dans des fonctions qui affichent les entrées de l'en-tête dans un format particulier. Par exemple :

note: Tag: para
en: Note that you only really need to use sprintf when you need the format modifiers, such as date on %{INSTALLTID:date}. In most other cases, Python’s string-handling functions will work better.
fr: Veuillez noter qu'il n'est réellement nécessaire d'utiliser <function>sprintf</function> que lorsque vous avez besoin de modifier le format, comme la date dans  %{INSTALLTID:date}. Dans la plupart des autres cas, les fonctions de manipulation de chaînes du Python fonctionnent mieux.

note: Tag: title
en: Querying for specific packages
fr: Rechercher des paquets particuliers

note: Tag: para
en: When you call dbMatch on a transaction set object, passing no parameters means to iterate over the entire set of installed packages in the RPM database. You can also query for specific packages using dbMatch. To do so, you need to pass the name of a tag in the header, as well as the value for that tag that you are looking for. The basic syntax follows:
fr: Appeler <function>dbMatch</function> pour un objet ensemble de transaction, sans préciser aucun paramètre, signifie itérer sur la totalité de l'ensemble des paquets installés dans la base de données RPM. Vous pouvez aussi questionner à propos de paquets bien précis avec cette fonction. Pour ce faire, il faut passer le nom d'un marqueur d'en-tête de même que la valeur de la marque recherchée. La syntaxe de base est la suivante :

note: Tag: para
en: For example, to query for all packages named sendmail, use code like the following:
fr: Par exemple, pour faire une requête sur tous les paquets nommés <package>sendmail</package>, utilisez du code comme celui-ci :

note: Tag: para
en: The call to dbMatch returns an rpmdbMatchIterator. You can query on any of the tags in the header, but by far the most common query is by name.
fr: L'appel à <function>dbMatch</function> renvoie un <classname>rpmdbMatchIterator</classname>. Vous pouvez faire une requête sur n'importe quel marqueur d'en-tête, mais le plus fréquent est de très loin le marqueur du nom.

note: Tag: para
en: Some matches are fast and some are much slower. If you try to match on a tag that is indexed in the RPM database, the matches will perform much faster than for those tags that are not indexes. To determine which tags are indexed, look at the files in /var/lib/rpm. For example, Name and Requirename are files in /var/lib/rpm. These tags are indexed and will therefore match quickly.
fr: Certaines correspondances sont rapides et d'autres moins. Si vous tentez une correspondance sur un marqueur indexé dans la base de données RPM, le résultat sera plus rapide que pour un marqueur non indexé. Pour savoir quel sont les marqueurs indexés, regardez les fichiers dans <filename>/var/lib/rpm</filename>. Par exemple, <literal>Name</literal> et <literal>Requirename</literal> sont des fichiers du répertoire <filename>/var/lib/rpm</filename>. Ces marqueurs sont indexés et, de ce fait, seront plus rapidement retrouvés.

note: Tag: para
en: Listing 17-2 shows an example Python script which queries for a particular package name and then prints out the name, version, and release for all matching packages.
fr: Le listage 17-2 montre un exemple de script Python faisant une recherche pour un nom de paquet donné, puis affichant le nom, la version et la parution pour tous les paquets de l'assortiment.

note: Tag: para
en: Listing 17-2: rpmq.py
fr: Listage 17-2: <filename>rpmq.py</filename>

note: Tag: para
en: # Acts like rpm -q and lists the N-V-R for installed
fr: # Fait comme rpm -q et liste les Noms-Version-Parution installés

note: Tag: para
en: # packages that match a given name.
fr: # pour les paquets correspondant à un nom donné.

note: Tag: para
en: When you call this script, you need to pass the name of a package to query, which the python interpreter will store in sys,argv[1] in the call to dbMatch. For example:
fr: Lors d'un appel à ce script, vous devez passer le nom du paquet à interroger ; l'interpréteur python l'a stocké dans sys.argv[1] pour l'appel à <function>dbMatch</function>. Par exemple :

note: Tag: title
en: Printing information on packages
fr: Afficher les informations à propos de paquets

note: Tag: para
en: You can create the equivalent of the rpm –qi command with a small number of Python commands. Listing 17-3 shows an example. This script queries for a particular package name, as shown previously in Listing 17-2. Once a package is found, though, rpminfo.py prints out a lot more information, similar to the output from the rpm –qi command.
fr: Vous pouvez recréer l'équivalent de la commande <command>rpm -qi</command> avec un petit nombre d'instructions Python. Le listage 17-3 montre un exemple. Ce script fait une requête pour un nom de paquet donné, comme démontré dans le listage 17-2. Une fois le paquet trouvé, <filename>rpminfo.py</filename> affiche un petit peu plus d'informations, comme le fait la sortie de la commande <command>rpm -qi</command>.

note: Tag: para
en: Listing 17-3: rpminfo.py
fr: Listage 17-3 : <filename>rpminfo.py</filename>

note: Tag: para
en: # Lists information on installed package listed on command line.
fr: # Liste des informations à propos d'un paquet installé précisé en ligne de commande.

note: Tag: para
en: extra = " source package"
fr: extra = " paquet source"

note: Tag: para
en: extra = " binary package"
fr: extra = " paquet binaire"

note: Tag: para
en: printEntry(h, 'Package', "%{NAME}-%{VERSION}-%{RELEASE}", extra)
fr: printEntry(h, 'Paquet', "%{NAME}-%{VERSION}-%{RELEASE}", extra)

note: Tag: para
en: printEntry(h, 'Group', "%{GROUP}", '')
fr: printEntry(h, 'Groupe', "%{GROUP}", '')

note: Tag: para
en: printEntry(h, 'Summary', "%{Summary}", '')
fr: printEntry(h, 'Résumé', "%{Summary}", '')

note: Tag: para
en: printEntry(h, 'Arch-OS-Platform', "%{ARCH}-%{OS}-%{PLATFORM}", '')
fr: printEntry(h, 'Arch-OS-Plate-forme', "%{ARCH}-%{OS}-%{PLATFORM}", '')

note: Tag: para
en: printEntry(h, 'Vendor', "%{Vendor}", '')
fr: printEntry(h, 'Distrib.', "%{Vendor}", '')

note: Tag: para
en: printEntry(h, 'Size', "%{Size}", '')
fr: printEntry(h, 'Taille', "%{Size}", '')

note: Tag: para
en: printEntry(h, 'Installed on', "%{INSTALLTID:date}", '')
fr: printEntry(h, 'Installé le', "%{INSTALLTID:date}", '')

note: Tag: para
en: # Dependencies
fr: # Dépendances

note: Tag: para
en: print "Provides:"
fr: print "Fournit :"

note: Tag: para
en: print "Requires:"
fr: print "Requiert :"

note: Tag: para
en: print "Obsoletes:"
fr: print "Obsolètes :"

note: Tag: para
en: print "Conflicts:"
fr: print "En conflit :"

note: Tag: para
en: You should be able to simplify this script. The extensive use of the sprintf method is for illustration more than efficiency. You generally only need to call sprintf when you need a format modifier for a tag. In the rpminfo.py script, sprintf was also used to ensure that all entries are text, which allows for calling strip.
fr: Vous devriez pouvoir simplifier ce script. La méthode <function>sprintf</function> est utilisée plus pour sa démonstration que pour l'efficacité. Vous n'avez généralement besoin de l'appeler que quand vous voulez modifier le format d'un marqueur. Dans le script <filename>rpminfo.py</filename>, <function>sprintf</function> a été également utilisée pour s'assurer que toutes les entrées sont du texte; ce qui permet l'appel de <function>strip</function>.

note: Tag: para
en: The printEntry function takes in a header sprintf tag value in the format of "%{NAME}". You can also pass in more complex values with multiple header entries, such as "%{NAME}-%{VERSION}".
fr: La fonction <function>printEntry</function> prend en paramètre une valeur <literal>sprintf</literal> de marqueur d'en-tête avec le format <literal>%{NAME}</literal>. Vous pouvez passer également des valeurs encore plus complexes avec plusieurs entrées d'en-tête, telles que <literal>%{NAME}-%{VERSION}</literal>.

note: Tag: para
en: When you run this script, you need to pass the name of a package. You'll see output like the following:
fr: Quand vous lancez ce script, vous devez passer en paramètre le nom d'un paquet. Vous obtiendrez une sortie du type suivant :

note: Tag: para
en: $ python rpminfo.py jikes
fr: <prompt>$</prompt> <userinput>python rpminfo.py jikes</userinput>

note: Tag: para
en: Package : jikes-1.18-1 binary package
fr: Paquet : jikes-1.18-1 paquet binaire

note: Tag: para
en: Group : Development/Languages
fr: Groupe : Development/Languages

note: Tag: para
en: Summary : java source to bytecode compiler
fr: Résumé : java source to bytecode compiler

note: Tag: para
en: Arch-OS-Platform : i386-Linux-(none)
fr: Arch-OS-Plate-forme : i386-Linux-(none)

note: Tag: para
en: Vendor : (none)
fr: Distrib. : (none)

note: Tag: para
en: Size : 2853672
fr: Taille : 2853672

note: Tag: para
en: Installed on : Mon Dec 2 20:10:13 2002
fr: Installé le : Mon Dec 2 20:10:13 2002

note: Tag: para
en: Files:
fr: Fichiers:

note: Tag: para
en: Provides:
fr: Fournit :

note: Tag: para
en: Requires:
fr: Requiert :

note: Tag: title
en: Refining queries
fr: Affiner les requêtes

note: Tag: para
en: The pattern method on a match iterator allows you to refine a query. This narrows an existing iterator to only show the packages you desire. The basic syntax follows:
fr: La méthode <function>pattern</function> sur l'itérateur d'un assortiment vous permet d'affiner une requête

note: Tag: para
en: mi.pattern(tag_name, mode, pattern)
fr: mi.pattern(<replaceable>NOM_MARQUEUR, MODE, TRAME</replaceable>)

note: Tag: para
en: The two main uses of the pattern method are to query on more than one tag, such as the version and name, or to narrow the results of a query, using the rich set of pattern modes. The mode parameter names the type of pattern used, which can be one of those listed in Table 17-2.
fr: Les deux principales utilisations de la méthode <function>pattern</function> sont, soit une requête portant sur plus d'un marqueur, comme la version et le nom, soit l'affinage des résultats d'une requête en utilisant la riche palette de types de motifs. Le paramètre <parameter>mode</parameter> désigne le type du motif utilisé. Il peut être un de ceux listés dans le tableau 17-2.

note: Tag: para
en: Table 17-2 Pattern modes for the pattern method
fr: Tableau 17-2 : types de motifs à utiliser dans la méthode <function>pattern</function>

note: Tag: para
en: Meaning
fr: Signification

note: Tag: para
en: Same as regular expressions, but with \., .*, and ^..$ added
fr: Identique aux expressions régulières, avec en plus \., .* et ^..$

note: Tag: para
en: Glob-style patterns using fnmatch
fr: Motifs du style <function>glob</function> utilisant <function>fnmatch</function>

note: Tag: para
en: Regular expressions using regcomp
fr: Expressions régulières utilisant <function>regcomp</function>

note: Tag: para
en: String comparisons using strcmp
fr: Comparaisons de chaînes utilisant <function>strcmp</function>

note: Tag: para
en: For more on these patterns, see the online manual pages for fnmatch(3), glob(7), regcomp(3), regex(7), and strcmp(3). The pattern method calls rpmdbSetIteratorRE from the C API, covered in the “Database Iterators” section in <xref linkend="ch-programming-c" /> .
fr: Pour plus de détails à propos des motifs, reportez-vous aux pages de manuel pour <function>fnmatch(3)</function>, <function>glob(7)</function>, <function>regcomp(3)</function>, <function>regex(7)</function> et <function>strcmp(3)</function>. La méthode <function>pattern</function> fait appel à <function>rpmdbSetIteratorRE</function> de l'API <literal>C</literal>, exposée dans le paragraphe <emphasis>Itérateurs de base de données</emphasis> du <xref linkend="ch-programming-c" />.

note: Tag: para
en: To query for all packages starting with py, for example, you can use code like the following:
fr: Pour effectuer une requête sur tous les paquets dont le nom commence par <literal>py</literal>, par exemple, utilisez un code du type suivant :

note: Tag: para
en: # Do something with the header...
fr: # Faire quelque chose avec l'en-tête...

note: Tag: para
en: Listing 17-4 shows an example for glob-based querying.
fr: Le listage 17-4 montre un exemple de requête se fondant sur <function>glob</function>.

note: Tag: para
en: Listing 17-4: rpmglob.py
fr: Listage 17-4 : <filename>rpmglob.py</filename>

note: Tag: para
en: # Acts like rpm -q and lists the N-V-R for installed packages
fr: # Fait comme rpm -q et liste le Nom-Version-Parution des paquets installés

note: Tag: para
en: # that match a given name using a glob-like syntax
fr: # correspondant à un nom donné en utilisant une syntaxe du type glob

note: Tag: para
en: print "No packages found."
fr: print "Aucun paquet trouvé."

note: Tag: para
en: When you run this script, you’ll see output like the following:
fr: Quand vous lancez ce script, vous voyez une sortie du type suivant :

note: Tag: para
en: $ python rpmglob.py "py*"
fr: <prompt>$</prompt> <userinput>python rpmglob.py "py*"</userinput>

note: Tag: para
en: In addition to working with the RPM database, the Python API also provides access to RPM files.
fr: En plus de permettre de travailler avec la base de données RPM, l'API Python permet d'accéder aux fichiers RPM.

note: Tag: title
en: Reading Package Files
fr: Lire les fichiers paquet

note: Tag: para
en: As you would expect, the Python API includes methods for working with RPM package files in addition to installed RPM packages. Most of these methods require a header object, which you can read from an RPM package file.
fr: Comme vous pouviez vous y attendre, outre les paquets installés, l'API Python comporte des méthodes pour travailler avec les fichiers paquet RPM. La plupart de ces méthodes demandent un objet <classname>Header</classname> à partir duquel vous pourrez lire les informations sur le fichier paquet RPM.

note: Tag: title
en: Reading headers from package files
fr: Lire les en-têtes des fichiers paquet

note: Tag: para
en: Like the C function rpmReadPackageFile, the Python API provides a convenient way to read in a header object from an RPM package file. The hdrFromFdno method reads an RPM header from an open file descriptor. The basic syntax is:
fr: Comme l'API <literal>C</literal> avec la fonction <function>rpmReadPackageFile</function>, l'API Python fournit un moyen approprié pour lire dans un objet en-tête d'un fichier paquet RPM. La méthode <function>hdrFromFdno</function> lit un en-tête RPM à partir d'un descripteur de fichier ouvert. Voici la syntaxe de base :

note: Tag: para
en: The hdrFromFdno method uses Python’s low-level file descriptors instead of the higher-level Python file objects. In the RPM C library, an FD_t is a FILE**. This could be bound to a Python class, but that is outside the scope of this chapter.
fr: La méthode <function>hdrFromFdno</function> utilise les descripteurs de fichier de bas niveau du Python au lieu des objets fichier de plus haut niveau de ce même langage. Dans la bibliothèque RPM du <literal>C</literal>, le type <literal>FD_t</literal> est un <literal>FILE**</literal>. Ce dernier ne peut pas être relié à une classe Python, mais ce problème sort du champ de ce chapitre.

note: Tag: para
en: The following example shows a function that opens a file, reads in the RPM header, and then closes the file:
fr: L'exemple suivant montre une fonction qui ouvre un fichier, lit l'en-tête RPM, puis ferme le fichier :

note: Tag: para
en: """ Read an rpm header. """
fr: """ Lit une en-tête RPM. """

note: Tag: para
en: The hdrFromFdno method raises a number of exceptions based on issues detected with the package files. The following example shows these exceptions:
fr: La méthode <function>hdrFromFdno</function> déclenche un certain nombre d'exceptions selon les problèmes rencontrés avec les fichiers paquet. L'exemple qui suit affiche ces exceptions :

note: Tag: para
en: You can decide in your code whether the exceptions should stop processing or not.
fr: Vous pouvez décider dans votre code si les exceptions déclenchées doivent arrêter le programme ou pas.

note: Tag: title
en: Setting the verification flags
fr: Définir les marqueurs de vérification

note: Tag: para
en: Starting with rpm 4.1, package files are verified automatically, which can cause problems, especially if you are working with older packages, or packages without proper digital signatures.
fr: Depuis la version 4.1 de <package>rpm</package>, les fichiers paquet sont automatiquement vérifiés, ce qui peut causer des difficultés, en particulier si vous travaillez avec des paquets plus anciens ou avec des paquets sans signature électronique appropriée.

note: Tag: para
en: In most cases, the automatic verification is an advantage, since you can have greater confidence in the package files. However, you can call setVSFlags on a transaction set to change the default behavior.
fr: Dans la plupart des cas, la vérification automatique est un avantage, car elle permet d'avoir confiance dans les fichiers paquet. Toutefois, vous pouvez faire appel à <function>setVSFlags</function> sur un ensemble de transaction pour modifier le comportement par défaut.

note: Tag: para
en: For example, if you have problems with old packages that do not have proper signatures, you can use code like the following to ignore such checks:
fr: Par exemple, si vous avez des problèmes avec des paquets anciens ne comportant pas de signature appropriée, pour ignorer la vérification de celle-ci vous pouvez utiliser du code tel que celui qui suit :

note: Tag: para
en: # Set to not verify DSA signatures.
fr: # Ne pas vérifier les signatures DSA.

note: Tag: para
en: Table 17-3 lists the flags you can pass to setVSFlags on a transaction set. These flags are bitmasks. You can or them together for more than one setting. You must do a binary or. Do not use the Python or keyword. Use | instead, for a binary or operation.
fr: Le tableau 17-3 fait la liste des marqueurs que vous pouvez passer à <function>setVSFlags</function> sur un ensemble de transaction. Ces marqueurs sont des masques de bits. Vous pouvez les associer avec <literal>OR</literal> pour en activer plusieurs. Vous devez faire un <literal>OR</literal> binaire. N'utilisez pas le mot-clé <literal>or</literal> du Python. Employez l'opérateur <literal>|</literal> pour effectuer une opération binaire.

note: Tag: para
en: Table 17-3 Flags for setVSFlags
fr: Tableau 17-3 : marqueurs pour <function>setVSFlags</function>

note: Tag: para
en: Flag
fr: Marqueur

note: Tag: para
en: Leave the file handle positions at the beginning of the payload.
fr: Laisser les positions de <literal>handle</literal> de fichier au début du chargement utile.

note: Tag: para
en: Don’t check the RPM database header.
fr: Ne pas vérifier l'en-tête de la base de données RPM.

note: Tag: para
en: Don’t check the header and payload DSA signatures.
fr: Ne pas vérifier les signatures DSA de l'en-tête et du chargement utile.

note: Tag: para
en: Don’t check the header DSA signature.
fr: Ne pas vérifier la signature DSA de l'en-tête.

note: Tag: para
en: Don’t check the header and payload MD5 digests.
fr: Ne pas vérifier les sommes de contrôle MD5 de l'en-tête et du chargement utile

note: Tag: para
en: Don’t check the header and payload RSA signatures.
fr: Ne pas vérifier les signatures RSA de l'en-tête et du chargement utile.

note: Tag: para
en: Don’t check the header SHA1 digest.
fr: Ne pas vérifier la somme de contrôle SHA1 de l'en-tête.

note: Tag: para
en: Convenience to not check digests.
fr: Commodité pour ne vérifier aucune somme de contrôle.

note: Tag: para
en: Convenience to not check signatures.
fr: Commodité pour ne vérifier aucune signature.

note: Tag: para
en: To turn off all checks, you can pass –1 to setVSFlags:
fr: Pour désactiver toutes les vérifications, vous pouvez passer <literal>-1</literal> à <function>setVSFlags</function> :

note: Tag: title
en: Dependency Comparisons
fr: Comparer les dépendances

note: Tag: para
en: Dependency sets, first introduced in <xref linkend="ch-programming-c" /> on C programming, allow you to compare the dependencies between two packages. One of the most common uses for this is to compare a package file against a version on disk to see if the package file holds a newer version of a package than the one installed.
fr: Les jeux de dépendances, exposés une première fois dans le  <xref linkend="ch-programming-c" /> à propos de la programmation <literal>C</literal>, vous permettent d'évaluer les différences entre dépendances de deux paquets. L'utilisation la plus courante de cet objet consiste à comparer un fichier paquet avec la version installée sur disque pour voir si le fichier paquet contient une version plus récente.

note: Tag: para
en: You can call dsOfHeader on a header object to get the default dependency set for the header. Armed with dependency sets from two headers, you can compare the sets to see which package is newer using simple code like the following:
fr: Appelez <function>dsOfHeader</function> sur un objet <classname>Header</classname> pour obtenir le jeu de dépendances par défaut définie dans cet objet. En possession de jeux de dépendances provenant de deux en-têtes, vous pouvez les comparer pour voir quel est est le paquet le plus récent à l'aide de ce simple code :

note: Tag: para
en: print "Package file is same or newer, OK to upgrade."
fr: print "Fichier paquet identique ou plus récent, vous pouvez mettre à jour."

note: Tag: para
en: print "Package file is older than installed version."
fr: print "Fichier paquet plus ancien que la version installée."

note: Tag: para
en: Pulling this all together, Listing 17-5 provides a Python script that compares a package file against an installed package, reporting on which is newer.
fr: En regroupant le tout, le listage 17-5 décrit un script Python comparant un fichier paquet et un paquet installé, puis indiquant quel est le plus récent.

note: Tag: para
en: Listing 17-5: vercompare.py
fr: Listage 17-5 : <filename>vercompare.py</filename>

note: Tag: para
en: # Reads in package header, compares to installed package.
fr: # Lire l'en-tête d'un paquet, le comparer à celui qui est installé.

note: Tag: para
en: Cross-Reference
fr: Référence croisée

note: Tag: para
en: The Python script in Listing 17-5 is essentially the same as the longer C program vercompare.c in Listing 16-4 in <xref linkend="ch-programming-c" /> .
fr: Le script Python du listage 17-5 est fondamentalement identique au programme <literal>C</literal>, plus long, <filename>vercompare.c</filename> du listage 16-4 du <xref linkend="ch-programming-c" />.

note: Tag: para
en: This script takes in a package file name on the command line, loads in the header for that package, and looks up all packages of the same name installed in the RPM database. For each match, this script compares the packages to see which is newer.
fr: Ce script relève le nom d'un fichier paquet sur la ligne de commande, charge l'en-tête de ce paquet et recherche tous les paquets de même nom mentionnés dans la base de données RPM. Pour chaque correspondance, ce script compare les paquets pour voir quel est le plus récent.

note: Tag: para
en: You can modify this script, for example, to print out a message if a package isn't installed.
fr: Vous pouvez modifier ce script, pour, par exemple, afficher un message si un paquet n'est pas installé.

note: Tag: title
en: Installing and Upgrading Packages
fr: Installer et mettre à jour des paquets

note: Tag: para
en: With the RPM system, you have a lot of choices. You can install or upgrade packages with the rpm command. You can install or upgrade packages with special programs you write using the C API. And you can install or upgrade packages using the Python API. If you are writing a special program to install or upgrade packages, the Python API makes this task much easier. As with the C API, most of your work needs to be part of a transaction set.
fr: Avec le système RPM, vous avez pléthore de choix. Vous pouvez installer ou mettre à jour des paquets avec la commande <command>rpm</command>. Vous pouvez installer ou mettre à jour des paquets avec des programmes spécifiques écrits par vos soins en utilisant l'API <literal>C</literal>. Vous pouvez installer ou mettre à jour des paquets en utilisant l'API Python. Si vous écrivez des programmes spécifiques pour installer ou mettre à jour des paquets, l'API Python rend la tâche plus facile. Comme avec l'API <literal>C</literal>, la plupart des directives exigent l'utilisation d'un ensemble de transaction.

note: Tag: para
en: To install or upgrade a package, you need to create a transaction set, build up the transaction with packages, which are stored as transaction elements within the transaction set, check for unresolved dependencies, reorder the transaction set based on the dependencies, and then run the transaction set. Running the transaction set installs or upgrades the packages. The following sections cover these steps.
fr: Pour installer ou mettre à jour un paquet, vous devez créer un ensemble de transaction, bâtir la transaction avec des paquets — stockés en tant qu'éléments de transaction dans l'ensemble de transaction —, vérifier les dépendances non résolues, réordonner l'ensemble de transaction selon les dépendances et ensuite lancer l'ensemble de transaction. Le lancement de l'ensemble de transaction installe ou met à jour les paquets. Les sections suivantes détaillent chacune de ces étapes.

note: Tag: title
en: Building up the transaction set
fr: Bâtir l'ensemble de transaction

note: Tag: para
en: Package installs and upgrades need to be performed within the context of a transaction set. To install or upgrade a set of packages, you need to call addInstall with the package headers to install or upgrade. The basic syntax follows:
fr: Les installations et mises à jour de paquets doivent être réalisées dans un contexte de transaction. Pour installer ou mettre à jour un ensemble de paquets, vous appelez <function>addInstall</function> avec les en-têtes de paquets à installer ou mettre à jour. La syntaxe de base est la suivante :

note: Tag: para
en: When you call addInstall, you pass the header object along with arbitrary callback key data and a mode flag. The mode flag should be 'i' to install a package, 'u' to upgrade a package, or 'a' as a special code to make a package available for transaction checks but not install or upgrade the package. The 'a' flag is rarely used. In most cases, you should use 'u', just as in most cases, you should install packages with rpm –U instead of rpm –i.
fr: Lors d'un appel à <function>addInstall</function>, vous passez l'objet <classname>header</classname> accompagné d'une fonction de rappel <function>key_data</function> et d'un marqueur de mode. Ce dernier sera égal à <literal>'i'</literal> pour installer un paquet, <literal>'u'</literal> pour mettre à jour un paquet ou <literal>'a'</literal> en tant que code spécial pour vérifier la transaction sans installer ni mettre à jour le paquet. Le marqueur <literal>'a'</literal> est rarement utilisé. Dans la plupart des cas, vous utiliserez le marqueur <literal>'u'</literal> de la même manière que dans la plupart des cas vous installez les paquets avec <command>rpm –U</command> au lieu de <command>rpm –i</command>.

note: Tag: para
en: The key_data parameter will get passed to the transaction set run callback, covered in the “Running the Transaction” section later in this chapter.
fr: Le paramètre <parameter>key_data</parameter> passé avec l'ensemble de transaction lance une fonction de rappel, explicitée dans le paragraphe <emphasis>Effectuer la transaction</emphasis> plus bas dans ce chapitre.

note: Tag: para
en: To remove packages instead of install or upgrade, call addErase instead of addInstall:
fr: Pour supprimer des paquets, au lieu d'en installer ou d'en mettre à jour, appelez <function>addErase</function> à la place de <function>addInstall</function> :

note: Tag: para
en: To set up a package to be upgraded or installed, you can use code like the following:
fr: Pour configurer un paquet à mettre à jour ou à installer, vous pouvez utiliser du code comme suit :

note: Tag: para
en: This example expects a package file name on the command line (accessed with sys.argv[1]), and reads in the package header using the readRpmHeader function introduced previously.
fr: Cet exemple attend un nom de fichier paquet en ligne de commande (auquel on a accès avec <parameter>sys.argv[1]</parameter>). Ce code lit dans l'en-tête du paquet en se servant de la fonction <function>readRpmHeader</function> explicitée plus haut.

note: Tag: para
en: The call to addInstall adds the header object (and the associated RPM package file) for an upgrade with the 'u' mode flag. The name of the package file, from sys.argv[1], is passed as the arbitrary data for the transaction set run callback function.
fr: L'appel à <function>addInstall</function> ajoute l'objet <classname>header</classname> (et le fichier paquet associé) pour une mise à jour avec le marqueur <literal>'u'</literal>. Le nom du fichier paquet (dans <literal>sys.argv[1]</literal> est passé à la fonction de rappel en tant que en tant que donnée arbitraire pour l'ensemble de transaction.

note: Tag: title
en: Transaction elements
fr: Éléments de transaction

note: Tag: para
en: Transaction sets are made up of transaction elements. A transaction element makes up one part of a transaction and holds one package per operation (install or remove) in each transaction set. That is, there is one transaction element per package per operation in the transaction set. You can iterate over a transaction set to get each transaction element. Once you have a transaction element, you can call methods on each element to check entries in the header as well as get dependency sets for the package.
fr: Les ensembles de transaction sont composés d'éléments de transaction. Un élément de transaction, partie de la transaction, contient un paquet par opération (installer ou enlever) dans chaque ensemble de transaction. Ce qui signifie qu'il y a un élément de transaction par paquet et par opération dans l'ensemble de transaction. Vous pouvez parcourir un ensemble de transaction pour obtenir chaque élément de la transaction. Une fois l'élément de transaction isolé, vous pouvez faire appel à des méthodes sur ledit élément pour vérifier les entrées de l'en-tête de même qu'obtenir les jeux de dépendances pour le paquet.

note: Tag: para
en: Table 17-4 lists the informational methods you can call on a transaction element. Most of the methods listed in Table 17-4 return a single value.
fr: Le tableau 17-4 liste les méthodes informatives auxquelles vous pouvez faire appel sur un élément de transaction. La plupart des méthodes citées dans le tableau 17-4 renvoient une seule valeur.

note: Tag: para
en: Table 17-4 Informational methods on transaction sets
fr: Tableau 17-4 : méthodes informatives sur ensembles de transaction

note: Tag: para
en: Method
fr: Méthode

note: Tag: para
en: Returns
fr: Retour

note: Tag: para
en: Returns package architecture
fr: Renvoie l'architecture du paquet

note: Tag: para
en: Returns package epoch
fr: Renvoie <literal>Epoch</literal> pour le paquet

note: Tag: para
en: Returns package operating system
fr: Renvoie le système d'exploitation du paquet

note: Tag: para
en: Returns package release number
fr: Renvoie le numéro de parution du paquet

note: Tag: para
en: Returns package version
fr: Renvoie le numéro de version du paquet

note: Tag: para
en: Returns package name
fr: Renvoie le nom du paquet

note: Tag: para
en: Returns package name-epoch-version-release
fr: Renvoie le nom, l'époque, la version et la parution du paquet

note: Tag: para
en: Returns the package dependency set for a given tag
fr: Renvoie le jeu de dépendances du paquet pour un marqueur donné

note: Tag: para
en: Returns the file info set for the package
fr: Renvoie l'ensemble d'information du fichier

note: Tag: para
en: For more complex checking, the DS method returns the package dependency set for a given tag:
fr: Concernant les vérifications plus complexes, la méthode DS renvoie le jeu de dépendances pour un marqueur donné :

note: Tag: para
en: Pass one of 'Providename', 'Requirename', 'Obsoletename', or 'Conflictname' for the tag name. For example:
fr: Passez un des mots clés <emphasis>'Providename'</emphasis>, <emphasis>'Requirename'</emphasis>, <emphasis>'Obsoletename'</emphasis> ou <emphasis>'Conflictname'</emphasis> comme marqueur. Par exemple :

note: Tag: para
en: The FI method returns the file info set for the package:
fr: La méthode FI renvoie l'ensemble d'information du fichier pour le paquet :

note: Tag: para
en: For the FI method, you must pass a tag name of 'Basenames'.
fr: Pour la méthode FI, vous devez passer le nom de marqueur <emphasis>'Basenames'</emphasis>.

note: Tag: para
en: As an example, Listing 17-6 shows how to iterate through a transaction set to get transaction elements.
fr: En tant qu'exemple, le listage 17-6 montre comment parcourir un ensemble de transaction pour en obtenir des éléments.

note: Tag: para
en: Listing 17-6: te.py
fr: Listage 17-6 : <filename>te.py</filename>

note: Tag: para
en: # Adds all package files on command line to a transaction
fr: # Ajoute tous les fichiers paquet en ligne de commande dans une transaction

note: Tag: para
en: # and prints out the transaction elements.
fr: # et affiche les éléments de transaction.

note: Tag: para
en: print "This will install:"
fr: print "Installation de :"

note: Tag: para
en: The te.py script sets up a transaction and then prints out the elements, never completing the transaction. The purpose here is just to show what is in the transaction. The second set of printed output shows the results of the check and order methods, covered in the following section.
fr: Le script <filename>te.py</filename> définit une transaction, puis affiche les éléments constituants, sans jamais la réaliser. Le but ici est d'afficher ce qui la compose. Le deuxième ensemble de sorties affiche le résultat des méthodes <function>check</function> et <function>order</function>, exposées dans le paragraphe suivant.

note: Tag: title
en: Checking and reordering the transaction elements
fr: Vérifier et ordonner les éléments d'une transaction

note: Tag: para
en: After you have called addInstall or addErase for each of the packages you want to install, upgrade, or remove, you need to call two methods to verify the transaction set and order all the elements properly. These two methods are check and order.
fr: Après avoir fait appel à <function>addInstall</function> et <function>addErase</function> pour chacun des paquets que vous voulez installer, mettre à jour ou enlever, vous devez lancer deux méthodes pour vérifier l'ensemble de transaction et ordonner proprement les éléments. Ces deux méthodes sont <function>check</function> et <function>order</function>.

note: Tag: title
en: Checking the Dependencies
fr: Vérifier les dépendances

note: Tag: para
en: The check method checks the dependencies in a transaction set.
fr: La méthode <function>check</function> vérifie les dépendances d'un ensemble de transactions.

note: Tag: para
en: It returns None if all dependencies are resolved, or a complex tuple for each unresolved dependency. In general, if the check method returns anything but None, you cannot perform the transaction.
fr: Elle renvoie, soit <literal>None</literal> si toutes les dépendances sont résolues, soit un N-uplet complexe pour chaque dépendance non résolue. En règle générale, si la méthode <function>check</function> renvoie autre chose que <literal>None</literal>, vous ne pouvez pas réaliser la transaction.

note: Tag: para
en: On a dependency failure, check returns a complex tuple of the dependency information in the following format:
fr: En cas d'échec, <function>check</function> renvoie un N-uplet d'information sur les dépendances avec le format :

note: Tag: para
en: The first element is a tuple of the name, version, and release of the package you are trying to install. The next tuple holds the required name and required version or conflicting name and version. The version will be None if the dependency is a shared library or other file.
fr: Le premier élément est un triplet du nom, de la version et de la parution du paquet que vous voulez installer. Le couple suivant contient le nom et la version du paquet requis ou en conflit. La version sera marquée <literal>None</literal> si la dépendance est une bibliothèque partagée ou autre fichier.

note: Tag: para
en: The needs flags tell you about the requirement or conflict. The value is a bitmask that can contain the following bit settings: rpm.RPMSENSE_EQUAL, rpm.RPMSENSE_GREATER, and rpm.RPMSENSE_LESS. This tells you if the dependency is for a version of a package greater than 4.1, for example.
fr: Les marqueurs de nécessité vous indiquent les besoins ou les conflits. Leur valeur est un masque de bits contenant les définitions suivantes : rpm.RPMSENSE_EQUAL, rpm.RPMSENSE_GREATER ou rpm.RPMSENSE_LESS. Elles vous indiquent si la dépendance est relative à une version ou un paquet plus grand que 4.1, par exemple.

note: Tag: para
en: The suggested package names a package that solves the dependency. The packages considered are those for which you call addInstall with a flag of 'a'. This value will be None if there is no known package to solve this dependency.
fr: Le paquet suggéré cite un paquet résolvant la dépendance. Les paquets pris en considération sont ceux pour lesquels vous pouvez appeler <function>addInstall</function> avec le marqueur <literal>'a'</literal>. Cette valeur est <literal>None</literal> s'il n'y a aucun paquet connu susceptible de résoudre la dépendance.

note: Tag: para
en: You can tell whether the dependency is a conflict or a requirement based on the sense value, one of rpm.RPMSENSE_CONFLICTS or rpm.RPMSENSE_REQUIRES.
fr: Vous pouvez savoir si la dépendance est un conflit ou une requête selon la valeur de <literal>sense</literal>, qui sera, soit rpm.RPMSENSE_CONFLICTS, soit rpm.RPMSENSE_REQUIRES.

note: Tag: para
en: For example, the following tuple shows a required package:
fr: Par exemple, le N-uplet suivant indique un paquet requis :

note: Tag: para
en: The following tuple shows a required shared library:
fr: Celui-ci indique une bibliothèque partagée requise :

note: Tag: para
en: This tuple format will likely change in future versions of RPM. This example shows the format in RPM 4.1. With each RPM release, check the online documentation on the Python API to look for changes.
fr: Ce format de N-uplet changera vraisemblablement dans une future version de RPM. Ces exemples sont relatif au format de la version 4.1 de RPM. Pour chaque version de RPM, vérifiez sur la documentation en ligne de l'API Python que des changements ne soient pas intervenus.

note: Tag: title
en: Transaction Check Method Callbacks
fr: Fonctions de rappel de la méthode de vérification de la transaction

note: Tag: para
en: You can pass an optional callback function to the call to check. This callback gets called for each unresolved dependency in the transaction set. You can use this callback to try to automatically bring in required packages, for example.
fr: Vous pouvez passer une fonction de rappel optionnelle lors de l'appel de <function>check</function>. Cette fonction sera sollicitée pour chaque dépendance non résolue de l'ensemble de transaction. Vous pouvez vous servir de cette fonction de rappel pour essayer de récupérer automatiquement les paquets requis, par exemple.

note: Tag: para
en: The basic syntax for the transaction check callback is:
fr: La syntaxe de base pour la fonction de rappel de vérification d'une transaction est :

note: Tag: para
en: # Do something…
fr: # Faire quelque chose ...

note: Tag: para
en: You can use a check callback to automatically bring in packages that are required into a transaction set. You can bring in packages from the Red Hat RPM database package, which contains a database of all Red Hat packages, the rpmdb-redhat package. You can open the database from this package by using the trick described previously for opening transactions to more than one RPM database at a time. Simply set the _dbpath macro to "/usr/lib/rpmdb/i386-redhat-linux/redhat", or the location of your rpmdb-redhat database, and create a transaction set. Your check callback can then search this extra database and add packages from that database into the current, real RPM database.
fr: Vous pouvez vous servir de la fonction de rappel pour intégrer automatiquement les paquets requis d'un ensemble de transaction. Vous pouvez les récupérer à partir du paquet base de données RPM Red Hat, qui contient, comme son nom l'indique, la base de données de tous les paquet Red Hat ; il s'agit du paquet <package>rpmdb-redhat</package>. Vous pouvez ouvrir la base de données de ce paquet en utilisant les astuces précédemment décrites pour ouvrir des transactions avec plus d'une base de données à la fois. Définissez simplement la macro <literal>_dbpath</literal> à la valeur <filename>/usr/lib/rpmdb/i386-redhat-linux/redhat</filename> (ou bien à l'emplacement de la base de données <package>rpmdb-redhat</package>) et créez un ensemble de transaction. La fonction de rappel de vérification peut alors opérer des recherches dans cette base de données complémentaire et ajouter des paquets de cette base de données vers la base de données réelle RPM courante.

note: Tag: para
en: Your check callback can also attempt to find package files to resolve dependencies, from a disk directory or network archive for example. The following code shows a stub check callback that you can fill in to try to resolve dependencies. This callback sets up a format for finding unresolved packages in another RPM database, or elsewhere. You need to fill in the skeleton with the algorithm you want to actually resolve the dependencies.
fr: Votre fonction de rappel de vérification peut aussi essayer de trouver des fichiers paquets pour résoudre des dépendances dans un répertoire de disque ou une archive réseau par exemple. Le code qui suit décrit l'ébauche d'une fonction de rappel de vérification que vous pourrez compléter pour résoudre des dépendances. Il indique un format pour rechercher des paquets de dépendances non résolues dans d'autres bases de données RPM, ou ailleurs. Il est nécessaire que vous complétiez cette ébauche avec l'algorithme avec lequel vous souhaitez réellement résoudre les dépendances.

note: Tag: para
en: # What do you need to do.
fr: # Ce que vous devez faire.

note: Tag: para
en: print "Must find package [", N, "-", EVR, "]"
fr: print "Paquet à trouver [", N, "-", EVR, "]"

note: Tag: para
en: print "Must find file [", N, "]"
fr: print "Fichier à trouver [", N, "]"

note: Tag: para
en: Depending on the values passed to the callback, your code must either find a package itself or a package that provides a given file or capability to resolve the dependency. If you have another RPM database to look at, such as the rpmdb-redhat database, you can use dbMatch to find the necessary packages in that database. If, however, you are working with a directory of RPM files, you need to build up file names from the package name, version, and release.
fr: Selon les paramètres passés à la fonction de rappel, votre code doit, ou bien trouver un paquet soi-même , ou bien un paquet qui fournit un fichier donné ou une fonctionnalité susceptible de résoudre la dépendance. Si vous possédez une autre base de données RPM dans laquelle opérer une recherche, comme la base de données <package>rpmdb-redhat</package>, vous pouvez utiliser <function>dbMatch</function> pour rechercher les paquets nécessaires dans cette base de données. Toutefois, si vous travaillez avec un répertoire de fichiers RPM, vous aurez besoin de construire les noms de fichiers à partir des noms, version et parution du paquet.

note: Tag: title
en: Reordering the Transaction Set
fr: Ordonner l'ensemble de transaction

note: Tag: para
en: You can add packages to a transaction set in any order. The order method reorders the transaction set to ensure that packages get installed or removed in the right order. The order method orders by a topological sort using the dependencies relations between objects with dependency comparisons.
fr: Vous pouvez placer des paquets dans un ensemble de transaction dans n'importe quel ordre. La méthode <function>order</function> ordonnera à nouveau l'ensemble de transaction pour s'assurer que les paquets soient installés ou enlevés dans le bon ordre. Cette méthode ordonne en faisant un tri topologique utilisant les relations de dépendance entre objets par comparaison de dépendances.

note: Tag: para
en: You must call check prior to order.
fr: Il faut faire appel à la méthode <function>check</function> avant de faire appel à la méthode <function>order</function>.

note: Tag: title
en: Running the transaction
fr: Exécuter la transaction

note: Tag: para
en: After setting up the transaction set, perform the transaction by calling run. You need to provide two parameters:
fr: Après avoir défini l'ensemble de transaction, réalisez la transaction avec un appel à <function>run</function>. Vous devez fournir deux paramètres :

note: Tag: para
en: The callback parameter must be a Python function. The client_data is any data you want to pass to the callback. There may be more than one package in the transaction set, so this data should not be specific to a particular package.
fr: Le paramètre <parameter>callback</parameter> doit être une fonction Python. <parameter>client_data</parameter> représente toute donnée que vous voudriez passer à la fonction de rappel. Comme il est possible qu'il y ait plus d'un paquet dans l'ensemble de transaction, ces données ne doivent pas se rapporter à un paquet en particulier.

note: Tag: para
en: Warning
fr: Avertissement

note: Tag: para
en: You must not pass None as the client_data or you will get a Python error.
fr: Vous ne pouvez pas passer <literal>None</literal> en tant que <parameter>client_data</parameter>. Vous déclencheriez une erreur Python.

note: Tag: title
en: Transaction run Method Callbacks
fr: Fonction de rappel de la méthode <function>run</function> pour transaction

note: Tag: para
en: The callback you pass to the run method on a transaction set is essential. Your callback must work properly, or the transaction will fail. You must provide a callback.
fr: La fonction de rappel que vous passer à la méthode <function>run</function> sur un ensemble de transaction est essentielle. La fonction de rappel doit fonctionner proprement ; à défaut, la transaction échouera. Il est impératif de la fournir.

note: Tag: para
en: Your callback will get called a number of times, mostly as a means to report progress. If you are writing a graphical user interface, for example, you can use the progress callbacks to update a visual progress meter.
fr: La fonction de rappel sera appelée un certain nombre de fois, la plupart du temps pour rendre compte de l'avancement. Si vous écrivez une interface utilisateur graphique, par exemple, vous pouvez utiliser des fonctions de rappel d'avancement pour mettre à jour un indicateur visuel de progrès.

note: Tag: para
en: The basic syntax for the transaction set run callback is:
fr: La syntaxe de base pour la fonction de rappel de <function>run</function> pour un ensemble de progression est :

note: Tag: para
en: # Do your stuff...
fr: # Faire votre travail

note: Tag: para
en: The key is the data you provided in the call to the addInstall method. The client_data is the data you passed to the run method.
fr: <parameter>key</parameter> représente les données fournies lors de l'appel à la méthode <function>addInstall</function>. <parameter>client_data</parameter> est la donnée passée à la méthode <function>run</function>.

note: Tag: para
en: Each time your callback is called, the transaction set will provide a reason flag. Table 17-5 lists the values for the reason parameter.
fr: Chaque fois que votre fonction de rappel est appelée, l'ensemble de transaction fournira un marqueur pour <parameter>reason</parameter>. Le tableau 17-5 liste les valeurs possible de ce paramètre.

note: Tag: para
en: Table 17-5 Transaction set run callback reason values
fr: Tableau 17-5 : valeurs de <parameter>reason</parameter> pour la fonction de rappel <function>run</function> d'un ensemble de transaction

note: Tag: para
en: Value
fr: Valeur

note: Tag: para
en: Reason
fr: Raison

note: Tag: para
en: Unknown problem
fr: Problème non répertorié

note: Tag: para
en: Progress for installation
fr: Progression de l'installation

note: Tag: para
en: Start of installation
fr: Début d'installation

note: Tag: para
en: Callback should open package file
fr: La fonction de rappel doit ouvrir le fichier paquet

note: Tag: para
en: Callback should close package file
fr: La fonction de rappel doit fermer le fichier paquet

note: Tag: para
en: Transaction progress
fr: Progression de la transaction

note: Tag: para
en: Transaction start
fr: Début de transaction

note: Tag: para
en: Transaction stop
fr: Interruption de transaction

note: Tag: para
en: Uninstallation progress
fr: Progression de la désinstallation

note: Tag: para
en: Uninstallation start
fr: Début de désinstallation

note: Tag: para
en: Uninstallation stop
fr: Interruption de la désinstallation

note: Tag: para
en: Repackaging progress
fr: Progression du ré-empaquetage

note: Tag: para
en: Repackaging start
fr: Début de ré-empaquetage

note: Tag: para
en: Repackaging stop
fr: Interruption du ré-empaquetage

note: Tag: para
en: Error unpacking package file
fr: Erreur lors du dépaquetage du fichier paquet

note: Tag: para
en: cpio error getting package payload
fr: Erreur de <function>cpio</function> pour obtenir le chargement utile du paquet

note: Tag: para
en: Your callback must handle at least two cases: a reason value of rpm.RPMCALLBACK_INST_OPEN_FILE and rpm.RPMCALLBACK_INST_CLOSE_FILE.
fr: La fonction de rappel doit prendre en charge au moins deux cas : <parameter>reason</parameter> égal à rpm.RPMCALLBACK_INST_OPEN_FILE ou rpm.RPMCALLBACK_INST_CLOSE_FILE.

note: Tag: para
en: With the reason of rpm.RPMCALLBACK_INST_OPEN_FILE, you must open the RPM package file and return a file descriptor for the file. You need to keep this file descriptor in a global-scope or otherwise-accessible variable, because with the reason of rpm.RPMCALLBACK_INST_CLOSE_FILE, you must close this file.
fr: Pour <parameter>reason</parameter> égal à rpm.RPMCALLBACK_INST_OPEN_FILE, il faut ouvrir le fichier paquet RPM et renvoyer le descripteur pour ce fichier. Il est nécessaire de donner à ce descripteur une portée globale ou d'en faire une variable constamment accessible, étant donné qu'avec <parameter>reason</parameter> égal à rpm.RPMCALLBACK_INST_CLOSE_FILE, vous en aurez besoin pour fermer le fichier.

note: Tag: title
en: Coding A Sample Callback
fr: Codage d'un exemple de fonction de rappel

note: Tag: para
en: The following code shows a valid sample callback for upgrading and installing packages.
fr: Le code suivant décrit un exemple de fonction de rappel valide pour mettre à jour et installer des paquets.

note: Tag: para
en: # Global file descriptor for the callback.
fr: # Descripteur de fichier à portée globale pour la fonction de rappel

note: Tag: para
en: print "Opening file. ", reason, amount, total, key, client_data
fr: print "Ouverture du fichier. ", reason, amount, total, key, client_data

note: Tag: para
en: print "Closing file. ", reason, amount, total, key, client_data
fr: print "Fermeture du fichier. ", reason, amount, total, key, client_data

note: Tag: para
en: This callback assumes that the call to addInstall passed client data of the package file name. This callback ignores the client_data passed to the run method, but this is a perfect slot for passing an object. You can use this, for example, to avoid having a global variable for the file descriptor.
fr: Cette fonction de rappel suppose que l'appel à <function>addInstall</function> a passé comme <parameter>client_data</parameter> le nom du fichier paquet. Cette fonction de rappel ignore la valeur <parameter>client_data</parameter> passée à la méthode <function>run</function>, mais c'est un emplacement idéal pour passer un objet. Vous pouvez l'utiliser, par exemple, pour éviter d'avoir une variable globale pour le descripteur de fichier.

note: Tag: title
en: Upgrading A Package
fr: Mettre à jour un paquet

note: Tag: para
en: Listing 17-7 shows a simple Python script to upgrade or install a package.
fr: Le listage 17-7 décrit un simple script Python pour mettre à jour ou installer un paquet.

note: Tag: para
en: Listing 17-7: rpmupgrade.py
fr: Listage 17-7 : <filename>rpmupgrade.py</filename>

note: Tag: para
en: # Upgrades packages passed on the command line.
fr: # Met à jour les paquets passés en ligne de commande.

note: Tag: para
en: print "Upgrading %s-%s-%s" % (h['name'], h['version'], h['release'])
fr: print "Mise à jour de %s-%s-%s" % (h['name'], h['version'], h['release'])

note: Tag: para
en: print "This upgrade will install:"
fr: print "La mise à jour installera :"

note: Tag: para
en: print "Running transaction (final step)..."
fr: print "Exécution de la transaction (étape finale)..."

note: Tag: para
en: print "Error: Unresolved dependencies, transaction failed."
fr: print "Erreur: dépendances non résolues, échec de la transaction."

note: Tag: para
en: This script expects the name of an RPM package file on the command line, and attempts to upgrade the package. (This will also install new packages.)
fr: Ce script attend le nom d'un fichier paquet RPM en ligne de commande et tente de mettre à jour le paquet (ou d'installer un nouveau paquet).

note: Tag: para
en: When you run the rpmupgrade.py script, you should see output like the following:
fr: Quand vous lancez le script <filename>rpmupgrade.py</filename>, s'affiche une sortie semblable à ce qui suit :

note: Tag: para
en: # rpm -q jikes
fr: <prompt>#</prompt> <userinput>rpm -q jikes</userinput>

note: Tag: para
en: # python rpmupgrade.py jikes-1.18-1.i386.rpm
fr: <prompt>#</prompt> <userinput>python rpmupgrade.py jikes-1.18-1.i386.rpm</userinput>

note: Tag: para
en: Upgrading jikes-1.18-1
fr: Mise à jour de jikes-1.18-1

note: Tag: para
en: This upgrade will install:
fr: La mise à jour installera :

note: Tag: para
en: Running transaction (final step)...
fr: Exécution de la transaction (étape finale)...

note: Tag: para
en: Opening file. 4 0 0 jikes-1.18-1.i386.rpm 1
fr: Ouverture du fichier. 4 0 0 jikes-1.18-1.i386.rpm 1

note: Tag: para
en: Closing file. 2 0 2854204 jikes-1.18-1.i386.rpm 1
fr: Fermeture du fichier. 2 0 2854204 jikes-1.18-1.i386.rpm 1

note: Tag: para
en: This example shows that the package was upgraded after running the rpmupgrade.py script. Note that with an upgrade, the original package, jikes-1.17-1 in this case, is also added to the transaction set. With an install, this is not the case. That’s because the original package is removed as part of the transaction.
fr: Cet exemple montre le cas d'une mise à jour de paquet après lancement du script <filename>rpmupgrade.py</filename>. Notez que, dans ce cas de mise à jour, le paquet original, jikes-1.17-1, est aussi ajouté à l'ensemble de transaction, étant donné que ce paquet original est enlevé au cours de la transaction. Dans le cas d'une installation, ce ne serait pas le cas.

note: Tag: para
en: If you run this script as a non-root user, you will likely see an error like the following:
fr: Si vous lancez ce script en tant qu'utilisateur normal, vous obtiendrez vraisemblablement le message d'erreur suivant :

note: Tag: para
en: $ python rpmupgrade.py jikes-1.18-1.i386.rpm
fr: <prompt>$</prompt> <userinput>python rpmupgrade.py jikes-1.18-1.i386.rpm</userinput>

note: Tag: para
en: If a package has a dependency on a file such as a shared library, you will see output like the following:
fr: Si le paquet est en dépendance d'un fichier tel qu'une bibliothèque partagée, vous verrez une sortie du type :

note: Tag: para
en: # python rpmupgrade.py jikes-1.17-glibc2.2-1.i386.rpm jpilot-0_97-1_i386.rpm
fr: <prompt>#</prompt> <userinput>python rpmupgrade.py jikes-1.17-glibc2.2-1.i386.rpm jpilot-0_97-1_i386.rpm</userinput>

note: Tag: para
en: Upgrading jikes-1.17-1
fr: Mise à jour de jikes-1.17-1

note: Tag: para
en: Upgrading jpilot-0.97-1
fr: Mise à jour de jpilot-0.97-1

note: Tag: para
en: Must find file [ libpisock.so.3 ]
fr: Fichier à trouver [ libpisock.so.3 ]

note: Tag: para
en: Error: Unresolved dependencies, transaction failed.
fr: Erreur: dépendances non résolues, échec de la transaction.

note: Tag: para
en: If a package has a dependency on another package, you will see output like the following:
fr: Si un paquet dépend d'un autre paquet, vous verrez une sortie comme suit :

note: Tag: para
en: # python rpmupgrade.py eruby-devel-0.9.8-2.i386.rpm
fr: <prompt>#</prompt> <filename>python rpmupgrade.py eruby-devel-0.9.8-2.i386.rpm</filename>

note: Tag: para
en: Upgrading eruby-devel-0.9.8-2
fr: Mise à jour de eruby-devel-0.9.8-2

note: Tag: para
en: Must find package [ eruby-libs - 0.9.8 ]
fr: Paquet à trouver [ eruby-libs - 0.9.8 ]

note: Tag: title
en: Where to Go from Here
fr: De là, où aller ?

note: Tag: para
en: The RPM bindings for Python are documented along with the C programming API. On a Red Hat Linux system, look in the file /usr/share/doc/rpm-devel-4.1/apidocs/html/group__python.html to see the start of the Python-specific documentation.
fr: Les liens RPM-Python sont documentés avec l'API de programmation <literal>C</literal>. Sur un système Linux Red Hat, regardez dans le fichier <filename>/usr/share/doc/rpm-devel-4.1/apidocs/html/group__python.html</filename> pour un début de documentation spécifique au Python.

note: Tag: para
en: Note that much of this online documentation covers the C functions that provide the Python bindings, not the Python API itself. But, if you examine the online information on objects listed as classes, such as rpmts, you can find the Python-specific documentation.
fr: Notez que la majeure partie de cette documentation en ligne porte sur les fonctions <literal>C</literal> en liaison avec le Python, et non sur l'API Python elle-même. Mais si vous regardez l'information en ligne à propos des objets listés en tant que classes, comme <classname>rpmts</classname>, vous trouverez une documentation spécifique au Python.

note: Tag: para
en: Furthermore, if you look into the .c files that make up the Python bindings, you can find PyMethodDef structure tables. These tables provide useful glimpses into the Python API.
fr: Plus, si vous examinez les fichiers <filename>.c</filename> qui constituent les liaisons avec le Python, vous trouverez des tableaux de structures <classname>PyMethodDef</classname>. Ces tableaux donnent une vue utile dans l'API Python.

note: Tag: para
en: To learn more about programming in Python, install the python-docs package. The python-docs package has a large set of online documentation for Python, including the official Python Tutorial. With Red Hat Linux, start at /usr/share/doc/python-docs-2.2.1/html/tut/tut.html.
fr: Pour en apprendre plus au sujet de la programmation en Python, installez le paquet <package>python-docs</package>. Vous trouverez là un grand ensemble de documentation en ligne pour le Python, y compris le tutoriel officiel. Avec Linux Red Hat, débutez à la page <filename>/usr/share/doc/python-docs-2.2.1/html/tut/tut.html</filename>.

note: Tag: para
en: Other tutorials are available at http://diveintopython.org for the Dive Into Python tutorial for experienced programmers, and at http://py.vaults.ca/parnassus/apyllo.py/935043691.636055170 for the Vaults of Parnassus listing of tutorials.
fr: Le tutoriel <ulink url="http://www.diveintopython.net" ><citetitle>Dive Into Python</citetitle></ulink> s'adresse aux programmeurs expérimentés. Vous trouverez <ulink url="http://wiki.python.org/moin/VaultsOfParnassus" ><citetitle>à cette adresse</citetitle></ulink> un renvoi vers la liste des tutoriels <emphasis>Vaults of Parnassus</emphasis>.

note: Tag: title
en: Summary
fr: Résumé

note: Tag: para
en: This chapter introduces the high-level RPM API for Python programming. You can use this API from Python scripts to perform RPM functionality, just as you can write C programs using the RPM C API covered in <xref linkend="ch-programming-c" /> .
fr: Ce chapitre introduit l'API de haut niveau pour RPM avec programmation en Python. Vous utiliserez cette API pour créer des scripts Python activant des fonctionnalités RPM, tout comme vous pouvez écrire des programmes <literal>C</literal> avec l'API <literal>C</literal> RPM dont il a été question au <xref linkend="ch-programming-c" />.

note: Tag: para
en: In general, the Python API is simpler and requires fewer code statements than the corresponding functionality in the C API.
fr: En général, l'API Python est plus simple et nécessite moins de lignes de code que n'en nécessitent les fonctionnalités correspondantes de l'API en <literal>C</literal>.

note: Tag: para
en: Just about all of your work with the Python API requires a transaction set, which you can get by calling rpm.TransactionSet.
fr: Pratiquement tous vos travaux avec l'API Python nécessitent un ensemble de transaction que vous obtenez par un appel à <function>rpm.TransactionSet</function>.

note: Tag: para
en: To query the RPM database, call dbMatch on the transaction set object. To install or upgrade packages, call addInstall, check, order, and run on the transaction set.
fr: Pour questionner la base de données RPM, appelez <function>dbMatch</function> sur l'objet ensemble de transaction. Pour installer ou mettre à jour des paquets, faites appel à <function>addInstall</function>, <function>check</function>, <function>order</function> et <function>run</function> sur l'ensemble de transaction.

note: Tag: para
en: The next chapter switches to another language for accessing the RPM system: Perl. With the rich set of APIs, you can write your RPM programs in C, Python, Perl, or any language that can call on code written in one of these languages.
fr: Le chapitre suivant bascule sur un autre langage pour accéder au système RPM : le Perl. Avec ce riche ensemble d'API, vous pouvez écrire vos programmes RPM en <literal>C</literal>, Python, Perl ou tout autre langage pouvant appeler du code écrit dans un de ces langages.
