【実例付】dpkgコマンドとは?その書き方・使い方を丁寧に解説

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年5月)

✔このような方へ向けて書かれた記事となります

「dpkgってどうやって使うの?」

「dpkgの使い方を詳しく知りたい」

「dpkgのいろいろな実例が見てみたい」

✔当記事を通じてお伝えすること

  • dpkgとは?
  • dpkgの基本・書き方
  • dpkgの実例

当記事では、dpkgコマンドの基本はもちろん、dpkgの具体的な使い方を実例付きで解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

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ベースのシステム全体の管理方法を学ぶことがおすすめです。

タイトルとURLをコピーしました