(最終更新月:2023年5月)
✔このような方へ向けて書かれた記事となります
「dpkgってどうやって使うの?」
「dpkgの使い方を詳しく知りたい」
「dpkgのいろいろな実例が見てみたい」
✔当記事を通じてお伝えすること
- dpkgとは?
- dpkgの基本・書き方
- dpkgの実例
当記事では、dpkgコマンドの基本はもちろん、dpkgの具体的な使い方を実例付きで解説しています。
ぜひ最後までご覧ください。
dpkgの基本
dpkgの基本について見ていきましょう。
dpkgの背景を理解したうえで、応用した使い方を覚えることをおすすめします。
- dpkgとは?
- Debianプロジェクトの歴史
- dpkgの開発経緯
dpkgとは?
dpkgは、Debian系Linuxディストリビューションで使われる、パッケージ管理システムの基本ツールです。
ソフトウェアのインストール、削除、情報の取得など、パッケージ管理に関する基本的な操作をおこなうことができます。
ダウンロードやインストールで使われる「APT」の基礎となっているコマンドです。
Debianプロジェクトの歴史
Debianプロジェクトは、1993年にイアン・マードックによって開始されました。
彼は、オープンソースで、安定性と信頼性に優れたLinuxディストリビューションを作ることを目的として、Debianを立ち上げました。
それ以降、Debianはコミュニティベースで発展し、多くの派生ディストリビューションを生み出しています。
dpkgの開発経緯
dpkgは、Debianプロジェクトの初期から存在していました。
当初は簡素なスクリプトでパッケージ管理を行っていましたが、徐々に機能が追加され、現在の形に進化しました。
dpkgは、Debian系Linuxディストリビューションの基盤となるパッケージ管理システムであり、APTやその他の高レベルなパッケージ管理ツールの基礎となっています。
dpkgに必要な用語
dpkgに必要な用語をご紹介します。
このあとも出てきますので、ひとつずつ確認しましょう。
- Debianパッケージとは?
- dpkgとAPTの違い
- パッケージの依存関係
Debianパッケージとは?
Debianパッケージは、Debian系Linuxディストリビューションで利用されるソフトウェアの配布形態です。
拡張子が「.deb」のファイルで、ソフトウェアのバイナリ、設定ファイル、ドキュメント、依存関係情報などが含まれています。
dpkgとAPTの違い
dpkgはDebianパッケージの基本的な管理をおこなうツールで、ローカルにあるパッケージファイルをインストールや削除できるものです。
一方、APT(Advanced Package Tool)は、インターネット上のリポジトリからパッケージをダウンロードしてインロードし、依存関係の解決やアップグレードを自動で行う高レベルなパッケージ管理ツール。
APTは、dpkgをバックエンドとして利用しています。
パッケージの依存関係
パッケージの依存関係について詳しく見ていきます。
- 依存関係とは?
- 依存関係の解決方法
- APTとの連携
依存関係とは?
依存関係とは、あるパッケージが正常に動作するために必要な他のパッケージのことを指します。
例えばテキストエディタ「nano」と依存関係があるものは、以下のように調べられます。
$ apt-cache show nano
#ほかにも記述があります。
Depends: libc6 (>= 2.27), libncursesw6 (>= 6), libtinfo6 (>= 6)
依存関係の解決方法
依存関係の解決は、主にAPTを使っておこなわれます。
APTは、インストールやアップグレードの際に、自動的に依存関係を解決できるからです。
APTを使って、必要なパッケージをリポジトリからダウンロードしてインストールします。
dpkgを直接使ってパッケージをインストールする場合、手動で依存関係を解決する必要があります。
APTとの連携
APTは、依存関係の解決やパッケージのアップグレードを自動化するため、dpkgと連携して動作します。
APTコマンドを実行すると、適切なパッケージをリポジトリからダウンロードし、dpkgによるインストールがおこなわれます。
これにより、手動でのパッケージ管理が大幅に簡略化されます。
dpkgの主なコマンド
dpkgの主なコマンドをご覧いただきます。
主要なものを見ていきましょう。
- パッケージのインストール
- パッケージのアンインストール
- パッケージ情報の表示
- インストール済みパッケージの一覧表示
- パッケージの検索
- パッケージファイル内の内容表示
- その他の便利なコマンド
パッケージのインストール
dpkg -i(または–install)
ローカルにあるDebianパッケージ(.debファイル)をインストールする際に使用します。
例えば、ファイル名が「example.deb」のパッケージをインストールする場合、以下のように実行します。
sudo dpkg -i example.deb
パッケージのアンインストール
dpkg -r(または–remove)
インストール済みのパッケージをアンインストールする際に使用します。
「example」パッケージをアンインストールする場合はこちら。
sudo dpkg -r example
パッケージ情報の表示
dpkg -s(または–status)
インストール済みのパッケージの詳細情報を表示する際に使用します。
例えば「example」パッケージの情報を確認する場合、以下のように実行してください。
dpkg -s example
インストール済みパッケージの一覧表示
dpkg -l(または–list)
システムにインストールされている全てのパッケージの一覧を表示する際に使用。
特定のパッケージを検索する場合は、grepコマンドと組み合わせることもおすすめです。
例えば、「example」パッケージがインストールされているか確認する場合、以下のように実行します。
dpkg -l | grep example
パッケージの検索
dpkg -S(または–search)
指定したファイルがどのパッケージに属しているかを検索する際に使用します。
例えば、「/usr/bin/example」ファイルがどのパッケージに属しているか調べる場合、以下のように実行します。
dpkg -S /usr/bin/example
パッケージファイル内の内容表示
dpkg -c(または–contents)
Debianパッケージ(.debファイル)内に含まれるファイルの一覧を表示する際に使用します。
「example.deb」ファイル内の内容を確認するコマンドは以下のとおり。
dpkg -c example.deb
その他の便利なコマンド
dpkgには、上記のコマンド以外にも便利なコマンドがいくつかあります。
- dpkg-reconfigure:インストール済みのパッケージの設定を再構成する際に使用
- dpkg –get-selections:インストール済みの全パッケージの選択状態(インストール、アンインストール)を表示
dpkgのコマンド一覧
dpkgのコマンドを一覧にしました。
前章に加えて、振り返る際に使いましょう。
オプション名 | 説明 | 実例 |
---|---|---|
-i, –install | .debパッケージをインストールする | dpkg -i package.deb |
-r, –remove | パッケージをアンインストールする | dpkg -r package-name |
-P, –purge | パッケージを完全にアンインストール(設定も削除) | dpkg -P package-name |
-l, –list | インストール済みのパッケージを一覧表示する | dpkg -l |
-L, –listfiles | パッケージに含まれるファイルを一覧表示する | dpkg -L package-name |
-s, –status | パッケージの詳細情報を表示する | dpkg -s package-name |
-S, –search | ファイル名を指定して、そのファイルを含むパッケージを検索する | dpkg -S /usr/bin/nano |
-c, –contents | .debパッケージファイルの内容を表示する | dpkg -c package.deb |
–get-selections | インストール済みパッケージの選択状態を表示する | dpkg --get-selections |
–set-selections | パッケージの選択状態を設定する | dpkg --set-selections < package_list.txt |
dpkgの設定とカスタマイズ
dpkgの設定とカスタマイズ方法をご紹介します。
dpkgの設定を変更することで、新たにできることもあるのです。
- dpkgの設定ファイルの場所
- 設定ファイルの内容と編集方法
- カスタマイズ例
dpkgの設定ファイルの場所
dpkgの設定ファイルは、主に「/etc/dpkg/」ディレクトリにあります。
「dpkg.cfg」という名前のファイルが一般的な設定ファイルで、その他の設定ファイルもこのディレクトリに格納されています。
また、ユーザー固有の設定ファイルは、「~/.dpkg.cfg」に配置されます。
設定ファイルの内容と編集方法
dpkgの設定ファイルには、オプションやフラグが記述されており、これらの設定を変更することで、dpkgの挙動をカスタマイズできます。
設定ファイルはテキストファイルであり、テキストエディタを使用して編集が可能。
ただし、設定ファイルの編集は慎重に行い、バックアップを取ってから作業することが推奨されます。
カスタマイズ例
dpkgの挙動をカスタマイズする例として、インストール時にドキュメントファイルを除外する設定があります。
これにより、ディスク容量の節約ができます。
設定ファイル「/etc/dpkg/dpkg.cfg」に以下の行を追加することで、ドキュメントファイルのインストールをスキップします。
path-exclude /usr/share/doc/*
よくあるトラブルと解決方法
よくあるトラブルとその解決方法をご説明します。
事前に理解しておけば、いざというときに役立つでしょう。
- 依存関係の問題
- 設定ファイルの残り
- 破損したパッケージ
依存関係の問題
依存関係の問題は、パッケージのインストールやアップグレード時によく発生します。
APTを使用して依存関係を解決するか、手動で依存関係を満たすパッケージをインストールすることで解決できます。
apt-cache show パッケージ名
設定ファイルの残り
パッケージをアンインストールしても、設定ファイルが残ることがあります。
これを解決するには、dpkg -P(または–purge)コマンドを使用して、パッケージを完全に削除しましょう。
破損したパッケージ
破損したパッケージは、インストールやアップグレードが正常に完了しない原因となります。
この問題を解決するには、破損したパッケージを再インストールするか、APTの「-f」オプションを使用して自動修復を試みます。
dpkgを使ったパッケージのビルドと作成
dpkgを使ったパッケージのビルドと作成方法です。
ほかのシステムへ共有する方法として使えます。
- パッケージのビルドとは?
- dpkg-buildpackageコマンドの紹介
- 独自パッケージの作成例
パッケージのビルドとは?
パッケージのビルドとは、ソースコードからバイナリファイルを生成し、Debianパッケージ(.debファイル)にまとめるプロセスです。
これにより、作成したパッケージを他のシステムで簡単にインストールできるようになります。
dpkg-buildpackageコマンドの紹介
dpkg-buildpackageは、ソースコードからDebianパッケージをビルドするためのコマンドです。
このコマンドを使用する前に、ソースコードのディレクトリに「debian/」フォルダを作成し、必要なファイル(debian/rules、debian/control など)を配置する必要があります。
その後、以下のように実行してパッケージをビルドします。
dpkg-buildpackage -us -uc
独自パッケージの作成例
例として、簡単なHello WorldプログラムをC言語で作成し、Debianパッケージにする手順を説明します。
1. ソースコード(hello.c)を作成します。
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
2. ソースコードのディレクトリに「debian/」フォルダを作成し、必要なファイルを配置します。
3. 「debian/rules」ファイルを作成し、ビルドプロセスを記述します。
4. 「debian/control」ファイルを作成し、パッケージのメタデータを記述します。
5. dpkg-buildpackageコマンドを実行して、パッケージをビルドします。
dpkgを使った実践例
dpkgを具体的に使った例を見ていきます。
実践例を見ると、どんな場所で使うかのイメージがわきやすくなるでしょう。
- オフライン環境でのパッケージインストール
- 古いバージョンのパッケージをインストール
- パッケージのバックアップとリストア
オフライン環境でのパッケージインストール
オフライン環境でのパッケージインストールは以下の手順です。
- 事前に必要なパッケージファイル(.debファイル)と依存関係を満たすパッケージファイルをダウンロード
- オフライン環境に持ち込む
- dpkg -i コマンドを使用してインストール
インターネットに接続できない環境でパッケージをインストールしたいときに使う方法です。
古いバージョンのパッケージをインストール
特定のバージョンのパッケージをインストールした場合にも使えます。
該当バージョンのパッケージファイル(.debファイル)を入手し、dpkg -i コマンドでインストールするのです。
パッケージのバックアップとリストア
システムのパッケージ状態をバックアップする場合、dpkg –get-selectionsコマンドでインストール済みのパッケージの選択状態を出力し、ファイルに保存します。
dpkg --get-selections > package_list.txt
リストア時には、まず保存したファイルを新しいシステムにコピーします。
次に、dpkg –set-selectionsコマンドでパッケージの選択状態を復元し、dselect-upgradeコマンドでインストールを行います。
dpkg --set-selections < package_list.txt
apt-get dselect-upgrade
まとめ
当記事では以下について説明しました。
- dpkgの基本的な概念
- コマンド
- 設定方法
- カスタマイズ
- トラブルシューティング
- パッケージのビルドと作成
- 実践例
これらの知識を使って、Debianベースのシステムでパッケージ管理を効率的に行うことができます。
dpkgを使いこなせるようになったら、次のステップとして、より高機能なパッケージ管理ツールであるAPT(Advanced Package Tool)や、dpkgを含むDebianベースのシステム全体の管理方法を学ぶことがおすすめです。