Redhat系

【Linux初心者向け】rpmコマンドの使い方を解説

ご覧いただきありがとうございます。「server-beginner」を運営しているミツです。

今回の記事ではRedhat系LinuxOSで利用される、パッケージ操作コマンド「rpmコマンド」について解説していきます。

みなさんLinuxで普段はどのようにパッケージをインストールしていますか?

どの方法で?

・パッケージをダウンロードしてインストーラでプログラムをクリック

・dnfやyumコマンドで依存関係全部解消して楽々にインストール

といった方法などがあるかと思います。

私は依存関係も自動で解消してパッケージをダウンロードしてくれるdnfコマンドを使用しています。

ただ商用環境や検証環境で必要最低限のものだけで検証したい場合は、rpmコマンドを使用しています。

rpmはコマンドラインでパッケージを指定して、パッケージをインストールします。

非常にシンプルで多機能ですが、オプションが多く、使いこなすには慣れが必要です。

ですが、オプションすべてを覚える必要はなく、初心者がよく使う組み合わせてを抜粋して実行例にて紹介しております。

そのため、ぜひ最後までご覧いただけますと幸いです。

rpmコマンドとは

rpm(Redhat Package Manager)コマンドはRPM形式のパッケージを操作するコマンドです。Redhat系(Rocky LinuxやCentosなど)のLinuxではrpmパッケージを利用してパッケージをインストールします。

Linux

rpmコマンドはインストールや削除など非常に多機能で便利です。

指定したパッケージのみをインストールし、パッケージの間の依存関係やファイルの重複などもチェックしてくれます。

ただ注意点として、チェックするだけで依存関係は自分で解消する必要があります。

依存関係が解消できないと指定したパッケージがインストールできないため、ライブラリまたはパッケージを調べる必要があります。

RPMコマンドポイント

・RPMパッケージに関する操作ができる

・dnfやyumコマンドと違い、指定したパッケージのみインストールする

・依存関係のチェックはするが、自動解決はしない

・依存するライブラリやパッケージは自分で探す必要がある

 

依存関係を自動で解消し、インストールしたい場合はdnfコマンドを利用します。

過去執筆した記事がありますので、下記URLをご参考ください。

.rpmパッケージの種類

拡張子「.rpmのパッケージ」をインストールするにあたって以下2つのパッケージがあります。

rpmパッケージ(バイナリ)

ソードコードがコンパイル済みRPMパッケージです。

RedHat系のパッケージは”rpm”という拡張子で区別され、ファイル名は”ー”で区切られた以下のような情報により構成されています。

今回の例ではopenssh-serverパッケージを例として、下記のような書式になっています。

パッケージ

パッケージファイルネーム:openssh-server-8.0p1-6.el8_4.2.x86_64.rpm

パッケージ名:openssh-server

パッケージのバージョン:8.0p1

パッケージリリース:6.el8_4.2

アーキテクチャ:x86_64

コマンドの書式&オプション

それでは、書式、オプション、実行例を紹介していきます。

書式

rpm [オプション] パッケージ名

オプション

操作オプション 説明
-i 指定したパッケージファイルをインストールします
-e  package_name パッケージpackage_nameを削除します
-U 指定したパッケージをアップグレードするかパッケージをインストールする。新しいバージョンをインストールすると古いパッケージは削除されます。
-F 以前のバージョンが現在インストールされている場合にのみパッケージを更新する
-h(—hash) アスタリスクで、インストール進行状況を表示します
-v 詳しい情報を表示します
--percent インストールの進行状況をパーセンテージで表示します
--test 実施にはインストールせず、衝突してしまう可能性のあるファイルをチェックして表示します
--replacepkgs インストール済みのパッケージを無視してインストールします
--replacefiles ファイルの重複を無視してインストールする
--oldpackege ダウングレードを許可し、インストールします。ですが、パッケージにより依存関係や競合問題が出る場合があります。
--force 依存関係等でインストールできない際に、強制的にパッケージをインストールすることができます
情報検索オプション
-q パッケージに関する情報を表示します
-f ファイルが含まれていたパッケージに関する情報を表示します
-i パッケージに関する情報を表示します
-a インストール済みパッケージを全て表示します

実行例

指定したパッケージをインストールする

パッケージをインストールするには「-i」を使用します。

