Linuxにはさまざまなパッケージ管理ツールがありますが、Debian系のディストリビューション(Ubuntu、Debianなど)で使用されるのがdpkgコマンドです。dpkgはパッケージのインストール、削除、情報の取得など、基本的な管理操作を行うための低レベルなコマンドです。
本記事では、dpkgコマンドの基本的な使い方から、実際の運用で役立つ便利なオプションまで詳しく解説します。
dpkgとは?
dpkgの概要
dpkgはDebian系のパッケージ管理システムで、.deb形式のパッケージを管理するためのコマンドラインツールです。
APT(Advanced Package Tool)のような高レベルのパッケージ管理ツールは内部的にdpkgを利用しています。
そのため、dpkgを直接操作することで、細かいパッケージ管理が可能になります。
dpkgとAPTの違い
| 項目 | dpkg | APT |
|---|---|---|
| パッケージのインストール | 〇 | 〇 |
| 依存関係の解決 | × | 〇 |
| ネットワークからの取得 | × | 〇 |
| 低レベルな管理 | 〇 | × |
APTは依存関係を自動で解決しますが、dpkgはパッケージの管理のみを行い、依存関係の解決は手動で行う必要があります。
dpkgコマンドの基本操作
パッケージのインストール
.debパッケージをインストールするには、以下のコマンドを使用します。
sudo dpkg -i package.deb
例: Google Chromeのパッケージをインストールする場合
sudo dpkg -i google-chrome-stable_current_amd64.deb
パッケージの依存関係が不足している場合はエラーが出るため、apt-get -f installで解決できます。
sudo apt-get -f install
パッケージの削除
パッケージを削除するには、以下のコマンドを使用します。
sudo dpkg -r package-name
例: vimパッケージを削除する場合
sudo dpkg -r vim
ただし、設定ファイルは削除されません。設定ファイルも含めて完全に削除する場合は、--purgeオプションを追加します。
sudo dpkg --purge package-name
インストール済みパッケージの一覧を表示
システムにインストールされているパッケージを確認するには、以下のコマンドを使用します。
dpkg -l
特定のパッケージを検索する場合は、grepを組み合わせます。
dpkg -l | grep package-name
例: vimがインストールされているか確認する
dpkg -l | grep vim
パッケージ情報の表示
特定のパッケージに関する情報を取得するには、以下のコマンドを使用します。
dpkg -s package-name
例: curlの情報を表示
dpkg -s curl
パッケージのファイル一覧を表示
インストールされたパッケージがどのファイルを提供しているかを確認するには、以下のコマンドを使用します。
dpkg -L package-name
例: nanoのファイル一覧を表示
dpkg -L nano
特定のファイルがどのパッケージに属しているか調べる
特定のファイルがどのパッケージに含まれているかを確認するには、以下のコマンドを使います。
dpkg -S file-path
例: /bin/lsがどのパッケージに含まれているか確認
dpkg -S /bin/ls
dpkgのトラブルシューティング
パッケージの破損修復
パッケージのインストール中にエラーが発生し、破損状態になることがあります。その場合、以下のコマンドで修復を試みます。
sudo dpkg --configure -a
依存関係の修復
dpkgでは依存関係を自動で解決しないため、インストールエラーが発生することがあります。
その場合、APTを使って依存関係を修復できます。
sudo apt-get -f install
dpkgの活用例
.debパッケージの作成
dpkgは既存のプログラムを.debパッケージとして配布するためのツールとしても使用できます。dpkg-debを使うことで、パッケージの作成や展開が可能です。
dpkg-deb --build mypackage
パッケージを展開する場合は以下のコマンドを使用します。
dpkg-deb --extract package.deb output-directory
まとめ
dpkgコマンドはDebian系Linuxでのパッケージ管理に欠かせないツールです。
APTのような高レベルなツールと併用することで、より柔軟にパッケージ管理が可能になります。
本記事で紹介した基本コマンドをマスターし、Linux環境を効率よく管理していきましょう。
