【Linux】aptitudeコマンドで依存関係を賢く解決してパッケージを管理する

目次

概要

Debian系ディストリビューション(Debian, Ubuntuなど)において、パッケージの導入・更新・削除を行うための高機能な管理コマンドです。

標準的な apt コマンドと比較して、パッケージの依存関係解決能力に優れており、競合が発生した際に複数の解決策を提示してくれる機能があります。また、コマンドラインだけでなく、引数なしで起動することで対話型インターフェース(TUI)も利用可能です。

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

構文

aptitude [オプション] [アクション] [パッケージ名]

主なアクション(スイッチ)

アクション説明
installパッケージをインストール、またはアップグレードします。
removeパッケージを削除します(設定ファイルは残します)。
purgeパッケージと設定ファイルを完全に削除します。
hold / keepパッケージを現在のバージョンに固定し、自動更新されないようにします。
updateパッケージリスト(インデックス)を更新します。
safe-upgrade未使用パッケージの削除を行わない、安全なアップグレードを行います。
full-upgrade必要に応じてパッケージの削除や新規インストールを伴う、完全なアップグレードを行います。
searchパッケージ名や説明文をパターン検索します。
showパッケージの詳細情報を表示します。
cleanキャッシュされているパッケージファイルをすべて削除します。
autocleanキャッシュから、ダウンロード不能になった古いパッケージファイルのみを削除します。
changelogパッケージの変更履歴(Changelog)を表示します。
downloadパッケージファイル(.deb)をインストールせずにダウンロードのみ行います。

主なオプション

オプション説明
-D / –show-depsインストールや削除によって変更される依存関係の詳細を表示します。
-d / –download-onlyパッケージのダウンロードのみを行い、インストール・展開は行いません。
-f / –fix-broken壊れた依存関係の修復を試みます。
–purge-unused不要になったパッケージ(自動インストールされ、もう必要ないもの)を完全に削除します。
-R / –no-resolve依存関係の自動解決を行いません(上級者向け)。
-r / –with-recommends推奨(Recommends)パッケージも一緒にインストールします(デフォルト)。
-s / –simulate実際には実行せず、何が行われるかのシミュレーション結果を表示します。
-q / –quietログ出力を抑制します(進捗バーを表示しないなど)。
-w [幅] / –width [幅]出力結果の表示幅を指定します。
-y / –assume-yes全てのアクションの確認プロンプトに「Yes」と回答します。

基本の使い方

パッケージ(ここでは ruby)をリポジトリから検索します。

# "ruby" を含むパッケージを検索し、先頭5件を表示
aptitude search ruby | head -n 5

実行結果例

p   ruby                            - Interpreter of object-oriented scripting language
p   ruby-dev                        - Header files for compiling extension modules for Ruby
i   ruby-json                       - JSON support for Ruby
p   ruby-openssl                    - OpenSSL interface for Ruby
v   ruby-interpreter                - <virtual package provided by ruby>

実践コマンド

パッケージを安全にインストールする

依存関係を考慮してパッケージをインストールします。

# nginxをインストール(確認あり)
sudo aptitude install nginx

システム全体を更新する

apt-get upgrade よりも賢い safe-upgrade を使用するのがaptitude流です。

# まずリストを更新
sudo aptitude update

# 安全なアップグレードを実行
sudo aptitude safe-upgrade

パッケージの更新履歴(Changelog)を確認する

特定のバージョンの変更点を確認したい場合に使用します。

# インストール済みの git パッケージの変更履歴を表示
aptitude changelog git

結果表示の幅を調整して検索する

search コマンドの結果が画面幅で切れてしまう場合、-w オプションで明示的に幅を広げます。

# 120文字幅で検索結果を表示
aptitude search -w 120 "python3"

カスタムポイント

検索結果のステータスフラグの見方

aptitude search の出力結果は、各行の左端にある文字(フラグ)でパッケージの状態を表しています。以下に各桁の意味をまとめます。

1文字目:現在の状態

フラグ意味説明
pPurgedパッケージはインストールされていません(設定ファイルもなし)。
cConfig-filesアンインストール済みですが、設定ファイルが残っています。
iInstalledインストール済みです。
vVirtual仮想パッケージです。
BBroken依存関係が壊れています。

2文字目:予約されているアクション

フラグ意味説明
iInstallインストールされる予定です。
dDelete削除される予定です。
pPurge完全削除される予定です。
hHold現在のバージョンで固定されています(更新禁止)。
(空欄)Noneアクションは予約されていません。

3文字目:自動インストール状況

フラグ意味説明
AAutomatic依存関係によって「自動的に」インストールされました。
(空欄)Manualユーザーが「手動で」インストールしました。

例: i A libxml2 と表示されている場合、「現在インストール済み(i)」で、「アクション予約なし」、「依存関係で自動的に入った(A)」パッケージであることを示します。

注意点

  1. aptコマンドとの混在apt (または apt-get) と aptitude は同じパッケージデータベースを操作しますが、依存関係の解決ロジックが異なります。トラブルを避けるため、可能な限りどちらか一方をメインに使用してください。
  2. sudoの必要性検索 (search, show) は一般ユーザーでも可能ですが、インストールや更新などのシステム変更操作には sudo が必要です。
  3. 解決策の提案インストール時に依存関係の競合が発生すると、aptitudeは「解決策1」「解決策2」…と複数のプランを提示します。画面をよく読み、安易に Y を押さず、重要なパッケージが削除されないか確認してください。

応用

インタラクティブモード(TUI)の利用

引数なしでコマンドを実行すると、ターミナル上でマウス操作も可能な対話画面(TUI)が起動します。

# TUIモードを起動
sudo aptitude

※画面内で u (update), U (mark upgrades), g (go/execute) などのキーバインドで操作します。終了は q です。

まとめ

aptitude は、複雑な依存関係を持つパッケージの管理において非常に強力なツールです。

特に「ステータスフラグ(p, i, c)」を理解することで、システムの状態を正確に把握できるようになります。普段は apt を使用している場合でも、依存関係のエラー解決や高度な検索が必要な場面では aptitude を活用してください。

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

この記事を書いた人

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

目次