LoginSignup
10
4

More than 3 years have passed since last update.

Linux基礎(パッケージ管理について)

Posted at

これはなに?

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ツールを使用してパッケージ管理ができるようになった。

  1. パッケージのダウンロードサイト(リポジトリ)から最新パッケージのダウンロードやインストールを行う
  2. 各パッケージ間の依存関係を解決しながら、パッケージのインストール、アップグレード、削除等が行える
パッケージ方式 高度な管理ツール
Debian APT(Advanced Package Tool)ツール
RPM形式 YUM(Yellowdog Updater Modified)ツール

Debian系|dpkgツール

Debian形式のパッケージファイル名の見方
スクリーンショット 2019-09-21 16.47.15.png

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形式のパッケージファイル名の見方
スクリーンショット 2019-09-21 17.08.25.png
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 ファイル名 インストール前のパッケージの詳細情報を表示
10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4