【Linux】apt-cacheコマンドでパッケージ情報を高速に検索・照会する

目次

概要

Debian/Ubuntu系システムにおいて、ローカルに保存されたAPTのキャッシュデータ(メタデータ)を操作・検索するためのコマンドです。

インターネットに接続せずとも、パッケージの検索、詳細情報の表示、依存関係の調査を高速に行うことができます。現在ではより対話的な apt コマンド(apt search 等)が推奨されていますが、スクリプト処理や詳細な依存解析には依然として apt-cache が利用されます。

仕様(引数・オプション)

構文

apt-cache [オプション] [サブコマンド] [パッケージ名/パターン]

主なサブコマンド(スイッチ)

サブコマンド説明
searchキーワードでパッケージ名や説明文を検索します。
showパッケージの詳細情報(バージョン、説明、メンテナ等)を表示します。
showsrcソースパッケージのレコードを表示します。
dependsパッケージが依存しているライブラリ等の一覧を表示します。
rdepends指定したパッケージに依存している(必要としている)パッケージ一覧を表示します(逆依存)。
showpkgパッケージの依存関係解決に関する低レベルな情報を表示します。
statsパッケージキャッシュに関する統計情報(総数やサイズ等)を表示します。
pkgnamesシステムが認識している全パッケージ名のリストを出力します(引数で接頭辞指定可)。
policyパッケージのインストール状況や優先度(Pinning)を表示します。
dumpキャッシュ内の全パッケージ情報を簡潔な形式で出力します。
dumpavail利用可能なヘッダーリストをstdoutに出力します。
gencachesパッケージとソースのキャッシュを再生成します(通常は apt update で自動実行)。

主なオプション

オプション説明
-n / –names-onlysearch 使用時、説明文は検索せず、パッケージ名のみを対象とします。
–recursedependsrdepends 使用時、依存関係を再帰的にたどって表示します。
-i / –installedインストール済みのパッケージのみを対象とします(※depends等の挙動に影響)。
-c [ファイル]指定した設定ファイルを読み込みます。
-p [ファイル]パッケージキャッシュファイルとして指定ファイルを使用します。
-s [ファイル]ソースキャッシュファイルとして指定ファイルを使用します。

基本の使い方

特定のキーワード(ここでは json-processor)に関連するパッケージを探し、その中から特定のツールの詳細を表示するフローです。

# キーワードで検索
apt-cache search json-processor

# 詳細情報を表示
apt-cache show jq

実行結果例

# search の結果
jq - command-line JSON processor
python3-jsonpointer - resolve JSON pointers - Python 3.x

# show の結果
Package: jq
Version: 1.6-1ubuntu0.20.04.1
Architecture: amd64
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Depends: libjq1 (= 1.6-1ubuntu0.20.04.1), libc6 (>= 2.14)
Description: command-line JSON processor
 jq is like sed for JSON data – you can use it to slice and filter and map...
Homepage: https://stedolan.github.io/jq/

実践コマンド

キャッシュの統計情報を確認する

現在システムが認識しているパッケージの総数などを確認します。

# 全体の統計を表示し、パッケージ総数のみを抽出
LANG=C apt-cache stats | grep "Total package names"

パッケージの公式サイトやリポジトリ情報を抽出する

開発元のWebサイトや、ソースコードの管理場所(VCS)を知りたい場合に便利です。

# Homepage情報を抽出
apt-cache show git | grep Homepage

# ソースパッケージ情報からVCS(バージョン管理システム)のURLを抽出
apt-cache showsrc git | grep -i vcs

依存関係を調査する

あるパッケージをインストールする際に、他に何が必要になるか(依存)、またはそのパッケージを削除すると何が動かなくなるか(被依存)を調べます。

# 'nginx' が依存しているパッケージ一覧
apt-cache depends nginx

# 'nginx' を必要としている(依存している)パッケージ一覧
apt-cache rdepends nginx

実行結果例(depends)

nginx
  Depends: nginx-core
  Depends: nginx-full
  Depends: nginx-light
  Depends: nginx-extras

カスタムポイント

  • パッケージ名だけで検索する (–names-only)デフォルトの search は説明文(Description)も検索対象にするため、結果が大量になりがちです。パッケージ名だけを検索対象にして絞り込みます。Bashapt-cache search --names-only python3-django
  • 再帰的な依存関係の表示 (–recurse)「依存しているパッケージがさらに依存しているもの」まで芋づる式に確認したい場合に使用します。出力が非常に多くなるので注意してください。Bashapt-cache depends --recurse redis-server

注意点

  1. 情報の鮮度apt-cache はローカルにあるキャッシュファイルを参照します。最新の情報を得るには、事前に sudo apt update を実行してキャッシュを更新しておく必要があります。
  2. 管理者権限は不要パッケージのインストール (apt install) とは異なり、情報の参照だけなので sudo は不要です。一般ユーザーでも実行できます。
  3. aptコマンドとの使い分け現在は apt search や apt show コマンドが標準化されており、色付きで見やすく表示されます。apt-cache は、装飾のないプレーンなテキスト出力が必要な場合や、depends などの apt コマンドにはない詳細なサブコマンドを使いたい場合に適しています。

応用

インストール可能な全パッケージ名をリスト化する

補完機能の実装や、パッケージリストの作成などで使用される pkgnames を使い、特定文字列で始まるパッケージ一覧を取得します。

# 'docker' で始まる全パッケージ名を表示
apt-cache pkgnames docker

実行結果例

docker-compose
docker.io
docker-registry
docker-doc

まとめ

apt-cache は、パッケージ管理の裏側にある「メタデータ」を効率よく検索するためのツールです。

「どんなパッケージがあるか探す」「依存関係トラブルの原因を追う」「開発元のURLを知る」といった場面で、システムに何も変更を加えず安全に調査を行えます。普段使いには apt、詳細調査には apt-cache と使い分けるのがLinux管理者の定石です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次