IT技術・ノウハウ

【LPIC101】間違えやすいパッケージ管理コマンドのオプション一覧

2021年8月14日

こんにちは。
今回は、LPIC101の試験対策として、間違えやすいパッケージ管理コマンドのオプション/サブコマンド一覧を紹介します。

というのも、僕は今絶賛LPIC101の試験対策をしているところなのですが、
パッケージ管理コマンドのオプションに関する練習問題の正答率が異常に低いんです。
いやだって、パッケージ管理コマンドだけでもいっぱいあるのにオプションなんて覚えられるわけなくないですか?

そこで、一度パッケージ管理コマンドについては全部整理整頓してしまおうと思った次第です。
試験対策で困っている人の助力になれば幸いです。

試験範囲のコマンド

試験範囲に含まれるコマンドは、大きく分けるとdpkg, apt, rpm, yumです。
細かく取り上げると、dnf, zypper, apt-get, apt-cacheなどもあります。

dpkgとaptがDebian系のディストリビューションで使われ、
rpmとyumがRedHat系のディストリビューションで使われます。

dpkg

Debian系のディストリビューションで使われるコマンドです。

オプション

オプション説明
-Eすでに同じバージョンのパッケージがインストールされている場合、パッケージをインストールしない。
-Gインストール済のパッケージのバージョンの方が新しければ、パッケージをインストールしない。
-R (--recursive)指定したディレクトリを再帰的に検索し処理を行う。
-i (--install)パッケージをインストールする。
-r (--remove)インストール済のパッケージを削除する。設定ファイル (conffile) を除いたすべてを削除する。
-P (--purge)インストール済のパッケージを削除する。設定ファイルを含むすべてを強制削除する。
-l (--list)指定したパターンにマッチする名前のパッケージの一覧を表示する。
-S (--search)指定したファイルがどのパッケージからインストールされたか検索する。
-L (--listfiles)システムにインストールされたファイルの一覧を表示する。
-s (--status)指定したパッケージの状態を報告する。
--configure展開済だが未設定のパッケージを設定する。
--unpackパッケージを展開するが、設定はしない。
https://manpages.debian.org/wheezy/dpkg/dpkg.1.ja.html より

補足

Debian系で使われるコマンドです。

基本的には、ハイフンが一つで大文字に、ハイフンが二つで小文字といった起用になります。
ですが、installやremoveなど、ハイフンに限らず小文字なので注意が必要です。

個人的にややこしいポイントは、listとlistfilesの組みと、removeとpurgeの組みです。

listfilesはあくまでファイルの一覧を対象にし、listはパッケージの一覧を対象とします。
fileの文言があるかないかで識別すると良さそうです。
また、-lと-Lはもうそういうもんだと割り切って覚えるしかなさそうです。

removeとpurgeも削除という意味合いでは同じですが、設定ファイルを残すかどうかで異なります。
removeは設定ファイルを残し、purgeは設定ファイルも削除します。
purgeは日本語訳すると清める・浄化する・粛清するという意味だそうなので、removeよりも強い意味合いと捉えると覚えやすいかもしれません。
後述のaptもこの法則を引き継ぎます。

オプションにはないですが、関連コマンドとしてdpkg-reconfigureコマンドがあります。
dpkg-reconfigureコマンドで対話的な設定ができますので、合わせて覚えておくと良いです。

apt

オプション/サブコマンド

オプション説明
-c使用する設定ファイルを指定する。
-dインストールはせずに、ダウンロードを行う
-y自動で「yes」と回答する。
--no-install-recommends必須ではない推奨パッケージはインストールしない。
--install-suggests提案パッケージもインストールする。
--reinstallインストール済みパッケージの再インストールを許可する。
https://atmarkit.itmedia.co.jp/ait/articles/1708/31/news017.html より
サブコマンド説明
updateパッケージリストを更新する。
isntallパッケージのインストール。
removeパッケージのアンインストール。
purgeパッケージと設定ファイルを削除する。
upgrade更新可能なパッケージをアップデート。
full-upgradeパッケージの削除も伴う可能性のあるアップデートを行う。
showパッケージについての詳細な情報を表示する。
listパッケージのリストを表示する。
list --installedインストールされたパッケージを一覧表示する。
list --upgradableアップグレード可能なパッケージを表示する。
serach指定したキーワードでパッケージ情報を全文検索する。
dependsパッケージの依存関係を表示する。
autoremove必要とされていないパッケージを自動的に削除する。
https://www.server-world.info/command/html/apt.html より

