Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.4. Utiliser l'historique des transactions

La commande yum history permet aux utilisateurs d'examiner des informations sur la chronologie des transactions yum, les dates et heures auxquelles elles se sont produites, le nombre de paquets affectés, si ces transactions ont réussi ou échoué, et si la base de données RPM a été modifiées entre les transactions. En outre, cette commande peut être utilisée pour annuler ou refaire certaines transactions. Tout l'historique des données est stocké dans la base de données de l'historique (history DB) dans le répertoire /var/lib/yum/history/.

8.4.1. Répertorier les transactions

Pour afficher une liste des vingt transactions les plus récentes, en tant qu'utilisateur root, veuillez exécuter yum history sans argument supplémentaire, ou saisissez ce qui suit dans une invite shell :
yum history list
Pour afficher toutes les transactions, veuillez ajouter le mot-clé all :
yum history list all
Pour uniquement afficher des transactions pendant une période donnée, veuillez utiliser la commande sous le format suivant :
yum history list start_id..end_id
Vous pouvez également répertorier les transactions qui concernent un ou plusieurs paquets particuliers. Pour faire cela, veuillez utiliser la commande avec un nom de paquet ou une expression glob :
yum history list glob_expression

Exemple 8.19. Répertorier les cinq transactions les plus anciennes

Dans la sortie de yum history list, la transaction la plus récente est affichée en haut de la liste. Pour afficher des informations sur les cinq plus anciennes transactions stockées dans la base de données de l'historique, veuillez saisir :
~]# yum history list 1..5
Loaded plugins: langpacks, product-id, subscription-manager
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     5 | User <user>              | 2013-07-29 15:33 | Install        |    1
     4 | User <user>              | 2013-07-21 15:10 | Install        |    1
     3 | User <user>              | 2013-07-16 15:27 | I, U           |   73
     2 | System <unset>           | 2013-07-16 15:19 | Update         |    1
     1 | System <unset>           | 2013-07-16 14:38 | Install        | 1106
history list
Toutes les formes de la commande yum history list produisent une sortie tabulaire dont chaque ligne comporte les colonnes suivantes :
  • ID — valeur d'entier identifiant une transaction particulière.
  • Login user — nom de l'utilisateur dont la session de connexion a été utilisée pour initier une transaction. Cette information est typiquement présentée sous la forme Full Name <username>. Pour les transactions qui n'ont pas été effectuées par un utilisateur (comme les mises à jour automatiques du système), System <unset> est utilisé à la place.
  • Date and time — la date et l'heure à laquelle une transaction a été effectuée.
  • Action(s) — liste d'actions effectuées au cours d'une transaction, comme décrit dans Tableau 8.1, « Valeurs possibles du champ « Action(s) » ».
  • Altered — nombre de paquets qui ont été affectés par une transaction, probablement suivis d'informations supplémentaires comme décrit dans Tableau 8.2, « Les valeurs possibles du champ « Altered » ».

Tableau 8.1. Valeurs possibles du champ « Action(s) »

ActionAbbréviationDescription
DowngradeDUn paquet au moins a été mis à niveau à une version antérieure.
EraseEUn paquet au moins a été supprimé.
InstallIUn nouveau paquet au moins a été installé.
ObsoletingOUn paquet au mons a été marqué comme obsolète.
ReinstallRUn paquet au moins a été réinstallé.
UpdateUUn paquet au moins a été mis à jour à une version plus récente.

Tableau 8.2. Les valeurs possibles du champ « Altered »

SymboleDescription
<Avant que la transaction se termine, la base de données rpmdb a été modifiée hors de yum.
>Une fois la transaction terminée, la base de données rpmdb a été modifiée hors de yum.
*La transaction ne s'est pas terminée correctement.
#La transaction s'est terminée correctement, mais yum a retourné un code de sortie différent de zéro.
ELa transaction s'est terminée correctement, mais une erreur ou un avertissement s'est affiché.
PLa transaction s'est terminée correctement, mais des problèmes existaient déjà dans la base de données rpmdb.
sLa transaction s'est terminée correctement, mais l'option de ligne de commande --skip-broken a été utilisée et certains paquets ont été ignorés.
Pour synchroniser le contenu de la base de données rpmdb ou yumdb pour tout paquet installé avec la base de données rpmdb ou yumdb actuellement utilisée, veuillez saisir ce qui suit :
yum history sync
Pour afficher certaines statistiques générales sur la base de données de l'historique actuellement utilisée, veuillez utiliser le format suivant :
yum history stats

Exemple 8.20. Exemple de sortie de yum history stats

