LinuC レベル1(LPIC-1対応)対策
RPM系パッケージ
101 試験は Debian 系と RPM 系の両方が範囲です。Debian 系だけ触ってきた人には、ここが最大の穴になります。
このコースの演習サンドボックスは Debian 12 で、rpm も dnf も yum も入っていません。ここは実機で確かめられないぶん、オプション文字と意味の対を、表を見ながら手で書き写してください。
-U と -F の違いで1問落とします
| コマンド | 意味 |
|---|---|
rpm -i <file.rpm> | 新規インストール。既に入っていると失敗する |
rpm -U <file.rpm> | アップグレード。入っていなければ新規導入される |
rpm -F <file.rpm> | フレッシュン。既に入っている場合のみ更新する |
rpm -e <パッケージ名> | 削除 (erase) |
-U は「無ければ入れる」、-F は「無ければ何もしない」です。一括更新でパッケージを勝手に増やしたくないときに -F、と覚えると忘れません。導入時は進捗を出す -v と -h を添えて rpm -ivh rpm -Uvh と書くのが慣例で、この形のまま選択肢に出ます。
削除の対象がファイル名ではなくパッケージ名である点も狙われます。rpm -e nginx-1.20.1-1.el9.x86_64.rpm ではなく rpm -e nginx と書きます。
照会は -q の後ろで決まる
出題の中心はここです。
| コマンド | 意味 |
|---|---|
rpm -q <パッケージ名> | 入っているか、バージョン付きで表示 |
rpm -qa | インストール済みの全パッケージを一覧 |
rpm -qi <パッケージ名> | 詳細情報 (information) を表示 |
rpm -ql <パッケージ名> | 提供するファイル一覧 (list) |
rpm -qf <ファイルパス> | そのファイルがどのパッケージのものか (file) |
rpm -qR <パッケージ名> | 必要とする依存を表示 |
rpm -qp <file.rpm> | 未インストールの .rpm ファイルに対して照会する |
-q 系は既定でインストール済みデータベースを見ます。ダウンロードしただけの .rpm の中身を見たいときは -p を足して rpm -qlp foo.rpm と書きます。この p の有無で、見に行く先が変わります。
そのデータベースは /var/lib/rpm にあります。rpm -qa も rpm -qf もここを引くだけで、リポジトリには一切アクセスしません。壊れたときは rpm --rebuilddb で再構築します。パスはそのまま出題されます。
rpm -V <パッケージ名> は導入時の記録と現在のファイルを比べ、変わった属性だけを記号 (S がサイズ、M がパーミッション、5 が MD5、T が更新時刻) で出します。何も出なければ改変されていません。
なお rpm は依存をチェックはするが解決はしないのが要点です。足りなければ止まり、探して入れるのは人間の仕事です。チェックごと飛ばす --nodeps、上書きを強行する --force、可否だけ試す --test も押さえてください。
dnf は rpm の上に乗っています
Debian 系の apt と dpkg の関係が、そのまま dnf と rpm の関係です。dnf はリポジトリを見て依存を解決し、内部で rpm を呼びます。
| コマンド | 意味 |
|---|---|
dnf install <名前> | 依存ごと解決して導入 |
dnf remove <名前> | 削除 |
dnf update (dnf upgrade) | 更新 |
dnf search <語> | 名前と説明から検索 |
dnf provides <ファイルパス> | そのファイルを提供するパッケージを探す |
dnf localinstall <file.rpm> | ローカルの .rpm を依存解決付きで導入 |
dnf provides と rpm -qf は向きが違います。rpm -qf は既に入っているファイルの所属を答え、dnf provides はまだ入っていないものも含めてリポジトリ全体から探します。「このコマンドを使いたいが何を入れればよいのか」は dnf provides です。
yum は RHEL 7 までの主役で、dnf はその後継です。RHEL 8 以降の yum は dnf へのシンボリックリンクなので、サブコマンドはそのまま通用します。リポジトリ設定は /etc/yum.repos.d/ と yum の名前が残ったままです。
RPM パッケージ自体は rpmbuild で作り、その設計図が .spec ファイルです。この名前は覚えておいてください。
復習ミニクイズ
インストール済みパッケージのうち、指定したファイルがどのパッケージに属するかを調べる rpm のオプションはどれですか。