RPM Package Manager

RPM Package Manager (RPM) はレッドハットが開発したソフトウェアのパッケージを管理するためのシステム (パッケージ管理システム)、及びコマンド。以前はRed Hat Package Managerの略だった。".rpm" 拡張子のファイルを利用する。
概要.
主にLinuxのディストリビューションのうち、レッドハットが提供するものだけでなく、独自のカスタマイズを含めながらSUSE Linux、Vine LinuxなどのRPM系ディストリビューションで使われる。
RPMは、パッケージをcpio形式でアーカイブしており、その中には、独自のspecファイル、及びバイナリ、またはソースコードが含まれている。パッケージ管理のためのデータベースにはBerkeley DBを採用しており、インストール時、削除時、パッケージの問い合わせ時にはこのデータベースが利用される。データベース管理のためのコマンドオプションもrpmコマンドに含まれている。
specファイルには、パッケージの名前、概要、依存するパッケージ、バイナリパッケージのインストールパス、インストール前に実行するスクリプト、インストール後に実行するスクリプトなどが書かれている。インストール時には、記載されたスクリプトを実行して、サーバの停止及び復帰、システムユーザーの追加などを行い、システムの安全性を保つ。
specファイルは、宣言部と実行部に分かれている。宣言部には、パッケージの説明的な詳細を書き、実行部は、スクリプトとしての役割を果たしている。
パッケージのインストールには、ローカルパッケージ、及びHTTP、FTPを通じたネットワークからのパッケージに対応している。ただし、依存性の解決は行わず、依存性に欠如があった場合は、ユーザーが独自にパッケージをインストールするか、YUM、APT for rpmといった別のツールを使って解決しなければいけない。独自にソースコードからインストールした場合は、パッケージ管理の対象にならず、この場合は、依存性の解決には利用されない。
RPMは、通常はバイナリのインストールに使われるが、ソースコードからのパッケージ作成もサポートしている。パッケージをspecファイルに従ってその場で作成し、インストールすることになる。
RPMは、C言語で書かれ、C言語、Java、Perl、Python、Rubyなどの言語バインディングも提供、または独自に作成されており、これにより、コマンド以外からもRPMのパッケージを扱うことが出来る。