はじめて勉強したときパッケージ管理のrpmとyumは違いがよくわからないかもしれない。rpmは個々のパッケージを、yumは依存関係をまとめて管理できるものだ。
このページではrpmとyumの違いについてもう少し詳しく説明しよう。
目次
rpmとyumの違い
入門者の方はCentOSやFedoraに触れたとき、「rpm」と「yum」(もしくはdnf)といった単語を目にするだろう。どちらも「パッケージを管理するコマンド」という事には間違いない。
しかし、「なぜ二つもパッケージを管理するコマンドが用意されているのか?」という疑問が思い浮ぶ方が多いようだ。
結論から先に。
「rpmとはパッケージ個々」であり「yumはrpmを管理するマネージャ」である。両者共にパッケージを管理しているが、言わば管理する単位とその立ち位置が違う。
rpmファイルも個々に依存関係を記述したファイルを内包しているが、自動的に依存関係を管理してインストールするというものではない。あくまでも単体のパッケージである。
そのrpmパッケージを統合管理するのが「yum」の役割となる。リポジトリという、rpmがほうりこまれているプールのなかを検索しrpm個々の情報を参照して依存関係を解決し統合的な管理をするのが「yum」となる。
基本的にyumを使用する事が多い
基本的にユーザはyumごしにrpmを半自動でインストールすることがほとんどだろう。
リポジトリレベルでrpmパッケージを管理するので、インストールしていないパッケージに関しても情報が参照できる。内包している情報量も多い。
逆にrpm個々に触れる場面は独自のrpmパッケージを作成した場合や、個々のパッケージをカスタマイズしたい場合、メーカからのデバイスドライバ単体などをインストールする場合などがほとんどだ。
使い分けとしては、
- パッケージ個々をカスタマイズしたり単発なパッケージをインストールする場合、個々のファイル一覧を取得したいなどのときは、rpm コマンドを使用する
- 日常ではyumでリポジトリから依存関係を管理インストールする
というのが一般的だろう。
それぞれの特徴
rpmはパッケージ個々の情報を細かく管理できる。
一方yumはリポジトリ内の情報などを統合管理してrpmだけでは難しい依存関係の自動解決なども行ってくれる。
rpm(個々のパッケージを扱う)
- 管理はパッケージ個々単位であり依存関係は自動解決されない
- パッケージ単位での管理となるので「rpm」など「.rpm」ファイルを指定する。
- 個々の細かいファイル情報も参照できる。
- リポジトリに依存しない。
- 個々で管理するときはrpmコマンドを使用する。
- 依存関係を自動解決させたいのなら、yumリポジトリに投入する必要がある。
yum(リポジトリから依存関係を含めて管理する)
- 基本的にリポジトリの中のrpmを統合管理しており依存関係を自動解決してくれる。
- インストール時は基本的に「yum search」でヒットする名前を指定すればよい。
- リポジトリ上に存在しているインストールしていないパッケージの検索や情報閲覧が可能となっている。
- ディストリビューション内のパッケージのアップデートもyumを使用する。
実際にrpmとyumを使用してみる
基本的にyumを使用すれば問題ない。特にアップデート作業はyumに任せた方が安全だ。
パッケージ個々のファイルリストなどはrpmコマンドを使用して管理しよう。
システムにインストールされたパッケージをアップデートする
システムにインストールしたパッケージを全てアップデートするときは、yumコマンドを使用する。rpmは個々のパッケージを扱うため、こういった依存関係や全体の管理などはyumが役割をはたす。
# yum update
パッケージ個々のアップデート
「yum update」を使用している時点であまり出番はないが、パッケージ単位で個々にアップデートする場合、など「rpm -Uvh」としてアップデートする。しかし安易にシステムのパッケージを個別にアップデートすると、依存関係が破綻するので、アップデート作業はyumに一任したほうがよいだろう。
# rpm -Uvh <rpmパッケージ名>
インストール
rpmでのパッケージ単位でのインストールは、依存関係を解決してくれないことに気をつけよう。
# rpm -ivh <rpmパッケージ名>
yumでは指定したパッケージをインストールする段階で依存関係を全て自動解決してくれる。
# yum install <パッケージ名>
パッケージの検索
rpmではインストールされているrpmパッケージを検索できる。あくまでもローカルにインストールされているrpmパッケージを検索する。
$ rpm -qa <キーワード>
yumではキーワードにヒットするものをリポジトリから検索して結果を表示してくれる。関連するパッケージも芋ずる式にヒットする。またパッケージの概要なども表示してくれる。
# yum search <キーワード>
パッケージ個々の情報表示
パッケージ個々の情報表示はrpmコマンドを使用した方が詳細が表示される。いつパッケージをインストールしたか?いつビルドされたものなのかまで詳しく表示してくれる。
$ rpm -qi <rpmパッケージ名>
rpmコマンドではインストールされるファイル一覧も表示できる。
$ rpm -ql <rpmパッケージ名>
# yum info <パッケージ名>
リポジトリの部分はインストール済みのパッケージは「installed」と表記される。
インストールされていないパッケージはどのリポジトリにそのパッケージがあるのかを表示してくれる。
パッケージを削除
あくまでもパッケージ単体の削除となる、安全な依存関係の解決はしてくれない。
# rpm -e <rpmパッケージ名>
アンインストール時に依存関係を考慮して安全に削除する
# yum remove <パッケージ名>
rpmとyumの参考情報
下記にrpmやyumの詳細な情報はまとめている。よろしければご確認いただければと思う。
まとめ
このページではrpmとyumの違いについてお伝えした。なんとなく判別できるようになったのではないだろうか?
参考にしていただければ幸いだ。
コメント