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

note: Tag: title
en: Programming RPM with Perl
fr: Programmation RPM avec le Perl

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

note: Tag: para
en: Using the RPM2 module to access information on package files
fr: l'utilisation du module RPM2 pour avoir accès à l'information sur les fichiers paquets

note: Tag: para
en: Querying the RPM database from Perl
fr: le questionnement de la base de données RPM avec le Perl

note: Tag: para
en: Cross-referencing capabilities by the packages that provide and require capabilities
fr: le référencement croisé des fonctionnalités par les paquets qui les fournissent et les requièrent

note: Tag: para
en: Extracting information on packages
fr: l'extraction de l'information des paquets

note: Tag: para
en: Perl is one of the most popular scripting languages. Used by system administrators, software developers, and a host of other users, Perl runs on many operating systems including Linux, UNIX, and Windows. Perl stands for Practical Extraction and Report Language, or sometimes Pathologically Eclectic Rubbish Lister.
fr: Le Perl est l'un des langages de script les plus populaires. Employé par les administrateurs système, les développeurs logiciels et une foule d'autres utilisateurs, le Perl tourne sur beaucoup de systèmes d'exploitation comprenant Linux, UNIX ou Windows. L'acronyme Perl vient de <emphasis>Practical Extraction and Report Language</emphasis> (Langage pratique d'extraction [d'informations] et [de génération] de rapport) ou bien, quelquefois, <emphasis>Pathologically Eclectic Rubbish Lister</emphasis> (Énumérateur d'âneries éclectiques pathologiquement)

note: Tag: para
en: In the same vein, LISP stands for Lots of Irritating Single Parenthesis and COBOL for Completely Obnoxious Business Oriented Language.
fr: Dans la même veine, LISP viendrait de <emphasis>Lots of Irritating Single Parenthesis</emphasis> (Forêt de simples parenthèses irritantes) et COBOL de <emphasis>Completely Obnoxious Business Oriented Language</emphasis> (Langage orienté boulot totalement détestable).

note: Tag: para
en: I began my book Cross-Platform Perl (John Wiley &amp; Sons, 2000) by mentioning that when I first started learning Perl, I thought it was an evil plot. I still do. But it is a very practical evil plot. You can get a lot of work done with Perl, and quickly.
fr: J'ai débuté mon livre <emphasis>Cross-Platform Perl</emphasis> (John Wiley &amp; Sons, 2000) en écrivant que, lorsque j'ai commencé à apprendre le Perl, le pensais qu'il était un complot de diable. Je continue à le penser. Mais c'est un complot de diable vraiment pratique. Vous pouvez faire un tas de choses avec le Perl, et rapidement.

note: Tag: para
en: Because of a long history of text processing, Perl is especially popular among system administrators. Perl also supports add-on packages, called modules. You can find thousands of add-on modules for text processing, networking, and a plethora of other tasks. There are so many modules available that some people who don’t like the Perl syntax script with Perl anyway, because the available modules save a lot of time.
fr: À cause de sa longue histoire de traitement de texte, Perl est particulièrement populaire parmi les administrateurs système. Le Perl prend aussi en charge des paquets d'ajouts fonctionnels, nommés modules. Vous trouverez des milliers de modules additionnels pour le traitement de texte, le travail en réseau et des tas d'autres tâches. Il y a tellement de modules disponibles que certains, qui détestent la syntaxe du Perl, écrivent quand même des scripts en Perl parce que les modules disponibles font gagner beaucoup de temps.

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

note: Tag: para
en: See search.cpan.org, the Comprehensive Perl Archive Network, for a listing of many Perl modules.
fr: Voyez <ulink url="http://search.cpan.org" ><citetitle>Comprehensive Perl Archive Network</citetitle></ulink> pour une liste de nombreux modules Perl.

note: Tag: para
en: This chapter covers working with RPM files and the RPM database using Perl. You can combine RPM usage with other Perl usage, such as generating HTML files or downloading RPMs over a network link.
fr: Ce chapitre porte sur l'utilisation du Perl avec des fichiers RPM et la base de données RPM. Vous pouvez combiner l'utilisation de RPM avec toute autre usage du Perl, comme la génération de fichiers HTML ou le téléchargement de RPM avec un lien réseau.

note: Tag: para
en: Many of the RPM tools covered in <xref linkend="ch-management-software" /> are written in Perl.
fr: Beaucoup d'outils RPM décrits au <xref linkend="ch-management-software" /> sont écrits en Perl.

note: Tag: title
en: Getting and Using the Perl RPM Modules
fr: Obtenir et utiliser les modules Perl RPM

note: Tag: para
en: A number of Perl RPM modules are available. No one module provides all the features you need, although with time, the Perl modules will consolidate into a few modules that most everyone uses. As of this writing, the RPM2 module, by Chip Turner of Red Hat, provides the most recent approach to working with the RPM system from Perl. This chapter covers the RPM2 module.
fr: Il y a de nombreux modules Perl disponibles. Aucun ne fournit toutes les fonctionnalités que vous souhaitez, cependant, avec le temps, quelques modules Perl rassemblent la quasi totalité dont chacun se sert. Issu de ces écritures, le module RPM2, par Chip Turner de Red Hat, fournit l'approche la plus récente pour travailler sur le système RPM avec le Perl. Ce chapitre est consacré au module RMP2.

note: Tag: para
en: Red Hat Linux 8.0 comes with a perl-RPM2 package, which you need to install to use this module. Otherwise, you can download the module from www.cpan.org. Install this module, as well as the perl module, which provides the Perl language interpreter. Once you have this module installed and the perl package installed, you are ready to go.
fr: Linux Red Hat 8.0 est livré avec un paquet <package>perl-RPM2</package>, que vous devez installer pour utiliser le module. Autrement, vous pouvez le télécharger à l'adresse <ulink url="http://www.cpan.org" />. Installez le module, de même que le module <package>perl</package>, qui fournit l'interpréteur du langage Perl. Une fois installés ce module et le paquet <package>perl</package>, vous êtes fin prêt.

note: Tag: para
en: The version of the perl-RPM2 package that ships with Red Hat Linux 8.0 has a bug in that it will not open package files that were created with the version of rpm that ships with Red Hat Linux 8.0. That is, the Perl module cannot read package files that ship with Red Hat Linux. You can read older package files, though. This problem only affects attempts to read .rpm files, not installed packages. The bug is related to reading signed packages but not having the GPG keys in the keyring. The latest version on search.cpan.org fixes this problem.
fr: La version du paquet <package>perl-RPM2</package> livré avec Linux Red Hat 8.0 comporte une anomalie dans le fait qu'il ne peut pas ouvrir les fichiers paquets créés avec la version de RPM accompagnant Linux Red Hat 8.0. Autrement dit, le module Perl ne peut pas lire les fichiers paquets accompagnant Linux Red Hat. Vous pouvez toutefois lire les paquets plus anciens. Ce problème n'affecte que les tentatives de lecture des fichiers <filename>.rpm</filename>, et non les paquets installés. Cette anomalie est en relation avec la lecture de paquets signés qui n'ont pas les clés GPG dans le trousseau. Ce problème est corrigé avec la dernière version sur <ulink url="http://search.cpan.org" />.

note: Tag: para
en: The RPM2 module contains Perl methods to work on two types of RPM objects: RPM files and installed packages.
fr: Le module RPM2 contient les méthodes Perl pour travailler sur deux types d'objets RPM : les fichiers RPM et les paquets installés.

note: Tag: title
en: Working with RPM Files
fr: Travailler avec les fichiers RPM

note: Tag: para
en: The RPM2 module provides a top-level object, RPM2, that acts as an entry point into the module. From the RPM2 object, you either open the RPM database, covered in the "Programming with the RPM Database" section, or open an RPM package file, covered here.
fr: Le module RPM2 fournit un objet de haut-niveau, RPM2, point d'entrée dans le module. À partir de l'objet RPM2, soit vous ouvrez la base de données RPM, sujet traité dans le paragraphe <emphasis>Programmer avec la base de données RPM</emphasis>, soit vous ouvrez un fichier paquet RPM, sujet du présent paragraphe.

note: Tag: para
en: The first step in working with an RPM file is to open the file inside a Perl script.
fr: La première étape du travail avec un fichier RPM consiste à l'ouvrir avec un script Perl.

note: Tag: title
en: Opening package files
fr: Ouvrir des fichiers paquets

note: Tag: para
en: The open_package subroutine opens an RPM package file and returns a header object (an RPM2::Header). The basic syntax follows:
fr: La routine <function>open_package</function> ouvre un fichier paquet RPM et renvoie un objet en-tête (un <classname>RPM2::Header</classname>). La syntaxe de base est la suivante :

note: Tag: para
en: For example:
fr: Par exemple :

note: Tag: para
en: After you’ve opened a package, you can perform a number of query operations on the header object returned by the open_package subroutine.
fr: Après avoir ouvert un paquet, vous pouvez réaliser un certain nombre de requêtes sur l'objet <classname>header</classname> renvoyé par la routine <function>open_package</function>.

note: Tag: title
en: Listing tags from the package
fr: Lister les marqueurs du paquet

note: Tag: para
en: Each RPM package has information stored under a variety of tags, such as the package name under the NAME tag and the package long description under the DESCRIPTION tag.
fr: Chaque paquet RPM a son information stockée sous divers marqueurs ; ainsi, le nom du paquet est relié au marqueur NAME et la description longue du paquet au marqueur DESCRIPTION.

note: Tag: para
en: These are the same tags introduced with the --queryformat option to the rpm command discussed in <xref linkend="ch-using-rpm-db" /> .
fr: Ces marqueurs sont les mêmes que ceux explicités pour l'option <option>--queryformat</option> de la commande <command>rpm</command> au <xref linkend="ch-using-rpm-db" />.

note: Tag: para
en: The tag subroutine returns the value of a given tag. For example, to get the name of the package, use the NAME tag:
fr: La routine <function>tag</function> renvoie la valeur du marqueur indiqué. Par exemple, pour obtenir le nom du paquet, utilisez le marqueur NAME :

note: Tag: para
en: Pulling this together, Listing 18-1 shows example script that lists the name and one-line short summary of a package file.
fr: En mettant tout cela ensemble, le listage 18-1 décrit un exemple de script qui liste le nom et un court résumé sur un ligne pour un fichier paquet.

note: Tag: para
en: Listing 18-1: rpmsum.pl
fr: Listage 18-1 : <filename>rpmsum.pl</filename>

note: Tag: para
en: # Lists summary from an RPM package file
fr: # Liste un résumé à propos d'un fichier paquet

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

note: Tag: para
en: Enter this script and name the file rpmsum.pl.
fr: Saisissez ce script et appelez le fichier <filename>rpmsum.pl</filename>.

note: Tag: para
en: When you run this script, you need to pass the name of a package file on the command line. For example:
fr: Quand vous le lancez, passez le nom d'un fichier paquet en ligne de commande. Comme ceci :

note: Tag: para
en: $ ./rpmsum.pl jikes-1.14-1-glibc-2.2.i386.rpm
fr: <prompt>$</prompt> <userinput>./rpmsum.pl jikes-1.14-1-glibc-2.2.i386.rpm</userinput>

note: Tag: title
en: Convenience methods
fr: Méthodes pratiques

note: Tag: para
en: The RPM2 module includes convenience methods for all RPM tags. This means you can use the method name in place of tag("NAME"). For example:
fr: Le module RPM2 comporte des méthodes pratiques pour tous les marqueurs RPM. Cela signifie que vous pouvez utiliser le nom de la méthode à la place du marqueur (« NAME »). Par exemple :

note: Tag: title
en: Listing the name and version
fr: Lister le nom et la version

note: Tag: para
en: The RPM2 module provides a handy subroutine for getting the NAME, VERSION, RELEASE, and EPOCH tags, often abbreviated as NVRE. The subroutine, as_nvre, returns a single string with these values in the standard format, with the values separated by minus signs.
fr: Le module RPM2 fournit une routine commode pour obtenir les marqueurs NAME, VERSION, RELEASE et EPOCH, souvent condensés en NVRE. La routine, <function>as_nvre</function>, renvoie une simple chaîne avec ces valeurs dans le format standard, séparées par des tirets.

note: Tag: para
en: Usually, the EPOCH tag has no value. If there is an EPOCH value, you will see it output first, and then a colon, and then the name, version, and release values. For example:
fr: Habituellement le marqueur EPOCH n'est pas renseigné. S'il y a une valeur EPOCH, elle est affichée en tête, puis deux-points, puis les valeurs du nom, version et parution. Par exemple :

note: Tag: para
en: In this case, the EPOCH value is 5.
fr: Dans ce cas, la valeur de EPOCH est 5.

note: Tag: para
en: You can call this subroutine on any header object, or any package object to get the full name of the package. For example:
fr: Vous pouvez faire appel à cette routine sur n'importe quel objet <classname>header</classname>, ou n'importe quel objet paquet pour obtenir le nom complet du paquet. Par exemple :

note: Tag: title
en: Checking whether the package is a source package
fr: Vérifier si le paquet est un paquet source

note: Tag: para
en: Another handy subroutine tells you if an RPM file represents a source RPM or a binary RPM. The is_source_package subroutine returns a true value if the package is a source package, and a false value otherwise.
fr: Une autre routine pratique vous indique si un fichier RPM représente un RPM source ou un RPM binaire. La routine <function>is_source_package</function> renvoie la valeur VRAI si le paquet est un paquet source, et FAUX dans un autre cas.

note: Tag: para
en: The rpmpkg.pl script, shown in Listing 18-2, shows how to use the as_nvre and is_source_package subroutines.
fr: Le script <filename>rpmpkg.pl</filename>, décrit dans le listage 18-2, montre comment utiliser les routines <function>as_nvre</function> et <function>is_source_package</function>.

note: Tag: para
en: Listing 18-2: rpmpkg.pl
fr: Listage 18-2 : <filename>rpmpkg.pl</filename>

note: Tag: para
en: # Queries RPM package file and prints
fr: # Questionne un fichier paquet et affiche

note: Tag: para
en: # out name and whether this is a source pkg.
fr: # le nom et s'il s'agit d'un paquet source.

note: Tag: para
en: print "Source package ", $header-&gt;as_nvre(), "\n";
fr: print "Paquet source ", $header-&gt;as_nvre(), "\n";

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

note: Tag: para
en: In addition to providing query routines for RPM files, you can also access the RPM database with the RPM2 package.
fr: Outre les routines pour questionner les fichiers RPM, vous pouvez accéder aussi à la base de données RPM avec le paquet RPM2.

note: Tag: para
en: To access the RPM database, your Perl script must first open the database.
fr: Pour y accéder, votre script Perl doit d'abord l'ouvrir.

note: Tag: title
en: Opening the database
fr: Ouvrir la base de données

note: Tag: para
en: Open the RPM database with a call to open_rpm_db on the RPM2 object. For example:
fr: Ouvrez la base de données RPM avec un appel à <function>open_rpm_db</function> sur un objet RPM2. Par exemple :

note: Tag: para
en: You can also specify the directory where the RPM database resides. This is most useful for accessing a database in a non-standard location. For example:
fr: Vous pouvez aussi indiquer le répertoire dans lequel la base de données se trouve. Ce qui est utile pour avoir accès à une base de données située dans un emplacement non-standard. Par exemple :

note: Tag: para
en: The -path is normally used as a Perl bareword but is shown here as a string.
fr: <parameter>-path</parameter> est normalement utilisé sous forme d'un <literal>bareword</literal> (mot nu : non placé entre guillemets) Perl, mais ici nous l'avons montré sous forme de chaîne littérale.

note: Tag: para
en: Once you have an RPM database object, you can call one of the find subroutines to find packages in most of the same ways as supported by the rpm –q command.
fr: Une fois vous avez un objet base de données RPM, vous pouvez faire appel à une des routines <function>find</function> pour trouver des paquets en opérant pratiquement de la même manière que la commande <command>rpm –q</command>.

note: Tag: title
en: Finding packages
fr: Trouver des paquets

note: Tag: para
en: The find_by_name subroutine finds a package or packages by name. It returns a Perl list of the entries found. For example, if you installed more than one version of a package, find_by_name would return a list of all the packages at the different versions.
fr: La routine <function>find_by_name</function> recherche un ou plusieurs paquets par nom. Elle renvoie une liste Perl des entrées trouvées. Par exemple, si vous avez installé plus d'une version d'un même paquet, <function>find_by_name</function> renvoie une liste de tous les paquets dans leurs diverses versions.

note: Tag: para
en: Similar to find_by_name, find_by_name_iter returns an iterator to iterate over the packages that match the query. The iterator approach is usually more efficient.
fr: Semblable à <function>find_by_name</function>, <function>find_by_name_iter</function> renvoie un itérateur pour parcourir les paquets correspondant au critère de recherche. L'approche avec un itérateur est généralement plus efficace.

note: Tag: title
en: Iterating over packages
fr: Itérer parmi des paquets

note: Tag: para
en: Iterators are important in the RPM2 package because they provide a more efficient interface to potentially large sets of packages, and because iterators more closely match the underlying C API. Furthermore, iterators are very easy to use. Simply call the next subroutine to move ahead to the next element, that is, the next package.
fr: Les itérateurs sont un concept important du paquet RPM2. Ils fournissent une interface plus efficace vers un ensemble potentiellement plus important de paquets. De plus, il sont plus étroitement liés à l'API <literal>C</literal> sous-jacente. En prime, ils sont d'une utilisation très facile. Faites simplement appel à la routine <function>next</function> pour obtenir l'élément suivant, c'est à dire le paquet suivant.

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

note: Tag: para
en: Listing 18-3 shows a script that acts much like the rpm –q command, without any other command-line options.
fr: Le listage 18-3 affiche un script se comportant comme la commande <command>rpm –q</command>, sans autre option en ligne de commande.

note: Tag: para
en: Listing 18-3: rpmname.pl
fr: Listage 18-3 : <filename>rpmname.pl</filename>

note: Tag: para
en: # Queries RPM database for given package.
fr: # Interroge la base de données RPM à propos d'un paquet donné

note: Tag: para
en: my $rpm_db = RPM2-&gt;open_rpm_db( "âˆ’path" =&gt; "/var/lib/rpm" );
fr: my $rpm_db = RPM2-&gt;open_rpm_db( "-path" =&gt; "/var/lib/rpm" );

note: Tag: para
en: When you run this script, you need to pass the name of a package to query. For example:
fr: Quand vous lancez ce script, vous devez passer en paramètre le nom de paquet à interroger. Par exemple :

note: Tag: para
en: $ ./rpmname.pl kernel
fr: <prompt>$</prompt> <userinput>./rpmname.pl kernel</userinput>

note: Tag: title
en: Additional query subroutines
fr: Routines de requêtes supplémentaires

note: Tag: para
en: The find_by_name_iter subroutine finds a package by its name. The RPM2 module also supports a number of other query routines, listed in Table 18-1.
fr: La routine <function>find_by_name_iter</function> permet de trouver un paquet par son nom. Mais le module RPM2 dispose d'un certain nombre d'autres routines de requêtes, listées dans le tableau 18-1.

note: Tag: para
en: Table 18-1 RPM2 module query routines
fr: Tableau 18-1 : routines pour requêtes du module RPM2

note: Tag: para
en: Usage
fr: Utilisation

note: Tag: para
en: Returns a list with all the packages in the database
fr: Renvoie la liste de tous les paquets dans la base de données

note: Tag: para
en: Returns an iterator over all the packages in the database
fr: Renvoie un itérateur sur tous les paquets de la base de données

note: Tag: para
en: Finds all packages that own the given file, returning a list
fr: Retrouve tous les paquets possédant le fichier donné, renvoie une liste

note: Tag: para
en: Finds all packages that own the given file, returning an iterator
fr: Retrouve tous les paquets possédant le fichier donné, renvoie un itérateur

note: Tag: para
en: Finds all packages with the given name, returning a list
fr: Recherche tous les paquets avec le nom donné, renvoie une liste

note: Tag: para
en: Finds all packages with the given name, returning an iterator
fr: Recherche tous les paquets avec le nom donné, renvoie un itérateur

note: Tag: para
en: Finds all packages that provide the given capability, returning a list
fr: Recherche tous les paquets fournissant la fonctionnalité donnée, renvoie une liste

note: Tag: para
en: Finds all packages that provide the given capability, returning an iterator
fr: Recherche tous les paquets fournissant la fonctionnalité donnée, renvoie un itérateur

note: Tag: para
en: Finds all packages that require the given capability, returning a list
fr: Recherche tous les paquets nécessitant la fonctionnalité donnée, renvoie une liste

note: Tag: para
en: Finds all packages that require the given capability, returning an iterator
fr: Recherche tous les paquets nécessitant la fonctionnalité donnée, renvoie un itérateur

note: Tag: para
en: To verify the find routines, you can try the following script and compare the results with the rpm command. Listing 18-4 shows the script that finds what package provides a capability and also which packages require the capability.
fr: Pour vérifier les routine <function>find</function>, vous pouvez essayer le script suivant et comparer les résultats avec la commande <command>rpm</command>. Le listage 18-4 décrit le script trouvant un paquet fournissant une fonctionnalité donnée ainsi que les paquets requérant ladite fonctionnalité.

note: Tag: para
en: Listing 18-4: rpmprovides.pl
fr: Listage 18-4 : <filename>rpmprovides.pl</filename>

note: Tag: para
en: # Queries RPM database for given package,
fr: # Interroge la base de données RPM à propos d'un paquet donné

note: Tag: para
en: # listing what it provides and what other
fr: # en listant ce qu'il fournit et désigne les

note: Tag: para
en: # packages require the capability.
fr: # autres paquets nécessitant la fonctionnalité

note: Tag: para
en: print "Provides: ", $ARGV[0], "\n";
fr: print "Fournit : ", $ARGV[0], "\n";

note: Tag: para
en: # Now, what packages require this capability.
fr: # Maintenant, quels paquets nécessitent cette fonctionnalité

note: Tag: para
en: print "Requires: ", $ARGV[0], "\n";
fr: print "Nécessite : ", $ARGV[0], "\n";

note: Tag: para
en: When you run this script with the name of a capability, you'll see output like the following:
fr: Quand vous lancez ce script avec le nom d'un fonctionnalité, vous obtenez une sortie de ce type :

note: Tag: para
en: $ ./rpmprovides.pl httpd
fr: <prompt>$</prompt> <userinput>./rpmprovides.pl httpd</userinput>

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

note: Tag: para
en: Requires: httpd
fr: Nécessite : httpd

note: Tag: para
en: The 5: in 5:redhat-config-httpd-1.0.1-13 and 1: in 1:mod_ssl-2.0.40-8 represent the EPOCH tag value.
fr: Le <literal>5:</literal> dans <computeroutput>5:redhat-config-httpd-1.0.1-13</computeroutput> et le <literal>1:</literal> dans <computeroutput>1:mod_ssl-2.0.40-8</computeroutput> représentent la valeur du marqueur EPOCH.

note: Tag: para
en: To verify this script, run the rpm -q command to see if you get the same packages listed. For example:
fr: Pour vérifier ce script, lancez la commande <command>rpm -q</command> pour voir si vous obtenez la même liste de paquets. Par exemple :

note: Tag: para
en: $ rpm -q --whatprovides httpd
fr: <prompt>$</prompt> <userinput>rpm -q --whatprovides httpd</userinput>

note: Tag: para
en: $ rpm -q --whatrequires httpd
fr: <prompt>$</prompt> <userinput>rpm -q --whatrequires httpd</userinput>

note: Tag: para
en: In both cases, you see the same packages listed. You can use this technique to verify your scripts.
fr: Il s'agit bien de la même liste de paquets dans les deux cas. Vous pouvez utiliser cette technique pour vérifier vos scripts.

note: Tag: para
en: The find_by_provides_iter subroutine requires the name of a package, such as bash. You cannot pass a file name, such as /bin/bash, to get the name of the package that provides this capability (a file, really).
fr: La routine <function>find_by_provides_iter</function> requiert le nom d'un paquet, tel que <package>bash</package>. Vous ne pouvez pas passer un nom de fichier, comme <filename>/bin/bash</filename>, pour obtenir le nom du paquet qui fournit cette fonctionnalité (un fichier, en réalité).

note: Tag: title
en: Getting information on packages
fr: Obtenir des informations sur les paquets

note: Tag: para
en: The tag, as_nvre, and is_source_package subroutines that worked on header objects read from RPM files, shown previously, also work with package entries returned from the RPM database.
fr: Les routines sur marqueurs comme <function>as_nvre</function> et <function>is_source_package</function>, opérant sur les objets <classname>header</classname> lus dans les fichiers RPM et précédemment explicitées, fonctionnent aussi avec les entrées de paquets renvoyées à partir de la base de données RPM.

note: Tag: para
en: For example, Listing 18-5 shows a script, rpminfo.pl, that prints out descriptive information about a given package.
fr: À titre d'exemple, le listage 18-5 décrit un script, <filename>rpminfo.pl</filename>, qui affiche une information descriptive à propos d'un paquet donné.

note: Tag: para
en: Listing 18-5: rpminfo.pl
fr: Listage 18-5 : <filename>rpminfo.pl</filename>

note: Tag: para
en: # Queries RPM database for given package and prints info.
fr: # Interroge la base de données RPM à propos d'un paquet donné et affiche l'info.

note: Tag: para
en: # Prints info on one package.
fr: # Affiche l'info concernant un paquet

note: Tag: para
en: print "Group: ", $pkg-&gt;tag("GROUP"), "\n";
fr: print "Groupe : ", $pkg-&gt;tag("GROUP"), "\n";

note: Tag: para
en: print "Vendor: ", $pkg-&gt;tag("VENDOR"), ", ", $pkg-&gt;tag("URL"), "\n";
fr: print "Distrib. : ", $pkg-&gt;tag("VENDOR"), ", ", $pkg-&gt;tag("URL"), "\n";

note: Tag: para
en: print "Size: ", $pkg-&gt;tag("SIZE"), "\n";
fr: print "Taille : ", $pkg-&gt;tag("SIZE"), "\n";

note: Tag: para
en: When you run this script, you’ll see output like the following:
fr: Si vous lancez ce script vous obtiendrez la sortie suivante :

note: Tag: para
en: $ ./rpminfo.pl XFree86
fr: <prompt>$</prompt> <userinput>./rpminfo.pl XFree86</userinput>

note: Tag: para
en: Group: User Interface/X
fr: Groupe : User Interface/X

note: Tag: para
en: Vendor: Red Hat, Inc., http://www.xfree86.org
fr: Distrib. : Red Hat, Inc., http://www.xfree86.org

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

note: Tag: title
en: Listing the Installed Date
fr: Lister les dates d'installation

note: Tag: para
en: The installed date is a number value representing the number of seconds since the start of the UNIX epoch, January 1, 1970, which predates the start of the Linux epoch by about 20 years. So, when you get the value of the INSTALLTIME tag, you’ll see a meaningless number.
fr: La date d'installation est une valeur numérique représentant le nombre de secondes écoulées depuis le début de l'ère UNIX, le 1er Janvier 1970, ce qui anticipe la naissance de Linux d'à-peu-près 20 ans. Donc, quand vous extrayez la valeur du marqueur INSTALLTIME, vous obtenez un nombre sans signification immédiate.

note: Tag: para
en: To make sense of this number, pass the value to the Perl localtime function. Listing 18-6 shows an example of this.
fr: Pour donner un sens à cette valeur, passez-la à la fonction Perl <function>localtime</function>. Le listage 18-6 montre un exemple.

note: Tag: para
en: Listing 18-6: rpmdate.pl
fr: Listage 18-6 : <filename>rpmdate.pl</filename>

note: Tag: para
en: # prints out name, vendor, and date installed.
fr: # affiche nom, distributeur et date d'installation.

note: Tag: para
en: # Prints installation data for one package.
fr: # Affiche la date d'installation pour un paquet

note: Tag: para
en: The printf function in this script can do something the rpm command cannot do. Even with the --queryformat option, you cannot group multiple items and then set the size; with Perl, you can. Simply assign the multiple values to a string, or use the handy as_nvre subroutine, which gathers up to four tags together into one string.
fr: La fonction <function>printf</function> de ce script peut faire quelque chose que la commande <command>rpm</command> ne peut pas faire. Même avec l'option <option>--queryformat</option>, vous ne pouvez pas grouper plusieurs éléments, puis définir la taille ; avec le Perl, vous pouvez. Placez simplement les multiples valeurs dans un chaîne, ou bien utilisez la routine pratique <function>as_nvre</function>, qui regroupe jusqu'à quatre marqueurs ensemble dans une chaîne.

note: Tag: para
en: When you pass the name of a package to this script, you’ll see the date the package was installed. For example:
fr: Quand vous passez le nom d'un paquet à ce script, la date d'installation du paquet s'affiche. Par exemple :

note: Tag: para
en: $ ./rpmdate.pl kernel
fr: <prompt>$</prompt> <userinput>./rpmdate.pl kernel</userinput>

note: Tag: title
en: Handling String Array Tags
fr: Gérer les tables de chaînes littérales

note: Tag: para
en: Not only is the date stored in a format that adds complication to your script. A number of tags are string arrays, not scalar strings. This means you may see output that is all mashed together.
fr: Il n'y a pas que la date qui soit stockée dans un format générateur de complications pour les scripts. Un certain nombre de marqueurs sont des tables de chaînes littérales, non des chaînes scalaires. Ce qui signifie que vous pouvez avoir des sorties où tout est entremêlé.

note: Tag: para
en: To help deal with this, the following subroutine takes in an array of strings and returns a string that is built using a passed-in delimiter:
fr: Pour résoudre ce problème, la routine suivante prend en entrée une table de chaînes littérales et renvoie une chaîne construite en utilisant un délimiteur passé en paramètre :

note: Tag: para
en: Show your Perl expertise and earn extra points by implementing the arrayToString subroutine as a single Perl statement that uses the join function.
fr: Montrez votre expertise en Perl et gagnez des points supplémentaires en implémentant la routine <function>arrayToString</function> en tant que simple instruction Perl utilisant la fonction <function>join</function>.

note: Tag: para
en: The following list shows the tags that are an array of strings:
fr: Le tableau suivant liste les marqueurs qui sont des tables de chaînes littérales :

note: Tag: para
en: <xref linkend="ch-using-rpm-db" /> covers more on these tags.
fr: Le <xref linkend="ch-using-rpm-db" /> donne plus d'indications à propos de ces marqueurs.

note: Tag: title
en: Listing the Files In A Package
fr: Lister les fichiers dans un paquet

note: Tag: para
en: The files subroutine provides a list of all the files in a package. Listing 18-7 shows how to access this list.
fr: La routine <function>files</function> fournit la liste de tous les fichiers dans un paquet. Le listage 18-7 montre comment établir cette liste.

note: Tag: para
en: Listing 18-7: rpmfiles.pl
fr: Listage 18-7 : <filename>rpmfiles.pl</filename>

note: Tag: para
en: # prints out the files in the package.
fr: # affiche les fichiers du paquet

note: Tag: para
en: print "Files:\n", $files, "\n";
fr: print "Fichiers :\n", $files, "\n";

note: Tag: para
en: $ ./rpmfiles.pl jikes
fr: <prompt>$</prompt> <userinput>./rpmfiles.pl jikes</userinput>

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

note: Tag: title
en: Comparing versions
fr: Comparer les versions

note: Tag: para
en: The RPM2 module overrides the spaceship operator, &lt;=&gt;, to perform version comparisons between packages. The script in Listing 18-8 shows how to compare all local RPM files against the newest installed version of the same package, if the package is installed.
fr: Le module RPM2 surcharge l'opérateur <emphasis>spaceship</emphasis>, <literal>&lt;=&gt;</literal>, pour réaliser une comparaison de version entre paquets. Le script du listage 18-8 montre comment comparer tous les fichiers RPM locaux à la version la plus récemment installée du même paquet, si le paquet est installé.

note: Tag: para
en: Listing 18-8: rpmver.pl
fr: Listage 18-8 : <filename>rpmver.pl</filename>

note: Tag: para
en: # Compare versions of all *.rpm files against the
fr: # Compare les versions de tous les fichiers *.rpm au

note: Tag: para
en: # latest packages installed (if installed)
fr: # aux derniers paquets installés (si installés)

note: Tag: para
en: # This script looks for all *.rpm files.
fr: # Ce script examine tous les fichiers *.rpm.

note: Tag: para
en: # Ensure we compare against the newest
fr: # S'assurer que l'on compare avec le paquet le

note: Tag: para
en: # package of the given name.
fr: # plus récemment installé de nom donné

note: Tag: para
en: printf "Package %s not installed.\n", $h-&gt;as_nvre;
fr: printf "Le paquet %s n'est pas installé.\n", $h-&gt;as_nvre;

note: Tag: para
en: printf "Installed package %s newer than file %s\n",
fr: printf "Le paquet installé %s est plus récent que le fichier %s\n",

note: Tag: para
en: printf "File %s newer than installed package %s\n",
fr: printf "Le fichier %s est plus récent que le paquet installé %s\n",

note: Tag: para
en: The sort { $a &lt;=&gt; $b } in front of the find_by_name call sorts all the packages of that name by the version number, so that the comparison is performed against the newest installed version of the package. The ($h &lt;=&gt; $installed) compares the header from the RPM file on disk against the newest installed version of the package.
fr: <literal>sort { $a &lt;=&gt; $b }</literal> devant l'appel de <function>find_by_name</function> trie tous les paquets de nom donné par numéro de version, ainsi la comparaison est effectuée avec la version la plus récemment installée du paquet. <literal>($h &lt;=&gt; $installed)</literal> compare l'en-tête du fichier sur disque avec cette version du paquet.

note: Tag: para
en: When you run this script, you’ll see output like the following, depending on which RPM files you have in the local directory:
fr: Quand vous lancez ce script, vous verrez une sortie du type suivant, selon les fichiers RPM dans le répertoire local :

note: Tag: para
en: $ perl rpmver.pl
fr: <prompt>$</prompt> <userinput>perl rpmver.pl</userinput>

note: Tag: para
en: Package acroread-4.0-0 not installed.
fr: Le paquet acroread-4.0-0 n'est pas installé.

note: Tag: para
en: Package canvas-7.0b2.0-1 not installed.
fr: Le paquet canvas-7.0b2.0-1 n'est pas installé.

note: Tag: para
en: Installed package jikes-1.18-1 newer than file jikes-1.14-1
fr: Le paquet installé jikes-1.18-1 est plus récent que le fichier jikes-1.14-1

note: Tag: para
en: Installed package SDL-1.2.4-5 newer than file SDL-0.9.9-4
fr: Le paquet installé SDL-1.2.4-5 est plus récent que le fichier SDL-0.9.9-4

note: Tag: para
en: Package ted-2.8-1 not installed.
fr: Le paquet ted-2.8-1 n'est pas installé.

note: Tag: title
en: Closing the database
fr: Fermer la base de données

note: Tag: para
en: When you are done with the RPM database, call close_rpm_db, as shown following:
fr: Quand vous en avez terminé avec la base de données, appelez <function>close_rpm_db</function>, comme ceci :

note: Tag: para
en: Note that this call is not necessary, as the RPM2 module will close the database when the object, in this case $rpm_db, goes out of scope.
fr: Notez que cet appel n'est pas strictement nécessaire étant donné que le module RPM2 ferme la base de données quand l'objet, dans ce cas <classname>$rpm_db</classname>, sort de portée.

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

note: Tag: para
en: One of the strengths of Perl is that there are so many add-on packages available. In addition, Perl is really strong in text processing. You can combine these strengths to provide cleaner output for RPM database queries, for example, avoiding the complex syntax for the --queryformat option to the rpm command. Perl can do more than the --queryformat option allows. For example, you can combine multiple values together into a Perl string and then format the output. The --queryformat option only allows formatting on each value individually, not groups of values.
fr: Une des forces du Perl tient dans le grand nombre de modules d'ajout disponibles. De plus, le Perl est très puissant en matière de traitement de texte. Vous pouvez unir ces forces pour fournir des sorties plus nettes lorsque vous questionnez la base de données RPM, en évitant, par exemple, la syntaxe complexe de l'option <option>--queryformat</option> de la commande <command>rpm</command>. Ainsi, vous pouvez combiner plusieurs valeurs ensemble dans une chaîne Perl et ensuit formater la sortie. L'option <option>--queryformat</option> ne permet qu'un formatage individuel des valeurs, et non des groupes de valeurs.

note: Tag: para
en: In addition, you can combine one of the Perl templating modules, such as Text::Template or HTML::Template, to create an HTML page for a given package. You could use Perl to create formatted HTML pages for all the installed packages on your system, with HTML links to cross-reference all the dependencies.
fr: En plus, vous pouvez combiner un des modules de mise en forme du Perl, tel que <emphasis>Text::Template</emphasis> ou <emphasis>HTML::Template</emphasis>, pour créer une page HTML pour un paquet donné. Vous pouvez utiliser le Perl pour créer des pages au format HTML pour tous les paquets installés sur votre système, avec des liens HTML pour établir des références croisées entre toutes les dépendances.

note: Tag: para
en: Download these modules from the CPAN site, www.cpan.org.
fr: Téléchargez ces modules à partir du site <ulink url="http://www.cpan.org"><citetitle>CPAN</citetitle></ulink>.

note: Tag: para
en: This chapter covers the RPM2 module. Right now, the RPM2 module supports only querying packages and the RPM database. Future versions will likely add the ability to install, update, and remove packages.
fr: Ce chapitre porte sur le module RPM2. Actuellement, ce module ne prend en charge que les requêtes sur des paquets et la base de données RPM. De futures versions ajouteront vraisemblablement la possibilité d'installer, mettre à jour et enlever des paquets.

note: Tag: para
en: In addition to this module, you can find an RPM module with RPM::Header and RPM::Database classes. Another module, RPM::Specfile, provides the ability to turn Perl modules, such as those stored on CPAN, into RPM packages. The RPM::Specfile module helps create an RPM spec file for a Perl module.
fr: En plus de ce module, vous trouverez un module RPM avec les classes <classname>RPM::Header</classname> et <classname>RPM::Database</classname>. Un autre module, <classname>RPM::Specfile</classname>, fournit la possibilité de transformer les modules Perl, tels que ceux stockés sur CPAN, en paquets RPM. Le module <classname>RPM::Specfile</classname> aide à créer un fichier spec RPM pour un module Perl.

note: Tag: para
en: The Perl-RPM-Perlonly bundle provides an alternative version of the RPM::Header module written entirely in Perl with no usage of the C rpm library. This makes RPM access much easier on platforms for which you don’t have the RPM system.
fr: Le groupement <package>Perl-RPM-Perlonly</package> fournit une version alternative du module <classname>RPM::Header</classname> entièrement écrite en Perl sans aucune utilisation de la bibliothèque <literal>C</literal> de rpm. Ceci facilite l'accès à RPM sur les plates-formes sur lesquelles vous ne disposez pas du système RPM.

note: Tag: para
en: The RPM-Tools bundle includes RPM::Update, which compares the packages installed on your system (listed by calling rpm –qa) with the packages available on another system, that may be available only with a network link. This module can also update packages that are older than the designated master system. RPM::Make, also part of the RPM-Tools bundle, helps create RPM packages from a Perl script. This module does not support all the spec file options described in <xref linkend="ch-specfiles" /> , but it can help you make simple packages.
fr: Le groupement <package> RPM-Tools</package> inclut <classname>RPM::Update</classname>, qui compare les paquets installés sur votre système (listés avec un appel à <command>rpm –qa</command>) avec les paquets potentiellement disponibles avec une liaison réseau sur un autre système. Ce module peut également mettre à jour les paquets plus anciens que ceux du système maître. <classname>RPM::Make</classname>, faisant également partie du groupement <package> RPM-Tools</package>, facilite la création de paquets RPM à partir d'un script Perl. Ce module ne prend pas en charge toutes les options des fichiers spec décrites dans le <xref linkend="ch-specfiles" />, mais il peut vous aider à faire des paquets simples.

note: Tag: para
en: You can download all these modules from the CPAN site.
fr: Vous pouvez télécharger tous ces modules à partir du site CPAN.

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

note: Tag: para
en: This chapter introduces the RPM2 add-on module to allow Perl scripts to access information on RPM package files and in the RPM database. To access an RPM file and query information about that file, you need to call the open_package subroutine. Once you’ve opened the file, you can call the tag, as_nvre, is_source_package, and files subroutines on the header object to query data about the package.
fr: Ce chapitre est consacré au module additionnel RPM2 permettant aux scripts Perl d'avoir accès aux informations des fichiers paquets RPM et de la base de données RPM. Pour accéder à un fichier RPM et questionner les informations à son propos, vous devez appeler la routine <function>open_package</function>. Une fois le fichier ouvert, vous pouvez faire appel aux routines <function>tag</function>, <function>as_nvre</function>, <function>is_source_package</function> et <function>files</function> sur l'objet <classname>header</classname> pour faire des requêtes sur les données du paquet.

note: Tag: para
en: To access the RPM database, call open_rpm_db. Once you’ve opened the database, you can call one of the find subroutines, such as find_by_name or find_by_name_iter, to search for packages. The subroutines that have names ending with _iter, such as find_by_name_iter, return an iterator object to iterate over the packages found. The other find subroutines, such as find_by_name, return a Perl list of the packages found.
fr: Pour accéder à la base de données RPM, appelez <function>open_rpm_db</function>. Une fois la base de données ouverte, vous pouvez appeler une des routines <function>find</function>, telle que <function>find_by_name</function> ou <function>find_by_name_iter</function>, pour faire des recherches sur des paquets. Les routines dont le nom se termine par <function>_iter</function>, comme <function>find_by_name_iter</function> renvoient un objet itérateur pour parcourir les paquets trouvés. Les autres routines <function>find</function>, comme <function>find_by_name</function> renvoient une liste Perl des paquets trouvés.

note: Tag: para
en: You can then call the tag, as_nvre, and files subroutines on the package objects to query information about the packages.
fr: Vous pouvez faire appel aux routines <function>tag</function>, <function>as_nvre</function> et <function>files</function> sur des objets paquet pour obtenir des informations à propos des dits paquets.

note: Tag: para
en: When you are done with the RPM database, call close_rpm_db.
fr: Quand vous en avez terminé avec la base de données RPM, appelez <function>close_rpm_db</function>.