補足

Debian系で使われるコマンドです。
後述のapt-getとapt-cacheを合わせたコマンドで、利用が推奨されています。

この中でややこしいのは、updateとupgradeですね。
updateはインストール可能なパッケージの一覧を更新します。
upgradeはインストール済みのパッケージ更新を行い、新しいバージョンにアップグレードします。
upgradeはパッケージ更新をするオプションですが、その更新のために有効なパッケージ一覧を元に実行されます。
そのため、upgradeはupdateを実行した後に行うのが一般的みたいです。
Linux Ubuntu ー apt-get update / upgradeの違いを参考にしました。
この法則はapt-getにも引き継がれます。

listに対して、ハイフンが2つあるオプションが2つあります。
installedとupgradableと見慣れないオプションですので、逆に覚えやすいかと思います。

dependsも何故か複数形なのも微妙に引っかかりやすいので注意が必要です。

apt-get

オプション/サブコマンド

オプション説明
-dパッケージファイルのダウンロードだけ行う。展開やインストールはしない。
-s処理のシュミレーションを行う。
cleanaptを使用してローカルホストに蓄えられたrpmファイルを削除します。
dist-upgradeパッケージを更新する。
installパッケージをインストールする。
removeパッケージを削除します。
updateインデックスファイルの更新をする。
upgradeサーバに対して、インストールされている全てのパッケージの更新の確認を行い、新バージョンが存在するパッケージがインストールする。
https://www.itsenka.com/contents/development/unix-linux/apt-get.html より

補足

Debian系で使われるコマンドです。
aptに含まれるパッケージのインストール・アップグレード・アンインストールなどを行います。

基本的にaptと同じです。
cleanがありますが、dpkgでいうところのpurgeみたいな感じですかね。

dist-upgradeは、upgradeに加えてインストールされているカーネルとディストリビューションの更新も行います。

apt-cache

サブコマンド

サブコマンド説明
search指定した文字列を含むパッケージ一覧を表示する。
show指定したパッケージの詳細情報を表示する。
showpkg指定したパッケージのバージョンや依存関係などの情報を表示する。
depends指定したパッケージの依存関係としれを満たすパッケージ一覧を表示する。
https://webkaru.net/linux/apt-cache-command/ より

補足

Debian系で使われるコマンドです。
aptに含まれるパッケージ情報を紹介・検索するコマンドを行います。

サブコマンドにはハイフンや大文字がないので、注意が必要です。

aptのsearchとapt-cacheのseachは同じ意味みたいですので、apt-cacheだからといった新たに覚えるものはshowpkgぐらいですかね。

rpm

オプション

オプション説明
-i (--install)パッケージのインストール。
-U (--upgrade)パッケージのアップグレード。なければインストール。
-F (--freshen)パッケージのアップグレード。なければインストールしない。
-e (--erase)パッケージのアンインストール。
-qa (-all)インストール済みの全てのパッケージを表示。
-qpパッケージファイルを指定する。
-qc (--configifiles)パッケージの設定ファイルのみを表示。
-qd (--docfiles)パッケージのドキュメント・ファイルのみ表示。
-qi (--info)パッケージの詳細情報を表示。
-ql (--list)パッケージのパッケージ内にある全ファイルを表示。
-qR (--requires)パッケージの依存関係を表示。
-q --changelogパッケージの変更履歴を表示。
https://xtech.nikkei.com/it/article/COLUMN/20070730/278583/ より

補足

RedHat系で使われるコマンドです。

