LPICやLinuCのレベル1の試験範囲に「パッケージ管理システム」というものがあります。
dpkg、apt、rpm、yum、などのコマンドもたくさん出てくるので、勉強し始めた人にとってはよく分からなくなる分野ではないでしょうか。
パッケージ管理システムとは、分かりやすく言うと「Linuxにおけるソフトをインストールする仕組み」です。
PCソフトのインストーラや、MacのHomebrew、プログラミング言語Pythonのpipなどもパッケージ管理システムです!
Linuxの世界では、コマンドを使ったパッケージ管理システムでインストールやアンインストールなどを行います。
CentOSやUbuntu、Fedoraなど、LinuxのOSによってパッケージ管理システムも様々です。
今回は、LPICレベル1でもつまづく人が多い分野であるパッケージ管理システムについて説明します。
目次
パッケージ管理システムを理解する流れ
パッケージ管理システムを攻略する流れとしては以下のような手順を踏むのが良いかと思います。
- 「パッケージ管理システム」について知る。
- Linuxの代表的ディストリビューションであるDebian系とRedHat系のパッケージ管理システムについて知る。
- 実際にコマンドを打ったり、問題を解いて覚える。
パッケージ管理システムとは
プログラム本体、ライブラリや設定ファイル(プログラムが動作するのに必要)、ドキュメント(手順書 or マニュアル)を1つにまとめたものを「パッケージ」と言います。
パッケージ管理システムとは、パッケージのインストールやアンインストール、アップデート、パッケージ同士やライブラリの競合、依存関係を管理するシステムです。
- パッケージのインストール、アンインストール(削除)、アップデート(更新)
- パッケージの依存関係の管理
パッケージの依存とは、インストールしようとするパッケージが、特定のパッケージがないシステムでは正しく動作しないこと。 - パッケージの競合関係の管理
パッケージの競合とは、インストールしようとするパッケージが,特定のパッケージがインストール済みのシステムでは正しく動作しないこと。 - リポジトリの管理
リポジトリとは「保管場所」の意味。インターネット上にあるLinuxパッケージの配布場所のことです。Apple StoreやGoogle Playみたいなもの。
Linuxのパッケージ管理システム
Linuxのパッケージ管理システムには代表的なものとしてDebian系とRedHat系があります。
分類 | 主なディストリビューション | コマンド |
Debian系 | Ubuntu など | dpkg, apt |
RedHat系 | CentOS など | rpm, yum, dnf |
以下の表は、各コマンドの由来や、関係性をまとめたものです。
コマンド | 略語の由来 | 説明 |
dpkg | Debian Package | Debian系、rpmと同等。 オプションを使って操作する。 例:dpkg -i ***, dpkg –install *** |
apt | Advanced Package Tool | Debian系、yumと同等、dpkgの拡張版。 コマンドを使って操作する。 例:apt-get install ***, apt-cache show *** |
rpm | Redhat Package Manager | RedHat系、dpkgと同等。 オプションを使って操作する。 例:rpm -q ***, rpm –query *** |
yum | Yellowdog Updater Modified | RedHat系、aptと同等、rpmの拡張版。 コマンドを使って操作する。 例:yum install ***, yum remove *** |
LPICの勉強では、ある程度どんなコマンドがあるか把握した後は、以下のような学習方法がおススメです。
- 各コマンドの内容と英語の意味を照らし合わせながら覚える。
- Ping-tなどで問題を何回も解く。
- 自分のPCにUbuntuやCentOSの仮想マシン環境を作って、実際にコマンドを打ちながら覚える。
パッケージ管理コマンドの比較表
Debian系とRedHat系のコマンドを比較した表を作ってみました。
学習を進めるうえでの参考になれば幸いです。
Debian系のパッケージ管理コマンド(dpkgとapt)
dpkgはDebian系パッケージ管理の基本的ツールです。
aptはdpkgを拡張したツールです。
項目 | dpkg | apt |
設定ファイル | /etc/dpkg/dpkg.cfg | |
リポジトリ設定 | /etc/apt/sources.list | |
パッケージの インストール |
dpkg -i (–install) パッケージ名 | apt-get install パッケージ名 |
パッケージの削除 |
dpkg -r (–remove) パッケージ名 ※設定ファイルは残す dpkg -P (–purge) パッケージ名 ※設定ファイルも削除 |
apt-get remove パッケージ名 apt-get clean ※過去ファイルを削除 |
パッケージの更新 | apt-get install パッケージ名 apt-get update apt-get upgrade ※全パッケージのアップグレード |
|
ディストリビューション の更新 |
apt-get dist-upgrade | |
パッケージの インストール (オプション) |
dpkg -Ei パッケージファイル名 ※同バージョンがあるなら何もしない dpkg -Gi パッケージファイル名 ※新バージョンがあるなら何もしない |
|
パッケージの インストール (オプション) |
dpkg -Ri ディレクトリ名 ※再帰的にディレクトリを検索 |
|
インストール済み パッケージを表示 |
dpkg -l (–list) 検索パターン | apt-cache search キーワード |
インストール済み ファイルを表示 |
dpkg -L (–listfiles) パッケージ名 | |
インストール済み パッケージの情報表示 |
dpkg -s (–status) パッケージ名 | apt-cache show パッケージ名 |
指定ファイルがどのパッケージ からインストールされたか表示 |
dpkg -S (–search) 検索パターン | |
インストール未完了の パッケージを表示 |
dpkg -C (–audit) | |
パッケージの依存関係を表示 | apt-cache showpkg パッケージ名 ※dependsとは逆の依存関係を表示 |
|
パッケージの依存関係を表示 | apt-cache depends パッケージ名 |
RedHat系のパッケージ管理コマンド(rpmとyum)
rpmはRedHat系パッケージ管理の基本的ツールです。
yumはrpmを拡張したツールです。
作業項目 | rpm | yum |
パッケージの インストール |
rpm -i (–install) パッケージファイル名 rpm -U (–upgrade) パッケージファイル名 |
yum install パッケージ名 |
パッケージの アンインストール |
rpm -e (–erase) パッケージ名 | yum remove パッケージ名 |
パッケージの更新 | rpm -U (–upgrade) パッケージファイル名 ※なければインストール rpm -F (–freshen) パッケージファイル名 ※なければインストールしない |
yum update [パッケージ名] |
パッケージのインストール (オプション) |
rpm -iv パッケージファイル名 ※詳細情報の表示 rpm -ivh (-iv –hash) パッケージファイル名 ※詳細情報の表示、進行状況を「#」で表示 rpm -i –test パッケージファイル名 ※実際には実行せずテストを実施 rpm -i –nodeps パッケージファイル名 ※依存関係を無視 |
|
パッケージの グループインストール |
yum groupinstall グループ | |
インストール済み パッケージの照会 |
rpm -q (–query) パッケージ名 | yum search キーワード |
パッケージの検査 | rpm -V (–verify) パッケージ名 | |
インストール済み パッケージの表示 |
rpm -qa (-q –all) rpm -Va (-V –all) |
yum list [パッケージ名] |
インストール済み ファイルを表示 |
rpm -ql (-q –list) パッケージ名 | |
インストール済み パッケージの情報表示 |
rpm -qi (-q –info) パッケージ名 | yum info [パッケージ名] |
指定ファイルがどのパッケージ からインストールされたか表示 |
rpm -qf (-q –file) ファイル名 | |
パッケージの変更履歴を表示 | rpm -q –changelog パッケージ名 | |
設定ファイルの一覧表示 | rpm -qc(-q –configfiles) パッケージ名 | |
MD5によるファイルの 改ざんを検査しない |
rpm -V –nomd5 パッケージ名 | |
アップデート可能なパッケージの表示 | yum check-update [パッケージ名] | |
パッケージグループの一覧表示 | yum grouplist |
まとめ
- パッケージ管理システムとは、スマホアプリをインストールするのと同じような仕組みのこと。
- Linuxのパッケージ管理システムには、Debian系(dpkg、apt)とRedHat系(rpm、yum)がある。
- dpkgの拡張版がapt、rpmの拡張版がyumである。