Ubuntu環境において、/binや/usr/binなどに配置されている標準コマンド(例: ddやlsなど)のソースコードを取得して確認する方法について解説します。
この記事でできること
Ubuntuのパッケージとして提供されているコマンドのCソースコードなどを手元にダウンロードし、内部の実装や処理内容を確認できるようになります。
前提条件・想定環境
- 対象OS: Ubuntu 20.04 LTS / 22.04 LTS / 24.04 LTS など
- 特権権限: 一般ユーザー(
apt-get source実行時は管理者権限不要ですが、ビルドや依存関係の導入にはsudo権限が必要になる場合があります) - 事前準備: ソースコードを取得するためには、パッケージ管理システムのソースリポジトリ(deb-src)が有効である必要があります。
手順1:リポジトリのソース設定(deb-src)の確認
apt-get sourceコマンドを実行するためには、/etc/apt/sources.list(または/etc/apt/sources.list.d/内のファイル)にdeb-srcのエントリが有効になっている必要があります。
設定を確認・有効化した後、パッケージリストを更新します。
sudo apt-get update
手順2:コマンドが所属するパッケージの特定
調べたいコマンド(例: /bin/dd)がどのソースパッケージに属しているかを調べます。これにはdpkg -Sコマンドを利用するのが簡単です。
dpkg -S /bin/dd
実行例:
$ dpkg -S /bin/dd
coreutils: /bin/dd
これにより、ddコマンドは coreutils パッケージに含まれていることが分かります。
手順3:ソースコードの取得
apt-get sourceコマンドを使用して、該当パッケージのソースコードをカレントディレクトリにダウンロードおよび展開します。
apt-get source coreutils
実行時の出力例:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
NOTICE: 'coreutils' package is maintained by the 'Ubuntu Developers' at ...
need to get 5,200 kB of source archives.
Get:1 http://archive.ubuntu.com/ubuntu jammy/main coreutils 8.32-4.1ubuntu1 (dsc) [3,934 B]
Get:2 http://archive.ubuntu.com/ubuntu jammy/main coreutils 8.32-4.1ubuntu1 (tar) [5,372 kB]
...
dpkg-source: info: extracting coreutils in coreutils-8.32
dpkg-source: info: unpacking coreutils_8.32.orig.tar.gz
手順4:ソースコードの確認
ダウンロードが完了すると、カレントディレクトリにパッケージ名のフォルダ(例: coreutils-8.32 など)が生成されます。目的のソースファイル(例: src/dd.c)へ移動して内容を確認できます。
cd coreutils-8.32/
less src/dd.c
トラブルシューティング
- E: パッケージ ‘xxx’ のソースが見つかりませんでしたというエラーが出る場合:
/etc/apt/sources.listファイルにdeb-srcで始まる行が存在するか確認し、コメントアウトされている場合は有効化してください。
まとめ
dpkg -S でパッケージを特定し、apt-get source を利用することで、Ubuntu上のあらゆる標準コマンドの内部実装をソースコードレベルで手軽に確認することができます。
この記事の更新履歴
この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。
2026年9月12日
- 変更記事の全体構成を見直し、前提条件、実行手順、期待される出力例、ソースコードの確認方法を明確に整理しました。
- 追加Ubuntuでソースコードを取得するために必要な`/etc/apt/sources.list`のdeb-src設定に関する注意点を追加しました。
- 変更ブロックタグが崩れていた古いHTML表現を修正し、コードブロックを用いた読みやすい体裁に変更しました。