~]# yum history stats
Loaded plugins: langpacks, product-id, subscription-manager 
File        : //var/lib/yum/history/history-2012-08-15.sqlite
Size        : 2,766,848
Transactions: 41
Begin time  : Wed Aug 15 16:18:25 2012
End time    : Wed Feb 27 14:52:30 2013
Counts      :
  NEVRAC :  2,204
  NEVRA  :  2,204
  NA     :  1,759
  NEVR   :  2,204
  rpm DB :  2,204
  yum DB :  2,204
history stats
Yum permet également d'afficher un résumé de toutes les ancennes transactions. Pour cela, veuillez exécuter la commande sous la forme suivante en tant qu'utilisateur root :
yum history summary
Pour afficher les transactions d'une période donnée uniquement, veuillez saisir :
yum history summary start_id..end_id
De même qu'avec la commande yum history list, vous pouvez également afficher un résumé des transactions concernant un ou plusieurs paquets particuliers en fournissant un nom de paquet ou une expression glob :
yum history summary glob_expression

Exemple 8.21. Résumé des cinq transactions les plus récentes

~]# yum history summary 1..5
Loaded plugins: langpacks, product-id, subscription-manager
Login user                 | Time                | Action(s)        | Altered 
-------------------------------------------------------------------------------
Jaromir ... <jhradilek>    | Last day            | Install          |        1
Jaromir ... <jhradilek>    | Last week           | Install          |        1
Jaromir ... <jhradilek>    | Last 2 weeks        | I, U             |       73
System <unset>             | Last 2 weeks        | I, U             |     1107
history summary
Toutes les formes de la commande yum history summary produisent une sortie tabulaire simplifiée similaire à la sortie de yum history list.
Comme indiqué ci-dessus, les commandes yum history list et yum history summary sont orientées vers les transactions, et même si elles permettent d'uniquement afficher les transactions concernant un ou plusieurs paquets en particulier, des détails cruciaux seront manquants, comme la version des paquets. Pour répertorier les transactions depuis la perspective du paquet, veuillez exécuter la commande suivante en tant qu'utilisateur root :
yum history package-list glob_expression

Exemple 8.22. Traçage de l'historique d'un paquet

Par exemple, pour tracer l'historique de subscription-manager et de ses paquets connexes, veuillez saisir ce qui suit dans l'invite shell :
~]# yum history package-list subscription-manager\*
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
ID     | Action(s)      | Package
-------------------------------------------------------------------------------
     2 | Updated        | subscription-manager-1.13.22-1.el7.x86_64          EE
     2 | Update         |                      1.15.9-15.el7.x86_64          EE
     2 | Obsoleted      | subscription-manager-firstboot-1.13.22-1.el7.x86_64 EE
     2 | Updated        | subscription-manager-gui-1.13.22-1.el7.x86_64      EE
     2 | Update         |                          1.15.9-15.el7.x86_64      EE
     2 | Obsoleting     | subscription-manager-initial-setup-addon-1.15.9-15.el7.x86_64 EE
     1 | Install        | subscription-manager-1.13.22-1.el7.x86_64
     1 | Install        | subscription-manager-firstboot-1.13.22-1.el7.x86_64
     1 | Install        | subscription-manager-gui-1.13.22-1.el7.x86_64
history package-list
Dans cet exemple, trois paquets ont été installés pendant l'installation initiale du système : subscription-manager, subscription-manager-firstboot, et subscription-manager-gui. Dans la troisième transaction, tous les paquets ont été mis à jour de la version 1.10.11 à la version 1.10.17.

8.4.2. Examiner les transactions

Pour afficher le résumé d'une transaction unique, en tant qu'utilisateur root, utilisez la commande yum history summary sous la forme suivante :
yum history summary id
Ici, id correspond à l'ID de la transaction.
Pour examiner une ou plusieurs transactions en particulier de manière plus détaillée, veuillez exécuter la commande suivante en tant qu'utilisateur root :
yum history info id
L'argument id est optionnel et yum utilise automatiquement la dernière transaction lorsque vous l'omettez. Remarquez que vous pouvez également utiliser une gamme de transaction lorsque vous souhaitez spécifiez plus d'une transaction :
yum history info start_id..end_id

Exemple 8.23. Exemple de sortie de yum history info

Ci-dessous figure un exemple de sortie de deux transactions, installant chacune un nouveau paquet :
~]# yum history info 4..5
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager
Transaction ID : 4..5
Begin time     : Mon Dec  7 16:51:07 2015
Begin rpmdb    : 1252:d2b62b7b5768e855723954852fd7e55f641fbad9
End time       :            17:18:49 2015 (27 minutes)
End rpmdb      : 1253:cf8449dc4c53fc0cbc0a4c48e496a6c50f3d43c5
User           : Maxim Svistunov <msvistun>
Return-Code    : Success
Command Line   : install tigervnc-server.x86_64
Command Line   : reinstall tigervnc-server
Transaction performed with:
    Installed     rpm-4.11.3-17.el7.x86_64                  @rhel-7-server-rpms
    Installed     subscription-manager-1.15.9-15.el7.x86_64 @rhel-7-server-rpms
    Installed     yum-3.4.3-132.el7.noarch                  @rhel-7-server-rpms
