シェルプロンプトからの RPM の使用

RPM 機能は、シェルプロンプトでさまざまなコマンドを入力することによっても使用できます。Gnome-RPM で利用できる機能はすべて自由に使え、さらにパッケージを 最新の状態にする (アップグレードと類似した機能) 機能などの追加機能があります (詳細は「the section called 最新の状態にする」を参照)。

RPM に関するさらに詳しい情報は、ドキュメンテーション CD の『Official Red Hat Linux リファレンスガイド』に記載された関連各章を参照してください。また、man rpm と入力すれば関連するページを参照でき、また rpm --help と入力すればヘルプファイルを表示できます。

インストール

RPM パッケージの典型的なファイル名は foo-1.0-1.i386.rpm のようになっています。この名前は、パッケージ名 (foo)、バージョン (1.0)、リリース (1)、およびアーキテクチャ (i386) で構成されています。パッケージのインストールは以下のように入力するだけです。

# rpm -ivh foo-1.0-1.i386.rpm
foo ####################################
#

RPM はパッケージの名前 (必ずしもファイル名と同じではありません) を出力し、パッケージのインストール中には連続するハッシュマークを進行メーターとして出力します。

また、パッケージのインストールは upgrade オプションでも行えます。詳しくは、「the section called アップグレード」を参照してください。

インストール時には、そのパッケージはすでにインストールされている、または依存関係の問題があってパッケージのインストールができない、などのメッセージが出され、エラーとなることがあります。

発生する可能性のあるエラーの種類については、このまま以下をお読みください。

パッケージがすでにインストールされている

パッケージがすでにインストールされている場合は、以下のメッセージが表示されます。

# rpm -ivh foo-1.0-1.i386.rpm
foo package foo-1.0-1 is already installed error:foo-1.0-1.i386.rpm cannot be installed
#

かまわずにパッケージをインストールする場合は、コマンドラインで --replacepkgs を使用できます。このコマンドは RPM にエラーを無視するように指示します。

# rpm -ivh --replacepkgs foo-1.0-1.i386.rpm
foo ####################################
#

ファイルが競合する

別のパッケージによってインストールされたファイルを含むパッケージをインストールしようとすると、以下のメッセージが表示されます。

# rpm -ivh foo-1.0-1.i386.rpm
foo /usr/bin/foo conflicts with file from bar-1.0-1 error:foo-1.0-1.i386.rpm cannot be installed
#

このエラーを RPM に無視するように指示するには、コマンドライン上で、--replacefiles を使用します。

# rpm -ivh --replacefiles foo-1.0-1.i386.rpm
foo ####################################
#

未解決の依存関係

RPM パッケージは他のパッケージに「依存」することがあります。つまり、ある RPM パッケージが正しく動作するために他のパッケージのインストールが必要になることがあります。未解決の依存関係を持つパッケージをインストールしようとすると、以下のようなメッセージが表示されます。

# rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:foo is needed by bar-1.0-1
#

このエラーに対処するためには、要求されたパッケージをインストールする必要があります。それでも、インストールを強行したい場合 (おそらくそのパッケージは正しく動作しないのでお奨めできませんが) には、コマンドライン上で --nodeps を使用します。

アンインストール

パッケージのアンインストールも簡単です。

# rpm -e foo
#

パッケージをアンインストールする場合、オリジナルパッケージの名前 (foo-1.0-1.i386.rpm) ではなく、パッケージ名 (foo) を使用している点に注意してください。

削除しようとしているパッケージに依存したパッケージがある場合には、依存関係エラーが発生することがあります。例えば、

# rpm -e foo
removing these packages would break dependencies:foo is needed by bar-1.0-1
#

RPM にこのエラーを無視させ、かまわずにパッケージのアンインストールするには (おそらく依存しているパッケージが正しく動作しなくなるのであまりお奨めできません)、コマンドライン上で --nodeps を使用します。

アップグレード

パッケージのアップグレードはインストールと似ています。

# rpm -Uvh foo-2.0-1.i386.rpm
foo ####################################
#

アップグレードを行うと、RPM では古いバージョンの foo パッケージを自動的にアンインストールします。

パッケージのインストールには、upgrade を使用するのもよいでしょう。このコマンドでは旧バージョンのパッケージがインストールされていなかった場合でも正常に動作します。

RPM では高度なパッケージアップグレード処理を行いますので、以下のようなメッセージが表示されることがあります。

旧バージョンのパッケージインストールに関するエラー

# rpm -Uvh foo-1,0-1.i386.rpm
foo package foo-2.0-1 (which is newer) is already installed error:foo-1.0-1.i386.rpm cannot be installed
#

そのまま、「アップグレード」(実際はダウングレードですが) を続ける場合は、コマンドラインで --oldpackage を使用します。

# rpm -Uvh --oldpackage foo-1.0-1.i386.rpm
foo ####################################
#

最新の状態にする

パッケージを最新にするのはアップグレードと似ています。

# rpm -Fvh foo-1.2-1.i386.rpm
foo ####################################
#

RPM の freshen オプションは、コマンドライン上で指定されたパッケージのバージョンと、すでにシステム上にインストールされているパッケージのバージョンを照合します。すでにインストールされているパッケージにより新しいバージョンがある場合、RPM の freshen オプションで処理されるとその新しいバージョンにアップグレードされます。ただし、同名のパッケージが事前にインストールされていない場合はパッケージのインストールは行われません。この点が RPM の upgrade オプションと異なります。アップグレードの場合、古いバージョンのパッケージがすでにインストールされている、いないにかかわらずパッケージはインストールされます

問い合わせ

インストールされたパッケージに関するデータベース問い合わせは、rpm -q で行います。このコマンドの簡単な使用例は、rpm -q foo で、この例ではインストールされたパッケージパッケージ foo のパッケージ名、バージョン、およびリリース番号が出力されます。

# rpm -q foo
foo-2.0-1
#

パッケージ名を指定する代わりに、以下のオプションを -q コマンドと使用して、問い合わせ照会を行うパッケージを指定することもできます。これらのオプションをパッケージ指定オプションといいます。

問い合わせ対象パッケージについて照会する情報を指定する方法はたくさんあります。以下のオプションは、検索する情報のタイプを選択するために使用されます。これらのオプションを情報選択オプションといいます。

ファイル一覧を表示するオプションの場合、コマンドラインに -v を追加すると通常使用している ls -l 形式で一覧を取得することができます。

検証

パッケージの検証では、パッケージからインストールされたファイルに関する情報と、元のパッケージに含まれるファイルに関する同一情報が比較されます。特に、各ファイルのサイズ、MD5 サム、権限、タイプ、所有者、およびグループが比較されます。

コマンド rpm -V によってパッケージが検証されます。検証するパッケージの指定には、問い合わせの説明で挙げた任意のパッケージ選択オプションを使用できます。簡単な使用法は、rpm -V foo で、これは foo パッケージの全ファイルが当初インストールされたときのままであることを検証します。例えば、

すべてが正常に検証された場合は何も出力されません。矛盾があった場合は、それが表示されます。出力のフォーマットは 8 字の文字列であり、「c」 は設定ファイルを表し、ファイル名が続きます。8 文字の各文字は、ファイルの属性の 1 つと RPM データベースに記録されたその属性の値を比較した結果を表します。ピリオド (.) 1 つの場合、テストに合格したことを表します。以下の文字は、何らかのテストで不合格になったことを表します。

情報が出力された場合は、良く考えて、パッケージを削除するのか、再インストールするのか、または問題を修正するのかを判断してください。