-i, -U, -F には、さらに併用するオプションがあり、それが以下の通りです。

-v詳細情報の表示。
-h (--hash)進行状況を表示。
--nodeps依存関係を無視する。
--test実際には実行せずに、テスト実行する。
https://xtech.nikkei.com/it/article/COLUMN/20070730/278583/ より

rpmのオプションは基本的にハイフンがつくみたいです。
また、それらを組み合わせて使うことが多いので、覚えるのは結構骨が折れますね。

削除の意味では、他のコマンドとは異なりremoveではなくeraseになっているので注意が必要です。

upgradeとfreshenの違いも注意が必要です。
upgradeはなければインストール、freshenはなければインストールをしない。です。
freshenは日本語訳すると、さっぱりする・元気になる・新しいものに代えるという意味です。

依存関係についても、dependsではなくrequiresと英単語が違うので注意が必要です。
また、同じく複数形です。

yum

サブコマンド

サブコマンド説明
check-updateアップデート可能なパッケージを表示する。
updateパッケージのアップデート。
installパッケージのインストール。
removeパッケージのアンインストール。
infoパッケージの一覧表示。(バージョンとインストール済みかどうか)
repolistリポジトリ一覧の表示。
searchパッケージ情報をキーワードで検索。
search allパッケージ情報をキーワードで検索。(パッケージ名、説明文)
grouplistパッケージグループの一覧表示。
groupinstallパッケージグループのインストール。
https://www.infraeye.com/study/linuxz8.1.html より

補足

RedHat系で使われるコマンドです。

一番クセがない....ですかね。
check-updateサブコマンドが他にないですかね。

check-updateはハイフンが間に入りますが、grouplistとgroupinstallにはハイフンが間に入らないので注意が必要です。

dnf

サブコマンド

サブコマンド説明
check-updateインストール済みのパッケージで更新可能なアップデートを確認する。
cleanキャッシュデータの削除する。
upgrade (update)パッケージを更新する。パッケージを指定しなかった場合はインストール済みの全パッケージが対象となる。
install指定したパッケージに加え、依存関係があるパッケージもインストールする。すでにインストールされていた場合は更新する。
removeパッケージを依存関係のあるパッケージとともに削除する。
infoパッケージの情報を表示する。
listパッケージを一覧表示する。
search指定した文字列でパッケージの詳細を検索する。
historyパッケージのインストールや削除の履歴を表示する。
updateinfoリポジトリの更新情報を表示する。
https://atmarkit.itmedia.co.jp/ait/articles/2001/09/news018.html より

補足

RedHat系で使われるコマンドです。

基本的にはyumコマンドと同じ使い方ができます。
dnfだけが使えるサブコマンドとしては、clean, upgrade, history, updateinfoになります。
(逆に、yumだけで使えるサブコマンドは、repolist, search all, groups list, groups installです。)

zypper

サブコマンド

サブコマンド説明
install (in)指定したパッケージをインストールする。
remove (rm)指定したパッケージをアンインストールする。
info指定したパッケージの情報を表示する。
update (up)指定したパッケージをアップデートする。
list-updates (lu)利用可能なパッケージの更新一覧を表示する。
dist-upgrade (dup)ディストリビューションをアップグレードする。
serach (se)検索後が名前の一部に含まれるパッケージを表示する。
https://ja.opensuse.org/SDB:Zypper_%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9 より

補足

openSUSEで、RPMと併用して使われます。

それぞれのサブコマンドを2,3文字で省略できるのが特徴かなと思います。
それ以外は割と素直なので覚えやすいかなと思います。

最後に

というわけで、自分の頭の中の整理も兼ねてパッケージ管理コマンドを紹介しました。
実用的かはさておき、LPICの試験対策という観点でまとめたものですので、その点ご了承ください。

参考にした書籍はLinux教科書 LPICレベル1 Version5.0対応です。
ちょうど良い情報量でまとまっていて読みやすいのでおすすめです。

ここまで読んできただき、ありがとうございました。

-IT技術・ノウハウ
-, , , ,