Show Table of Contents
6.2.6. トランザクション履歴の活用
yum history
のコマンドを使用すると、ユーザーは Yum のトランザクションのタイムライン、トランザクションの発生日時、影響を受けたパッケージ数、トランザクション成功の有無、RPM データベースがトランザクション中に変更されたかどうかに関する情報を確認することができます。さらには、このコマンドを使うと、特定のトランザクションを元に戻す/やり直すことが可能です。
トランザクションの一覧表示
最近発生した 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…
例えば、最初の 5 件のトランザクションを示した一覧は以下のようになります。
~]# yum history list 1..5
Loaded plugins: product-id, refresh-packagekit, subscription-manager
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
5 | Jaromir ... <jhradilek> | 2011-07-29 15:33 | Install | 1
4 | Jaromir ... <jhradilek> | 2011-07-21 15:10 | Install | 1
3 | Jaromir ... <jhradilek> | 2011-07-16 15:27 | I, U | 73
2 | System <unset> | 2011-07-16 15:19 | Update | 1
1 | System <unset> | 2011-07-16 14:38 | Install | 1106
history list
yum history list
コマンドのすべての形式は、以下のカラムで構成される各行を含む表形式出力を生成します。
ID
— 特定のトランザクションを識別する整数値です。Login user
— ユーザー名です。このログインセッションはトランザクションを開始するために使用されました。この情報は、通常Full Name <username>
の形式で表示されます。ユーザーにより発行されなかったトランザクションに関しては (システムの自動更新など)、代わりにSystem <unset>
が使用されます。Date and time
— トランザクションが発生した日時です。Action(s)
— 表6.1「Action 欄の指定可能な値」 の説明のとおり、トランザクション中に実行された動作の一覧です。Altered
— 表6.2「Altered 欄の指定可能な値」 の説明のとおり、トランザクションにより影響を受けたパッケージ数、場合によっては追加情報も含まれます。
表6.1 Action 欄の指定可能な値
Action | 省略形 | 詳細 |
---|---|---|
Downgrade | D | 1 つ以上のパッケージが旧バージョンにダウングレードされました。 |
Erase | E | 1 つ以上のパッケージが削除されました。 |
Install | I | 1 つ以上の新しいパッケージがインストールされました。 |
Obsoleting | O | 1 つ以上のパッケージが廃止として記録されました。 |
Reinstall | R | 1 つ以上のパッケージが再インストールされました。 |
Update | U | 1 つ以上のパッケージが新しいバージョンに更新されました。 |
表6.2 Altered 欄の指定可能な値
記号 | 詳細 |
---|---|
< | トランザクションが終了する前に、rpmdb データベースが Yum 以外で変更されました。 |
> | トランザクションが終了した後に、rpmdb データベースが Yum 以外で変更されました。 |
* | トランザクションは失敗して終了しました。 |
# | トランザクションは正常に終了しましたが、yum はゼロ以外の終了コードを返しました。 |
E | トランザクションは正常に終了しましたが、エラーまたは警告が表示されました。 |
P | トランザクションは正常に終了しましたが、rpmdb データベースに問題がすでに存在していました。 |
s | トランザクションは正常に終了しましたが、--skip-broken コマンドラインオプションが使用され、特定のパッケージが省略されました。 |
Yum を使用すると、過去に発生したすべてのトランザクションのサマリを表示することもできます。そのためには、
root
として以下の形式でコマンドを実行して下さい:
yum
history
summary
特定の範囲内でのトランザクションのみを表示するには、以下を入力します:
yum
history
summary
start_id..end_id
yum history list
コマンドと同様に、パッケージの名前または glob 表現を指定することで、特定のパッケージに関するトランザクションのサマリを表示することも可能です:
yum
history
summary
glob_expression…
例えば、上記に表示されたトランザクションの履歴のサマリは以下のようになります:
~]# yum history summary 1..5
Loaded plugins: product-id, refresh-packagekit, 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…
例えば、subscription-manager 及び関連パッケージの履歴を調べるには、シェルプロンプトで以下を入力します:
~]# yum history package-list subscription-manager\*
Loaded plugins: product-id, refresh-packagekit, subscription-manager
ID | Action(s) | Package
-------------------------------------------------------------------------------
3 | Updated | subscription-manager-0.95.11-1.el6.x86_64
3 | Update | 0.95.17-1.el6_1.x86_64
3 | Updated | subscription-manager-firstboot-0.95.11-1.el6.x86_64
3 | Update | 0.95.17-1.el6_1.x86_64
3 | Updated | subscription-manager-gnome-0.95.11-1.el6.x86_64
3 | Update | 0.95.17-1.el6_1.x86_64
1 | Install | subscription-manager-0.95.11-1.el6.x86_64
1 | Install | subscription-manager-firstboot-0.95.11-1.el6.x86_64
1 | Install | subscription-manager-gnome-0.95.11-1.el6.x86_64
history package-list
上記の例では、初期のシステムインストール時に subscription-manager、subscription-manager-firstboot、subscription-manager-gnome の 3 パッケージがインストールされました。3 つ目のトランザクションでは、これらの全パッケージはバージョン 0.95.11 から 0.95.17 に更新されました。
トランザクションの検証
1 つのトランザクションのサマリを表示するには、
root
として以下の形式で yum history summary
コマンドを使用します:
yum
history
summary
id
特定のトランザクションを詳しく調べたい場合は、
root
で以下のコマンドを実行して下さい:
yum
history
info
id…
id の引数はオプションです。これを省略する場合は、
yum
は自動的に最後のトランザクションを使用します。複数のトランザクションを指定する場合は、範囲を指定することもできます:
yum
history
info
start_id..end_id
以下は、2 つのトランザクションに関する出力のサンプルです。それぞれ新しいパッケージを 1 つインストールしています:
~]# yum history info 4..5
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Transaction ID : 4..5
Begin time : Thu Jul 21 15:10:46 2011
Begin rpmdb : 1107:0c67c32219c199f92ed8da7572b4c6df64eacd3a
End time : 15:33:15 2011 (22 minutes)
End rpmdb : 1109:1171025bd9b6b5f8db30d063598f590f1c1f3242
User : Jaromir Hradilek <jhradilek>
Return-Code : Success
Command Line : install screen
Command Line : install yum-plugin-fs-snapshot
Transaction performed with:
Installed rpm-4.8.0-16.el6.x86_64
Installed yum-3.2.29-17.el6.noarch
Installed yum-metadata-parser-1.1.2-16.el6.x86_64
Packages Altered:
Install screen-4.0.3-16.el6.x86_64
Install yum-plugin-fs-snapshot-1.1.30-6.el6.noarch
history info
また、トランザクション時に使用された設定オプション、特定のパッケージをインストールしたリポジトリ及びその理由などの追加情報も閲覧できます。特定のトランザクションに関して入手可能な追加情報を知りたい場合は、
root
としてシェルプロンプトで以下を入力して下さい:
yum
history
addon-info
id
yum history info
と同様に、id が指定されていない場合は、yum
は自動的に最新のトランザクションを使用します。別の方法として、最新のトランザクションを参照するには、last
キーワードを使用することもできます:
yum
history
addon-info
last
例えば、前述の例にある最初のトランザクションでは、
yum history addon-info
コマンドにより以下の出力が生成されます:
~]# yum history addon-info 4
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Transaction ID: 4
Available additional history information:
config-main
config-repos
saved_tx
history addon-info
この例では、3 種類の情報があります。
config-main
— トランザクション時に使用された Yum のグローバルオプションです。グローバルオプションを変更する方法の詳細については、「[main] オプションの設定」 を参照して下さい。config-repos
— 個々の Yum リポジトリ用のオプションです。個々のリポジトリ用のオプションを変更する方法については、「[repository] オプションの設定」 を参照して下さい。saved_tx
— 別のマシンでトランザクションを繰り返すためにyum load-transaction
コマンドにより利用できるデータです (下記参照)。
選択した種類の追加情報を表示するには、
root
で以下のコマンドを実行して下さい:
yum
history
addon-info
id information
トランザクションを元に戻す/繰り返す方法
トランザクション履歴の確認以外に、
yum history
コマンドは選択したトランザクションを元に戻す/繰り返す方法を提供します。トランザクションを元に戻すには、root
としてシェルプロンプトで以下を入力して下さい:
yum
history
undo
id
特定のトランザクションを繰り返すには、
root
で以下のコマンドを実行します:
yum
history
redo
id
どちらのコマンドでも
last
キーワードを使用して、最新のトランザクションを元に戻す/繰り返すことができます。
yum history undo
および yum history redo
コマンドともトランザクション中に実行された手順を元に戻す/繰り返すだけである点に注意してください。トランザクションにより新しいパッケージがインストールされた場合、yum history undo
コマンドはそれをアンインストールします。トランザクションによりパッケージがアンインストールされた場合、このコマンドは再度インストールします。また、このコマンドはすべての更新済みパッケージを以前のバージョンにダウングレードする試行も行います (古いパッケージが引き続き利用可能な場合)。システムを更新前の状態に復旧する必要がある場合は、「プラグインの詳細」 の説明のとおり fs-snapshot プラグインの使用を検討してください。
複数の同一システムを管理する場合、Yum を使用すると、1 つのシステム上でトランザクションを実行して、そのトランザクションの詳細をファイルに格納し、テスト期間の終了後に残りのシステム上で同じトランザクションを繰り返すことが可能です。トランザクションの詳細をファイルに格納するには、
root
としてシェルプロンプトで以下を入力します:
yum
-q
history
addon-info
idsaved_tx
>file_name
このファイルを目的のシステムにコピーしたら、
root
で以下のコマンドを使用してトランザクションを繰り返すことができます:
yum
load-transaction
file_name
ただし、ファイルに格納されている
rpmdb
バージョンは目的のシステムのバージョンと同一でなければならない点に注意してください。rpmdb
のバージョンを調べるには、yum version nogroups
コマンドを使用します。
新しいトランザクション履歴の開始
Yum は単一の SQLite データベースファイルにトランザクション履歴を格納します。新しいトランザクションの履歴を開始するには、
root
で以下のコマンドを実行して下さい:
yum
history
new
これにより
/var/lib/yum/history/
ディレクトリ内に新しい空のデータベースファイルが作成されます。古いトランザクション履歴は保存されますが、新しいデータベースファイルがディレクトリにある限りアクセスすることはできません。