Packages Altered:
    Reinstall tigervnc-server-1.3.1-3.el7.x86_64 @rhel-7-server-rpms
history info
Vous pouvez également voir des informations supplémentaires, comme les options de configuration utilisées au moment de la transaction, ou à partir de quel référentiel et pour quelles raisons certains paquets ont été installés. Pour déterminer quelles sont les informations disponibles pour une transaction donnée, veuillez saisir ce qui suit à l'invite shell en tant qu'utilisateur root :
yum history addon-info id
De même qu'avec yum history info, lorsqu'aucun id n'est fourni, yum utilise automatiquement la dernière transaction. Une autre manière de faire référence à la traduction la plus récente consiste à utiliser le mot-clé last :
yum history addon-info last

Exemple 8.24. Exemple de sortie de yum history addon-info

Pour la quatrième transaction dans l'historique, la commande yum history addon-info fournit la sortie suivante :
~]# yum history addon-info 4
Loaded plugins: langpacks, product-id, subscription-manager
Transaction ID: 4
Available additional history information:
  config-main
  config-repos
  saved_tx

history addon-info
Dans la sortie de la commande yum history addon-info, trois types d'informations sont disponibles :
  • config-main — options yum globales qui étaient utilisées pendant la transaction. Veuillez consulter la Section 8.5.1, « Définir les options [main] » pour obtenir des informations sur la manière de modifier les options globales.
  • config-repos — options des référentiels yum individuels. Veuillez consulter la Section 8.5.2, « Définir les options [repository] » pour obtenir des informations sur la manière de modifier les options de référentiels individuels.
  • saved_tx — les données pouvant être utilisées par la commande yum load-transaction afin de répéter la transaction sur une autre machine (voir ci-dessous).
Pour affciher un type sélectionné d'informations supplémentaires, veuillez exécuter la commande suivante en tant qu'utilisateur root :
yum history addon-info id information

8.4.3. Restaurer et répéter des transactions

Hormis le fait de permettre d'examiner l'historique des transactions, la commande yum history fournit un moyen de restaurer ou de répéter une transaction sélectionnée. Pour restaurer une transaction, veuillez saisir ce qui suit dans l'invite shell en tant qu'utilisateur root :
yum history undo id
Pour répéter une transaction en particulier, veuillez exécuter la commande suivante en tant qu'utilisateur root :
yum history redo id
Les deux commandes acceptent également le mot-clé last pour annuler ou répéter la dernière transaction.
Remarquez que les commandes yum history undo et yum history redo restaurent ou répètent uniquement les étapes qui ont été effectuées pendant une transaction. Si la transaction a installé un nouveau paquet, la commande yum history undo le désinstallera, et si la transaction a désinstallé un paquet, la commande l'installera à nouveau. Cette commande tente également de faire une mise à niveau inférieur de tous les paquets mis à jour vers leur version précédente si ces paquets plus anciens sont toujours disponibles.
Lors de la gestion de plusieurs systèmes identiques, yum vous permet également d'effectuer une transaction sur l'un d'entre eux, de stocker les détails de celle-ci dans un fichier, et après une période de tests, de répéter la même transaction sur les systèmes restants. Pour stocker les détails de la transaction dans une fichier, veuillez saisir ce qui suit dans l'invite shell en tant qu'utilisateur root :
yum -q history addon-info id saved_tx > file_name
Une fois ce fichier copié sur le système cible, vous pouvez répéter la transaction en utilisant la commande suivante en tant qu'utilisateur root :
yum load-transaction file_name
Vous pouvez configurer load-transaction de manière à ignorer les paquets manquants ou la version rpmdb. Pour obtenir davantage d'informations sur ces options de configuration, veuillez consulter la page man yum.conf(5).

8.4.4. Lancer un nouvel historique des transactions

Yum stocke l'historique des transactions dans un fichier de base de données SQLite unique. Pour lancer un nouvel historique des transactions, veuillez exécuter la commande suivante en tant qu'utilisateur root :
yum history new
Cela créera un nouveau fichier de base de données vide dans le répertoire /var/lib/yum/history/. L'ancien historique des transactions sera conservé, mais il ne sera pas accessible tant qu'un fichier de base de données plus récent sera présent dans le répertoire.