Le contenu du fichier d'un RPM est généralement installé. Cela signifie que les fichiers RPM sont copiés à leurs emplacements appropriés dans le système de fichiers afin qu'ils puissent être utilisés. Par exemple, l'installation du RPM binaire bash place le fichier "/bin/bash" à l'emplacement prévu. Pour installer un RPM, utilisez soit le "-i ” ou “-U ” interrupteur :
$ rpm -ivh bash-3.1-16.1.x86_64.rpm
Liste des fichiers à l'intérieur d'un package RPM
Vous pouvez obtenir une liste des fichiers à l'intérieur d'un RPM en effectuant une requête RPM et en ajoutant le "-p ” interrupteur :
$ rpm -q -l -p bash-3.1-16.1.x86_64.rpm /bin/bash /bin/sh /etc/skel/.bash_logout /etc/skel/.bash_profile /etc/skel/.bashrc ...
Comment extraire des fichiers d'un fichier de package RPM
Parfois, vous souhaiterez peut-être obtenir le contenu ou un seul fichier d'un package RPM. Pour ce faire, vous pouvez utiliser le rpm2cpio outil de conversion. L'outil rpm2cpio extrait le contenu d'un RPM source ou binaire sous la forme d'une archive CPIO, et non d'une archive TAR. La sortie rpm2cpio est écrite sur la sortie standard et généralement redirigée vers la commande cpio.
1. Liste des fichiers dans un fichier de package
Dans cet exemple, nous avons utilisé le -t option pour demander à cpio de produire une « table des matières » de l'archive créée par rpm2cpio. Cela peut faciliter l'obtention du bon nom de fichier et du bon chemin lorsque vous souhaitez extraire un fichier.
$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -t
Notez que la commande "rpm -qpl" affiche le nom de fichier comme chemin absolu "/bin/bash" mais que la sortie "cpio -t" utilise le nom de chemin relatif "./bin/bash" à la place. C'est très pratique car vous pouvez utiliser rpm2cpio en tant qu'utilisateur ordinaire pour extraire des fichiers qui s'installeraient normalement dans des répertoires privilégiés.
L'exemple suivant montre comment la sortie apparaît :
$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -t ./bin/bash ./bin/sh ./etc/skel/.bash_logout ./etc/skel/.bash_profile ./etc/skel/.bashrc ... 10510 blocks
2. Extraire un ou plusieurs fichiers d'un fichier de package
Utilisez rpm2cpio pour générer l'archive CPIO et utilisez le commutateur cpio "-i" pour extraire les fichiers souhaités :
$ rpm2cpio bash-3.1-16.1.x86_64.rpm | cpio -ivd ./bin/bash ./bin/bash 10510 blocks
$ ls -l /home/user/bin/bash total 744 -rwxr-xr-x 1 user user 753720 March 1 13:10 bash
Dans ce cas, les options "-i ", "-v ", et "-d ” dirige cpio vers :
-i – Extraire un ou plusieurs fichiers d'une archive. Le ou les noms de fichiers demandés doivent correspondre exactement à la table des matières "cpio -t" ou à un modèle de caractère générique de type shell. Si le fichier de destination existe déjà, cpio refusera de l'écraser à moins que le commutateur "-u" ne soit ajouté à la commande.
-d – Créez tous les répertoires qui précèdent le nom de fichier spécifié dans la commande cpio. Si les répertoires existent déjà, le commutateur "-d" peut être omis mais ne fait aucun mal s'il est toujours spécifié.
-v – Afficher les noms de tous les fichiers traités, ainsi que la taille du fichier d'archive CPIO, en blocs de 512 octets. Notez que cette taille n'est pas la taille du package RPM, que cpio ne voit jamais directement.
Si aucun nom de fichier n'est donné, tous les fichiers RPM seront extraits.