#これはなに?
Linuxのパッケージ管理の仕組みを読み解いていく記事
##パッケージ管理とは
ソフトウェアをパッケージと呼ばれる単位で配布と管理する仕組み。
パッケージファイルとは実行プログラム、設定ファイル、ライブラリ、マニュアルなどを1つのんファイルにまとめたもの。
##代表的な例
パッケージ方式 | 説明 | パッケージの拡張子 | 管理ツール |
---|---|---|---|
Debian形式 | Debian GNU/Linuxなどで採用されている方式 | .deb | dpkgコマンド |
RPM形式 | RedHat Enterprise Linuxなどで採用される方式 | .rpm | rpmコマンド |
##パッケージ依存の関係
パッケージ管理によりソフトウェアのインストール、削除、依存関係のチェックの管理が容易になる。
パッケージAには、Bが必要。パッケージBには、Cが必要。つまり、間接的にパッケージAを実行するために、パッケージCが必要となっている。このような依存関係における複雑性をパッケージ管理の仕組みが解決してくれる。
パッケージA ⇆ パッケージB ⇆ パッケージC
パッケージ管理により、パッケージのインストール、アンインストール、アップデート作業でどのようなパッケージがどこにインストールされているかを確認したり、パッケージ間の競合を回避したりする仕組みを提供している。
パッケージの関係 | 説明 |
---|---|
パッケージの依存関係 | あるパッケージに含まれるるファイルを、別のパッケージが利用している関係 |
パッケージの競合関係 | あるパッケージによってインストールされるファイルが、すでに別のパッケージによりインストールされている場合、すでにインストールされているファイルと競合する場合の関係 |
##高度なパッケージ管理
dpkg/rpmのようなパッケージ管理を行う基本コマンドでは、管理者がある程度手動で依存関係を解決する必要があり、パッケージファイルを1つ1つ用意する必要があった。そこで、高度なパッケージ管理を提供する仕組みであるAPTツール/YUMツールを使用してパッケージ管理ができるようになった。
- パッケージのダウンロードサイト(リポジトリ)から最新パッケージのダウンロードやインストールを行う
- 各パッケージ間の依存関係を解決しながら、パッケージのインストール、アップグレード、削除等が行える
パッケージ方式 | 高度な管理ツール |
---|---|
Debian | APT(Advanced Package Tool)ツール |
RPM形式 | YUM(Yellowdog Updater Modified)ツール |
###Debian系|dpkgツール
Debian形式のパッケージファイル名の見方
Debian形式のパッケージを扱うためには、dpkgコマンドを使用する。
構文|dpkg [オプション] アクション パッケージ名
オプション | 説明 |
---|---|
-E | 同じバージョンがすでにインストールされている場合、インストールは行わない |
-G | 新バージョンがすでにインストールされている場合、インストールはしない |
-R | ディレクトリ構造を再帰的に処理する |
アクション | 説明 |
---|---|
-i | パッケージファイル名をして、パッケージをインストール |
-l | パッケージファイル名をして、インストール済みの詳細情報を表示 |
-r | パッケージ名をして、パッケージをアンインストール(設定ファイルは残す) |
-P | パッケージ名をして、パッケージをアンイストール(設定ファイルを含めて完全に削除) |
-L | パッケージ名をして、パッケージからインストールされたファイルを一覧表示 |
-s | パッケージ名をして、インストール済みのパッケージの詳細情報の表示 |
-S | 指定したファイルが、どのパッケージからインストールされたものかを調査 |
-c | パッケージファイル名を指定して、パッケージに含まれるファイルの一覧表示 |
-C | パッケージのインストール状態を検査 |
以下では、実際にtreeパッケージをダウンロードしてから、dpkgコマンドでステータスの確認まで行う。
# パッケージファイルの取得
# 一般的には、Debianパッケージ管理はaptツールを使用してダウンロード&インストールするためwgetは不要だったりする。
$ wget https://ftp.nara.wide.ad.jp/debian/main/t/tree/tree_1.6.0-1_i386.deb
# treeパッケージのインストール
$ dpkg -i tree_1.6.0-1_i386.deb
# パッケージファイル名を指定して、インストール済みの詳細情報を表示
$ dpkg -l tree_1.6.0-1_i386.deb
# パッケージ名を指定して、パッケージからインストールされたファイルを一覧表示
$ dpkg -L tree
# パッケージ名を指定して、インストール済みのパッケージの詳細情報の表示
$ dpkg -s tree
# パッケージファイル名を指定して、パッケージに含まれるファイルの一覧表示
$ dpkg -c tree_1.6.0-1_i386.deb
# パッケージをアンインストール(設定ファイルは残す)
#dpkg -r tree
# パッケージをアンインストール(設定ファイル含め完全に削除)
#dpkg -P tree
###RPM系|
RPM形式のパッケージファイル名の見方
RPM形式のパッケージを扱うためには、dpkgコマンドを使用する。
構文|rpm [オプション] パッケージ名
[RPMコマンド|インストール]
インストーリ・アップグレードモード | 説明 |
---|---|
-i パッケージファイル名 | 指定したキーワードを含むパッケージをインストール |
-U パッケージファイル名 | 指定したパッケージのアップフレード(存在しない場合はインストールする) |
-F パッケージファイル名 | 指定したパッケージのアップグレード(存在しない場合はインストールしない) |
-v (併用オプション) | 詳細な情報を表示する |
-h (併用オプション) | インストールの進行状況を#で表示する |
-nodeps (併用オプション) | パッケージの依存関係を無視してインストール |
-force (併用オプション) | 既存のファイルを新しいものに置き換える |
-prefix (併用オプション) | パッケージをインストールするディレクトリを指定 |
-test (併用オプション) | インストールはせずにテストを実施 |
アンインストーリモード | 説明 |
---|---|
-e パッケージ名 | パッケージをアンインストール |
-nodeps (併用オプション) | 依存関係を無視してアンインストール |
照会モード | 説明 |
---|---|
-q パッケージ名 | 指定したパッケージがインストールされているか照会 |
-a (併用オプション) | インストール済みの全てのパッケージを表示 |
-c (併用オプション) | 設定ファイルのみを表示 |
-d (併用オプション) | ドキュメントのみを表示 |
-i (併用オプション) | 指定したパッケージの詳細情報を表示 |
-l (併用オプション) | 指定したパッケージに含まれているファイルを一覧表示 |
-R (併用オプション) | 指定したパッケージが依存しているファイルなどを表示 |
-f ファイル名(併用オプション) | 指定したファイルを含むパッケージ名を表示 |
-p パッケージファイル名(併用オプション) | 指定したパッケージファイルの情報を表示 |
-changelog (併用オプション) | パッケージの変更履歴を表示 |
以下では、実際にnmapパッケージをダウンロードしてから、dpkgコマンドでステータスの確認まで行う。
*「nmap」は、ポートスキャンを行うアプリケーション
####パッケージのインストールとアンインストール
# パッケージファイルの取得
# 一般的には、RPMパッケージ管理はyumツールを使用してダウンロード&インストールするためwgetは不要だったりする。
$ wget https://ftp.riken.jp/Linux/centos/6.4/os/i386/Packages/nmap-5.51-2.el6.i686.rpm
# treeパッケージのインストール
$ rpm -ivh nmap-5.51-2.el6.i686.rpm
# パッケージのアンインストール
$ rpm -e nmap-5.51-2.el6.i686.rpm
# パッケージのアップグレード(パッケージが存在しない場合、新規インストールを行う)
$ rpm -Uvh nmap-5.51-2.el6.i686.rpm
# パッケージのアップグレード(パッケージが存在しない場合、新規インストールを行わない)
$ rpm -Fvh nmap-5.51-2.el6.i686.rpm
####パッケージの依存関係
# 依存関係に問題があり、エラーが発生して処理を中断する
$ rpm -ivh emacs-23.1-31.el6_2.3.i686.rpm
# 依存関係を無視して、インストール
$ rpm -ivh --nodeps emacs-23.1-31.el6_2.3.i686.rpm
####パッケージの情報の参照
# インストール済みのパッケージ一覧の表示
$ rpm -qa
# インストールされたファイルの一覧を表示
$ rpm -l nmap
# インストール済みのパッケージ一覧の表示
$ rpm -qa
# インストール済みのパッケージの詳細情報を表示
$ rpm -qi namp
オプション | 説明 |
---|---|
-qa | インストール済みのパッケージ一覧の表示 |
-ql パッケージ名 | インストール済みのパッケージに含まれるファイルの一覧表示 |
-qi パッケージ名 | インストール済みのパッケージの詳細情報表示 |
-qlp ファイル名 | インストール前のパッケージに含まれるファイルの一覧表示 |
-qip ファイル名 | インストール前のパッケージの詳細情報を表示 |