「-i」だけだとコマンド実行後プロンプトしか帰ってきません。

そのため進行状況と詳細情報を表示するために、-v,-hを合わせて使用します。

#rpm -ivh パッケージ名

ポイント

RPMパッケージにGnuPGを使った署名が行われていない場合出る警告です。

ただインストールが失敗することはありませんので、気になる場合は、 「--nosignature」オプションを付けてrpmコマンドを実行する必要があります。

#rpm ivh --noeignature パッケージ名

インストール済みのパッケージを削除します

指定するパッケージはインストールされているrpmパッケージを指定します。

#rpm -evh パッケージ名

インストール済みのパッケージをすべて表示します

インストール済みのパッケージを表示するには「-qa」を利用します。

#rpm -qa パッケージ名

「-qa」だけではインストール済みのパッケージがすべて表示されてしまいます。

特定のパッケージを調べるには「grep」コマンドを利用して検索します。

#rpm -qa | grep パッケージ名

パッケージに含まれるファイルをすべて表示します

パッケージに含まれるファイルをすべて表示します。

インストール前にどういったファイルがインストールされるか、どこに配置されるかなど調べることができます。

#rpm -qlp package.rpm

ファイルが入っていたパッケージに関する情報を表示します

指定したファイルが入っていたパッケージに関しては「-qif」を指定します。

例えば特定のファイルが破損した場合再インストールしたい場合に、どのパッケージからインストールすれば良いか調べることができます。

#rpm -qif パッケージ名

パッケージの詳細情報を調べます

パッケージの詳細情報を調べるには「-qip」を利用します。下記例ではopenssh-serverがどういったパッケージなのか調べています。

#rpm -qip パッケージ名

パッケージをインストールする前に、パッケージに関する情報を知ることができます。

パッケージ名だけでどういった役割をしているかわからない場合は、summaryとDescriptionをチェックします。

パッケージをアップグレード

パッケージがない場合

古いパッケージがない状態で、「-U」を利用すると新規インストールします。

#rpm -Uvh パッケージ名

古いバージョンのパッケージがインストールされている場合

逆に古いバージョンのパッケージがインストールされている場合に「-U」を使用すると古いパッケージは削除され、新しいバージョンがインストールされます。

強制的にインストール

古いバージョンのパッケージをインストールする場合、パッケージが依存しているライブラリや、パッケージが依存性の欠如でインストールできない場合があります。

そのため必要に応じて関連ライブラリやパッケージなどダウンロードしてくる必要があります。

ですが依存を解消したとしても、新しいバージョン別のパッケージと競合したり、不具合の元となります。

そのためバージョン別にインストールするのではなく、どのバージョンを使うか検討した上で使用することが大事です。

依存関係無視してインストールしたい場合は「--force --nodeps」を利用します・

rpmパッケージの場所がわからない時

パッケージをダウンロードする時、ログインしているユーザのダウンロードディレクトリにファイルが格納されます。

どこにあるかわからない場合はfindコマンドで調べることができます。

#find / -name ¥*.rpm

findコマンドの使い方については過去執筆しているので、興味ある方はぜひご参考いただければと思います。

まとめ

本記事は以上となります。

Redhat系OSにて新しいパッケージのインストールや削除をする場合に、rpmコマンドを利用します。

多機能で柔軟な使い方もできるので、ぜひ試して見てください!

商用環境ではどう使われる?

商用環境のサーバでは不要なパッケージやサービスは、インストールや起動しないようにします。

そのため必要最低限のパッケージをインストールする場合に、rpmコマンドを利用します。

dnfコマンドは個人や会社での検証環境で検証する際に利用します。

ただrpmコマンドは状況に応じて使い所が変わってくるので、柔軟使っていってください。

書籍でも豊富に情報があるので、ぜひ色々試していってください。

  • この記事を書いた人
  • 最新記事

ミツ

サーバ初心者向け「server-beginner」を運営する「ミツ」と申します。 Linux系やwindows系などのサーバに関する部分をメインで執筆していきますので、興味ある方はぜひご覧いただけますと幸いです。 <経歴> 専門学校卒業後、ネットワーク、インフラ、プログラミングを一通り経験。 当メディアでは主にLinux分野に関する内容を発信していきます。

-Redhat系