Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
9.4. トランザクション履歴の活用
yum history
コマンドを使用すると、yum のトランザクションのタイムライン、トランザクションの発生日時、影響を受けたパッケージ数、トランザクション成功の有無、RPM データベースがトランザクション間で変更されたかどうかといった情報を確認できます。さらに、このコマンドを使用すると、特定のトランザクションを元に戻す、またはやり直すことが可能です。すべての履歴データは、/var/lib/yum/history/ ディレクトリーの history DB
に保存されます。
9.4.1. トランザクションの一覧表示
最近発生した 20 件のトランザクションを一覧表示するには、root
で引数なしで yum history
を実行するか、以下のコマンドを実行します。
yum
history
list
すべてのトランザクションを表示するには、all
のキーワードを追加します。
yum
history
list
all
特定の範囲内のトランザクションのみを表示したい場合は、以下の形式でコマンドを使用します。
yum history list start_id..end_id
特定のパッケージに関するトランザクションのみを一覧表示することもできます。そのためには、パッケージ名か glob 表現を付けてコマンドを実行します。
yum history list glob_expression…
例9.19 最も古いトランザクション 5 件を表示する
yum history list
の出力では、最新のトランザクションがリストの上部に表示されます。履歴データベースにある最も古い 5 件のトランザクションに関する情報を表示するには、以下を入力します。
~]# 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
yum history list
コマンドのすべての形式で、以下のコラムで設定される各行を含む表形式出力を生成します。
-
ID
: 特定のトランザクションを識別する整数値です。 -
Login user
: トランザクションが開始したログインセッションのユーザー名。この情報は、通常Full Name <username>
の形式で表示されます。ユーザーが実行しなかったトランザクションに関しては (システムの自動更新など)、代わりにSystem <unset>
が使用されます。 -
Date and time
: トランザクションが発生した日時です。 -
Action(s)
: 表9.1「Action フィールドの値」 の説明通りに、トランザクション中に実行された動作の一覧です。 -
Altered
: 表9.2「Altered フィールドの値」 の説明通りに、トランザクションにより影響を受けたパッケージ数、場合によっては追加情報も含まれます。
表9.1 Action フィールドの値
Action | 省略形 | 詳細 |
---|---|---|
|
| 1 つ以上のパッケージが旧バージョンにダウングレードされました。 |
|
| 1 つ以上のパッケージが削除されました。 |
|
| 1 つ以上の新しいパッケージがインストールされました。 |
|
| 1 つ以上のパッケージが廃止として記録されました。 |
|
| 1 つ以上のパッケージが再インストールされました。 |
|
| 1 つ以上のパッケージが新しいバージョンに更新されました。 |
表9.2 Altered フィールドの値
記号 | 詳細 |
---|---|
|
トランザクションが終了する前に、 |
|
トランザクションが終了した後に、 |
| トランザクションは失敗して終了しました。 |
| トランザクションは正常に終了しましたが、yum はゼロ以外の終了コードを返しました。 |
| トランザクションは正常に終了しましたが、エラーまたは警告が表示されました。 |
|
トランザクションは正常に終了しましたが、 |
|
トランザクションは正常に終了しましたが、 |
インストール済みパッケージの rpmdb
または yumdb
データベースのコンテンツを、現在使用されている rpmdb
または yumdb
データベースと同期するには、以下を入力します。
yum
history
sync
現在使用している履歴データベースに関する全体的な統計数字を表示するには、以下のコマンドを使用します。
yum
history
stats
例9.20 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 を使用すると、過去に発生したすべてのトランザクションのサマリーを表示することもできます。root
で以下の形式のコマンドを実行します。
yum
history
summary
特定の範囲内でのトランザクションのみを表示するには、以下を入力します。
yum history summary start_id..end_id
yum history list
コマンドと同様に、パッケージの名前または glob 表現を指定することで、特定のパッケージに関するトランザクションのサマリーを表示できます。
yum history summary glob_expression…
例9.21 最新のトランザクション 5 件のサマリー
~]# 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
yum history summary
コマンドはすべての形式で、yum history list
の出力に似た、簡略化された表形式出力を生成します。
上記のように、yum history list
および yum history summary
とも、トランザクション向けに設定されています。特定のパッケージに関連するトランザクションのみを表示することができますが、パッケージバージョンのような重要な詳細は表示されません。パッケージに関連するトランザクションを一覧表示するには、root
で以下のコマンドを実行します。
yum history package-list glob_expression…
例9.22 パッケージ履歴の追跡
たとえば、subscription-manager および関連パッケージの履歴を調べるには、シェルプロンプトで以下を入力します。
~]# 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
上記の例では、初期のシステムインストール時に subscription-manager、subscription-manager-firstboot、subscription-manager-gui の 3 パッケージがインストールされています。3 つ目のトランザクションでは、これらの全パッケージはバージョン 1.10.11 から 1.10.17 に更新されています。
9.4.2. トランザクションの検証
単一のトランザクションのサマリーを表示するには、root
で以下の形式で yum history summary
コマンドを使用します。
yum
history
summary
id
ここでは、id はトランザクションの ID を表します。
特定のトランザクションを詳しく調べる場合は、root
で以下のコマンドを実行します。
yum
history
info
id…
id の引数はオプションです。これを省略する場合は、yum は自動的に最後のトランザクションを使用します。複数のトランザクションを指定する場合は、範囲を指定することもできます。
yum history info start_id..end_id
例9.23 yum history info の出力例
以下は、2 つのトランザクションに関する出力のサンプルです。それぞれ新しいパッケージを 1 つインストールしています。
~]# 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
また、トランザクション時に使用された設定オプション、特定のパッケージをインストールしたリポジトリー、その理由などの追加情報も閲覧できます。特定のトランザクションに関して入手可能な追加情報を表示する場合は、root
としてシェルプロンプトで以下を入力します。
yum
history
addon-info
id
yum history info
と同様に、id が指定されていない場合、yum は自動的に最新のトランザクションを使用します。別の方法として、最新のトランザクションを参照するには、last
キーワードを使用することもできます。
yum
history
addon-info
last
例9.24 yum
history
addon-info
の出力例
履歴の 4 番目のトランザクションを指定すると、yum history addon-info
は以下のような出力を返します。
~]# 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
yum
history
addon-info
コマンドの出力では、以下の 3 種類の情報が表示されます。
-
config-main
: トランザクション時に使用された yum のグローバルオプション。グローバルオプションの変更方法は 「[main] オプションの設定」 を参照してください。 -
config-repos
: 個々の yum リポジトリー用のオプションです。個々のリポジトリー用のオプションを変更する方法は 「[repository] オプションの設定」 を参照してください。 -
saved_tx
: 別のマシンでトランザクションを繰り返すためにyum load-transaction
コマンドにより利用できるデータです (下記参照)。
選択した種類の追加情報を表示するには、root
で以下のコマンドを実行してください。
yum
history
addon-info
id information
9.4.3. トランザクションを元に戻す/繰り返す
トランザクション履歴の確認以外に、yum history
コマンドは選択したトランザクションを元に戻す、または繰り返す方法を提供します。トランザクションを元に戻すには、root
で次のコマンドを実行します。
yum
history
undo
id
特定のトランザクションを繰り返すには、root
で次のコマンドを実行します。
yum
history
redo
id
どちらのコマンドでも last
キーワードを使用して、最新のトランザクションを元に戻す、または繰り返すことができます。
yum history undo
コマンドおよび yum history redo
コマンドのどちらも、トランザクション中に実行したステップを元に戻す、または繰り返すだけである点に注意してください。このトランザクションで新しいパッケージがインストールされた場合に、yum history undo
コマンドを実行すると、今回インストールしたパッケージがアンインストールされます。逆に、このトランザクションでパッケージがアンインストールされた場合は、このコマンドにより再度インストールされます。またこのコマンドは、(古いパッケージが引き続き利用可能な場合に) 更新済みパッケージをすべて以前のバージョンにダウングレードする試みも行います。
複数の同一システムを管理する場合、yum を使用すると、1 つのシステムでトランザクションを実行して、そのトランザクションの詳細をファイルに格納し、テスト期間の終了後に残りのシステムで同じトランザクションを繰り返すことができます。トランザクションの詳細をファイルに保存するには、root
でシェルプロンプトに以下を入力します。
yum -q history addon-info id saved_tx > file_name
このファイルを目的のシステムにコピーしたら、root
で以下のコマンドを使用してトランザクションを繰り返すことができます。
yum load-transaction file_name
欠けているパッケージまたは rpmdb バージョンを無視するように load-transaction
を設定できます。これらの設定オプションの詳細は、yum.conf
(5) man ページを参照してください。
9.4.4. 新しいトランザクション履歴の開始
Yum は単一の SQLite データベースファイルにトランザクション履歴を保存します。新しいトランザクションの履歴を開始するには、root
で以下のコマンドを実行します。
yum
history
new
これにより /var/lib/yum/history/
ディレクトリーに新しい空のデータベースファイルが作成されます。古いトランザクション履歴は保存されますが、新しいデータベースファイルがディレクトリーにある限りアクセスすることはできません。