B.2.2. インストールとアップグレード

RPM パッケージは通常、tree-1.5.3-2.el6.x86_64.rpm のようなファイル名が付けられています。ファイル名は、パッケージ名(tree)、バージョン(1.5.3)、リリース(2)、オペレーティングシステムのメジャーバージョン(el6)、および CPU アーキテクチャ(x86_64)で構成されています。
以下を実行するために、rpm-U オプションを使用します:
  • すでにシステム上にあるが古くなったパッケージを新しいバージョンにアップグレードする、または
  • 古くなったバージョンがインストールされていない場合は、パッケージをインストールする
つまり、rpm -U <rpm_file> は、パッケージの必要に応じて アップグレード または インストール のいずれかの機能を実行できます。
tree-1.5.3-2.el6.x86_64.rpm パッケージが正しいディレクトリにあると仮定します。root としてログインし、rpm による tree パッケージをアップグレードまたはインストールするためにシェルプロンプトで以下のコマンドを入力します:
rpm -Uvh tree-1.5.3-2.el6.x86_64.rpm

注記

-v および -h のオプション(-U と組み合わされる)により、rpm は、詳細出力を表示し、ハッシュマークを使って進行メーターを表示します。
アップグレードおよび/またはインストールが正常に終了すると、以下のような出力が表示されます。
Preparing...                ########################################### [100%]
   1:tree                   ########################################### [100%]

警告

rpm は、パッケージをインストールするときに 2 つのオプションを提供します:前述の -U オプション(慣習的に アップグレード を意味します)と インストール を意味する -i オプションです。-U オプションには、インストールおよびアップグレード機能の両方が含まれるため、kernel パッケージ以外のすべてのパッケージに rpm -Uvh を使用することをお勧めします。
新しいカーネルパッケージはアップグレードするのではなく、単に インストール するために常に、-i オプションを使うことが推奨されます。カーネルパッケージをアップグレードする -U オプションを使用すると、前の(古い)カーネルパッケージが削除されるため、新しいカーネルに問題がある場合は、システムがブートできない状態になる可能性があります。そのため、新しいカーネルをインストールするには、古い kernel パッケージを置換しない、 rpm -i <kernel_package> コマンドを使用します。kernel パッケージのインストールについては、24章手動のカーネルアップグレード を参照してください。
パッケージの署名は、パッケージのインストールまたはアップグレード時に自動的に確認されます。署名により、パッケージが認証機関によって署名されたことを確認できます。例えば、署名の検証が失敗すると、次のようなエラーメッセージが表示されます:
error: tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA256 signature: BAD, key ID
d22e77f2
ヘッダのみの新しい署名なら、次のようなエラーメッセージが表示されます:
error: tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA256 signature: BAD,
key ID d22e77f2
署名を検証するための適切なキーをインストールしていない場合は、メッセージに NOKEY という単語が含まれます:
warning: tree-1.5.3-2.el6.x86_64.rpm: Header V3 RSA/SHA1 signature: NOKEY, key ID 57bbccba
パッケージ署名の確認に関しては、「パッケージの署名確認」 を参照してください。

B.2.2.1. パッケージがすでにインストールされている場合

同一名で同一場合のパッケージがすでにインストールされていると、以下のような出力が表示されます。
Preparing...                ########################################### [100%]
  package tree-1.5.3-2.el6.x86_64 is already installed
どうしてもパッケージをインストールする必要がある場合は、--replacepkgs オプションを使用します。このオプションは RPM にエラーを無視するよう指示するものです:
rpm -Uvh --replacepkgs tree-1.5.3-2.el6.x86_64.rpm
このオプションは、RPM からインストールされたファイルが削除された場合や、RPM からオリジナルの設定ファイルをインストールしたい場合に便利です。

B.2.2.2. ファイルの競合

別のパッケージによってすでにインストールされたファイルを含むパッケージをインストールしようとすると、以下のメッセージが表示されます。
Preparing... ##################################################
 file /usr/bin/foobar from install of foo-1.0-1.el6.x86_64 conflicts
with file from package bar-3.1.1.el6.x86_64
--replacefiles オプションを使用して、RPM にこのエラーを無視するよう指示します。
rpm -Uvh --replacefiles foo-1.0-1.el6.x86_64.rpm

B.2.2.3. 未解決の依存

RPM パッケージは他のパッケージに依存することがあります。 つまり、正しく動作するために他のパッケージのインストールが必要なことがあります。未解決の依存関係を持つパッケージをインストールしようとすると、以下のような出力が表示されます。
error: Failed dependencies:
  bar.so.3()(64bit) is needed by foo-1.0-1.el6.x86_64
CD-ROM または DVD などの Red Hat Enterprise Linux インストールメディアからパッケージをインストールしている場合は、依存関係が利用可能なことがあります。Red Hat Enterprise Linux インストールメディアまたはアクティブな Red Hat Enterprise Linux ミラーで提案したパッケージを見つけて、次のようにコマンドに追加します。
rpm -Uvh foo-1.0-1.el6.x86_64.rpm    bar-3.1.1.el6.x86_64.rpm
両方のパッケージのインストールが正常に行われると、以下のような出力が表示されます。
Preparing...                ########################################### [100%]
   1:foo                   ########################################### [ 50%]
   2:bar                   ########################################### [100%]
--whatprovides オプションを使うと、どのパッケージが必要なファイルを含んでいるか判断できます。
rpm -q --whatprovides "bar.so.3"
bar.so.3 を含むパッケージが RPM データベースにある場合は、そのパッケージ名が表示されます。
bar-3.1.1.el6.i586.rpm

警告

Failed dependencies エラーを出すパッケージを rpm は(--nodeps オプションを使用して) 強制的に インストールできますが、これはお勧め しません。それを行うと、インストールしたパッケージの起動は通常失敗します。rpm --nodeps を使ってパッケージをインストールまたは削除することによって、アプリケーションが誤作動および/またはクラッシュすることにつながり、深刻なパッケージ管理の問題、場合によってはシステム障害を引き起こすことになります。そのため、警告に従うのが一番です。依存関係がどこにあるのかを明らかにすることは重要なため、パッケージマネージャは — RPMyum、 または PackageKit であろうと — こうした警告を表示し、可能な修正方法を提案してくれます。Yum パッケージマネージャは、依存関係の解決を実行し、オンラインのリポジトリから依存関係をフェッチすることができますので、依存関係解決を考慮しないまま rpm で強制的に実行するよりも安全で、簡単でスマートな方法です。