RPM (Red Hat Package Manager) を使用したソフトウェアの保守
RPM は、個々のソフトウェア パッケージのビルド、インストール、クエリ、検証、更新、およびアンインストールに使用できる強力なソフトウェア マネージャーです。 RPM パッケージは、ファイルのアーカイブと、名前、バージョン、説明、他の RPM パッケージへの依存関係に関する情報などのパッケージ情報で構成されます。
RPM は、Red Hat 固有のツール以上のものです。 Ubuntu や SuSE など、他の多くの最近のディストリビューションも RPM を使用しています。 RPM を使用する利点は次のとおりです。
- ソフトウェアの配布、インストール、アップグレード、削除の簡素化
- 保証:
- 必須ソフトウェアがシステムにインストールされている
- 必須ソフトウェアのバージョンは互換性を維持します。
- ローカルで変更された構成ファイルは、RPM の更新時にクロブされません。
- パッケージが後で削除された場合、ローカルで変更された構成ファイルは「.rpmsave」サフィックスで保存されます。
- インストールされたソフトウェアが変更、修正、破損、または変更されていないことを証明できます。
RPM は、インストールされたパッケージに関する情報を「/var/lib/rpm」ディレクトリの下に保持します。 RPM ツールのコンポーネントは次のとおりです。
- 個々の RPM から収集された、システムにインストールされているすべてのソフトウェアに関する情報を含むカスタム データベース。
- 「/bin/rpm」実行可能ファイル
- 利用可能な RPM パッケージのインターネット アクセス可能なリポジトリ
RPM パッケージの種類
RPM パッケージには次の 2 つのカテゴリがあります。
1.ソース
2.バイナリ
ソース RPM
ファイル名が文字列「.src.rpm」で終わるため、ソース RPM は常に認識できます。ソース RPM には、元のプログラム ソース コード ファイルだけでなく、コードの自動再コンパイル、自動インストール、および自動削除を可能にするスクリプトも含まれています。ソース RPM にはエンドユーザーの実行可能ファイルはありません。通常、ソース RPM に関心があるのは開発者だけです。
バイナリ RPM
バイナリー RPM には、RPM のエンドユーザー構成要素が含まれています。バイナリ RPM ファイル名は、コンテンツのホスト アーキテクチャを識別します。たとえば、バイナリ RPM ファイル:
bash-3.1-16.1.x86_64.rpm
– 64 ビット Intel X86 アーキテクチャ CPU でのみ使用可能なファイルが含まれています。その他の一般的なアーキテクチャ値には、32 ビット Intel ホストの「i386」が含まれます。一部のバイナリ RPM は、ファイルが任意のホストで機能するため、任意の CPU アーキテクチャにインストールできます。これらの「.noarch.rpm」パッケージの例は、世界のタイムゾーンに関する情報を含む「tzdata」RPM です。システムをパッケージの最新バージョンに更新するには、最新のバイナリ RPM が必要です。
RPM 命名スキーム
各 RPM パッケージは、1 つのファイルに含まれています。ファイル名には、パッケージの内容を完全に識別するためのいくつかのフィールドがあります。 RPM ツール自体はファイル名自体に依存しませんが、適切なパッケージを識別またはダウンロードするのに役立つファイル名の規則を理解する必要があります。
以下は RPM ファイル名の例です:
bash-3.1-16.1.x86_64.rpm
この RPM は BASH シェル (「/bin/bash」) 用です。ファイル名はいくつかの部分で構成されています:
[name]-[version]-[release].[arch].rpm
ここで:
- [名前] プログラムまたはパッケージの名前です。 [名前] は通常、プログラムの作成者によって割り当てられます。この例では、開発者は面白いと思われる理由から、製品に「bash」という名前を付けることにしました。
- [バージョン] この RPM に含まれるソフトウェアのエディションを識別します。 [バージョン] 番号は、プログラムの作成者によって割り当てられます。 [バージョン] 番号を使用すると、RPM の生成に使用された作成者のソースのバージョンを特定できます。
- [リリース] 著者のソースファイルのバージョンではなく、RPM ファイル自体のエディション番号を提供します。更新された RPM は、作成者のオリジナル ソフトウェアのパッチ バージョンを提供するために発行される場合があります。パッチは元の開発者から提供されたものである必要はないため、RPM [リリース] は [バージョン] ではなく増分されます。
- [アーチ] RPM の内容を記述し、このファイルに製品ソース (「.src.rpm」)、アーキテクチャに依存しないファイル (「.noarch.rpm」)、または特定のホストにのみインストールできるファイルが含まれているかどうかを示します。タイプ (「.sh.rpm」は、STRONGHOLD 組み込みプロセッサでのみ機能します)。
ファイルのインストールと削除
通常、一度にインストールできる RPM の [バージョン] または [リリース] は 1 つだけです。新しいバージョンは、通常、「-i」RPM 関数の代わりに「-U」(更新) RPM 関数を使用してインストールされます。唯一の RPM ルールの一般的な例外は、カーネル RPM です。通常、システムには複数のバージョンのカーネルがインストールされています。 RPM には、複数のバージョンがインストールされている可能性がある RPM のリストがあります。複数のバージョンがインストールされているときに 1 つのバージョンを削除するには、パッケージ名とバージョンを完全に指定する必要があります。
x86_64 アーキテクチャでは、32 ビットと 64 ビットの両方のアプリケーションをサポートするために、32 ビットの「.i386」と 64 ビットの「.x86_64」RPM パッケージの両方をインストールするのが一般的です。通常、RPM はクエリでパッケージのアーキテクチャを表示しませんが、手動で表示できます。
インストールと削除
- rpm -i または –install ### (新しい RPM をインストールします。既にインストールされている場合はエラーになります)
- rpm -U または –upgrade ### (既存の RPM がある場合は削除し、新しいものをインストールします)
- rpm -F または –freshen ### (パッケージが既にインストールされている場合のみ RPM を更新します)
- rpm -e または –erase ### (削除、削除、消去)
共通オプション
- 出力 :-v (詳細 - ファイル名)、-h (ハッシュ)
- 前提条件 :–nodeps、–replacefiles、–force (ここで注意してください!!!)
- 引っ越し :–excludepath、–prefix、–relocate、–badreloc、–root
- URL のサポート :ftp、http
例:
rpm -ivh binutils-2.11.90.0.8-12.i386.rpm rpm -Uvh finger-0.17-9-i386.rpm rpm -Fvh ftp://updates.redhat.com/current/i386/*.rpm rpm -e diffutils rpm -e kernel-enterprise-2.4.9-e.12
ヒントとコツ
– 「-U」オプションを使用して新しいカーネル RPM をインストールしないでください。
– 「-U」更新機能は、最初に現在の RPM をシステムから削除してから、新しい RPM のインストールを試みます。新しい RPM のインストールを妨げる問題があると、システムは起動できなくなります。これは望ましくないため、常に「-i」スイッチを使用してカーネル RPM をインストールしてください。
クエリ (パッケージおよび/または情報)
インストールされているパッケージに関する情報を取得するには、クエリを使用します。インストールされているすべてのパッケージに対してクエリを実行することも、単一のインストールされたパッケージに対してクエリを実行することもできます。また、特定のファイルを提供する RPM を見つけることもできます。
- rpm -q [パッケージ] [情報]
- rpm -qa
- rpm -q package_name
- rpm -qf [ファイル名]
- rpm -qp [パッケージ ファイル名]
情報
デフォルト (パッケージ名)
-i :一般情報
-l :ファイル一覧
例:
rpm -qa rpm -q kernel -i (information) rpm -q kernel -l (files contained in package) rpm -q kernel --requires (prereqs) rpm -q kernel --provides (capabilities provided by package) rpm -q kernel --scripts (scripts run during installation and removal) rpm -q kernel --changelog (revision history) rpm -q kernel -queryformat format (rpm --querytags for list of options)
ヒントとコツ
– 正確な名前がわからない場合に特定の RPM パッケージを検索する場合、次のようなコマンド パイプライン:
$ rpm -qa | grep foo
が一般的に使用されます。 RPM ツールの新しいバージョンでは、これを次のように簡潔に行うことができます:
$ rpm -qa '*foo*'
クエリ – 検証 (ファイル)
RPM データベースには、RPM によってインストールされたすべてのファイルに関する多くの属性が含まれています。パッケージのインストール時に RPM によってカタログ化された情報に対して、ファイルの現在のステータスを確認できます。
- rpm -V パッケージ名
- rpm -Va (すべてを確認)
- rpm -Vf (ファイル名)
- rpm -Vp (パッケージ ファイル名)
多くの Linux ディストリビューションには、「プレリンク」が含まれています アプリケーションのプログラム ファイルに特別な情報を直接追加することで、共有ライブラリ (ほとんどのアプリケーションは少なくとも 1 つの共有ライブラリを使用し、場合によっては数十の共有ライブラリを使用します) を使用してアプリケーションを起動するのに必要な時間を短縮しようとする RPM。
この情報を追加すると、アプリケーションの起動が速くなりますが、ファイルの変更により、RPM データベース内のほとんどのファイル属性 (最終ファイル変更日、ファイル サイズ、ファイルの MD5 チェックサムなど) が無効になります。
クエリ – 検証 (パッケージ)
以下は、パッケージ検証用の RPM クエリです。
- rpm -import /mnt/cdrom/RPM-GPG-KEY
- rpm -q gpg-pubkey
- rpm –checksig m4-1.4.1-11.i386.rpm
例:
rpm -qf /path/filename (what package owns filename) rpm -qf /path/filename -i (what does it do) rpm -qp m4-1.4.1-11.i386.rpm -l (files in m4) rpm -qp m4-1.4.1-11.i386.rpm --requires (prereqs needed to install m4) rpm -q --whatprovides glibc.so (what package provides requisite library)