apt vs apt-get 徹底比較|違い・使い分け・どちらを使うべきか2026年版

  • 作成日 2026.06.23
  • linux
apt vs apt-get 徹底比較|違い・使い分け・どちらを使うべきか2026年版

aptapt-get どちらを使えばいいの?」——Ubuntu/Debianを使い始めたエンジニアなら一度は疑問に思う問いです。

ネット上のチュートリアルでは apt-get を使っているものと apt を使っているものが混在しており、どちらが正しいのか分かりにくい状況です。

本記事では以下の疑問に答えます。

  • aptapt-get は何が違うのか
  • どちらを使えばいいのか
  • apt-cacheapt-file などの関連コマンドとの関係
  • スクリプトではどちらを使うべきか
  • よく使うコマンドの対応表


目次

結論:先に答えを出す

aptapt-get
登場時期2014年(Ubuntu 14.04)1998年〜
主な用途対話的な操作(ターミナルでの手作業)スクリプト・自動化
進捗バー✅ あり❌ なし
出力の安定性バージョンによって変わる可能性あり後方互換性が保証されている
コマンド体系apt-get + apt-cache を統合・簡略化個別コマンドに分かれている
推奨場面日常の手作業でのパッケージ管理シェルスクリプト・CI/CD

一言でいうと:

  • ターミナルで手作業するなら apt
  • スクリプト・自動化なら apt-get

歴史:なぜ2つあるのか

apt-get の誕生

apt-get は1998年にDebianのパッケージ管理ツールとして登場しました。dpkg の上位レイヤーとして依存関係の自動解決を実現し、長年にわたってDebian/Ubuntuのパッケージ管理の中心を担ってきました。

apt の登場

apt は2014年にUbuntu 14.04で初めて導入され、Debian 8(Jessie)にも採用されました。apt-getapt-cacheapt-mark などに分散していた操作を1つのコマンドに統合し、進捗バーや色付き出力などユーザーフレンドリーな改善を加えたものです。

設計上の違い:

  • apt-get はプログラムから呼び出されることも想定した安定したインターフェース
  • apt は人間が使いやすいインターフェースとして設計された

コマンド対応表

日常操作のほとんどは apt で完結します。

パッケージ操作

やりたいことaptapt-get
パッケージリストを更新apt updateapt-get update
パッケージをインストールapt install パッケージ名apt-get install パッケージ名
パッケージを削除apt remove パッケージ名apt-get remove パッケージ名
パッケージを削除(設定も)apt purge パッケージ名apt-get purge パッケージ名
全パッケージをアップグレードapt upgradeapt-get upgrade
依存関係も含めてアップグレードapt full-upgradeapt-get dist-upgrade
不要パッケージを削除apt autoremoveapt-get autoremove
ダウンロードキャッシュを削除apt cleanapt-get clean
古いキャッシュを削除apt autocleanapt-get autoclean

検索・情報取得

やりたいことaptapt-cache / apt-file
パッケージを検索apt search キーワードapt-cache search キーワード
パッケージ情報を表示apt show パッケージ名apt-cache show パッケージ名
依存関係を表示apt depends パッケージ名apt-cache depends パッケージ名
逆依存関係を表示apt rdepends パッケージ名apt-cache rdepends パッケージ名
インストール済み一覧apt list --installeddpkg -l
アップグレード可能一覧apt list --upgradableapt-get -u upgrade --assume-no
ファイルからパッケージを検索apt-file search ファイル名apt-file search ファイル名

パッケージの保留・固定

やりたいことaptapt-mark
パッケージを保留(アップグレード対象外)apt-mark hold パッケージ名apt-mark hold パッケージ名
保留を解除apt-mark unhold パッケージ名apt-mark unhold パッケージ名
保留一覧を表示apt-mark showholdapt-mark showhold

具体的な違い

1. 進捗バーと出力

apt は視覚的にわかりやすい出力を提供します。

# apt の出力(進捗バーあり)
$ sudo apt install nginx
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
  nginx nginx-common nginx-core
0 upgraded, 3 newly installed, 0 to remove and 12 not upgraded.
Need to get 612 kB of archives.
After this operation, 1,757 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://archive.ubuntu.com/... nginx-common 1.24.0 [112 kB]
[####################] 100%    # ← 進捗バー
# apt-get の出力(進捗バーなし・よりシンプル)
$ sudo apt-get install nginx
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  nginx nginx-common nginx-core
0 upgraded, 3 newly installed, 0 to remove and 12 not upgraded.
Need to get 612 kB of archives.
After this operation, 1,757 kB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://archive.ubuntu.com/... nginx-common 1.24.0 [112 kB]

2. apt upgrade vs apt-get dist-upgrade

名前が違う重要なコマンドがあります。

# apt
apt full-upgrade   # ← dist-upgrade と同等

# apt-get
apt-get dist-upgrade

full-upgrade(= dist-upgrade)は、依存関係の変化によって既存パッケージの削除が必要な場合でもアップグレードを実行します。upgrade は既存パッケージを削除しない安全なアップグレードです。

3. apt search の出力

# apt search(見やすい出力)
$ apt search nginx
Sorting... Done
Full Text Search... Done
nginx/jammy-updates,jammy-security 1.24.0-0ubuntu0.22.04.1 amd64
  high performance web server

nginx-core/jammy-updates,jammy-security 1.24.0-0ubuntu0.22.04.1 amd64
  nginx web/proxy server (standard version)

# apt-cache search(シンプルな出力・スクリプト処理向き)
$ apt-cache search nginx
nginx - high performance web server
nginx-core - nginx web/proxy server (standard version)

4. apt list の便利な使い方

# インストール済みパッケージ一覧
apt list --installed

# アップグレード可能なパッケージ
apt list --upgradable

# 特定パッケージのバージョン確認
apt list --all-versions nginx

スクリプトでの使い分け

Debian/Ubuntuの公式ドキュメントでは、スクリプト内では apt-get の使用を推奨しています。理由は apt の出力フォーマットが将来変わる可能性があるためです。

#!/bin/bash
# ✅ スクリプト・CI/CD では apt-get を使う
set -euo pipefail

sudo apt-get update -q
sudo apt-get install -y -q nginx curl git

# -q:出力を抑制
# -y:確認プロンプトをスキップ
# -qq:さらに出力を抑制(エラーのみ表示)
# ❌ スクリプトで apt を使うと警告が出る場合がある
sudo apt install nginx
# WARNING: apt does not have a stable CLI interface.
# Use with caution in scripts.

CI/CD での典型的なパターン

# GitHub Actions / Dockerfile などでよく使われるパターン
RUN apt-get update && apt-get install -y \
    curl \
    git \
    nginx \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

&& rm -rf /var/lib/apt/lists/* はDockerイメージのサイズを削減するためのイディオムです。


よく使う操作パターン集

インストール・削除

# 基本インストール
sudo apt install nginx

# 複数パッケージを一度に
sudo apt install nginx curl git vim

# 確認なしでインストール(スクリプト用)
sudo apt install -y nginx

# バージョンを指定してインストール
sudo apt install nginx=1.24.0-0ubuntu0.22.04.1

# 特定バージョンに戻す(ダウングレード)
sudo apt install nginx=1.18.0-0ubuntu1

# パッケージを削除(設定ファイルを残す)
sudo apt remove nginx

# パッケージを削除(設定ファイルも削除)
sudo apt purge nginx

# 不要な依存パッケージを削除
sudo apt autoremove

# まとめて削除
sudo apt purge nginx && sudo apt autoremove

アップデート

# パッケージリストを更新(インストールはしない)
sudo apt update

# 安全なアップグレード(削除なし)
sudo apt upgrade

# 完全なアップグレード(依存関係の変化に対応)
sudo apt full-upgrade

# update → upgrade を一度に
sudo apt update && sudo apt upgrade -y

# 特定パッケージだけアップグレード
sudo apt install --only-upgrade nginx

検索・情報確認

# キーワードで検索
apt search "web server"

# パッケージの詳細情報
apt show nginx

# インストール済みか確認
apt list --installed | grep nginx
dpkg -l nginx

# どのパッケージにファイルが含まれるか調べる
apt-file search /usr/bin/nginx
# まず apt-file をインストール
sudo apt install apt-file
sudo apt-file update
apt-file search libssl.so

# パッケージが提供するファイル一覧
apt-file list nginx
dpkg -L nginx  # インストール済みの場合

ソースリスト(リポジトリ)の管理

# 現在のソースリストを確認
cat /etc/apt/sources.list
ls /etc/apt/sources.list.d/

# PPAを追加(Ubuntu)
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update

# PPAを削除
sudo add-apt-repository --remove ppa:neovim-ppa/unstable

# サードパーティのリポジトリを追加(現代的な方法)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
  | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list

sudo apt update
sudo apt install docker-ce

パッケージの保留・固定

# アップグレード対象から除外(バージョンを固定)
sudo apt-mark hold nginx

# 保留の解除
sudo apt-mark unhold nginx

# 保留中のパッケージ一覧
apt-mark showhold

関連コマンドの整理

apt 系のエコシステムは複数のコマンドで構成されています。

コマンド役割
apt統合フロントエンド(日常操作用)
apt-getパッケージのインストール・削除・更新(スクリプト用)
apt-cacheパッケージ情報の検索・表示
apt-markパッケージの状態管理(hold等)
apt-fileファイルからパッケージを検索(別途インストール必要)
apt-keyリポジトリの署名鍵管理(非推奨→ gpg 推奨)
dpkg低レベルのパッケージ管理(.deb ファイルの直接操作)
dpkg-queryインストール済みパッケージの情報照会

dpkg との使い分け

# .deb ファイルを直接インストール
sudo dpkg -i package.deb

# dpkg でインストールした後に依存関係を解決
sudo apt install -f

# インストール済みパッケージの一覧
dpkg -l

# パッケージのファイル一覧
dpkg -L nginx

# あるファイルがどのパッケージに含まれるか
dpkg -S /usr/bin/nginx

トラブルシューティング

apt update でエラーが出る

# GPG エラーの場合
sudo apt-get update 2>&1 | grep "NO_PUBKEY"
# NO_PUBKEY XXXXXXXXXXXXXXXX

# 鍵を追加(古い方法)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys XXXXXXXXXXXXXXXX

# 現代的な方法(/usr/share/keyrings/ に配置)
curl -fsSL https://example.com/gpg.key \
  | sudo gpg --dearmor -o /usr/share/keyrings/example-keyring.gpg

# リポジトリが見つからない場合
sudo rm /etc/apt/sources.list.d/problematic.list
sudo apt update

apt install でロックエラー

# 別のプロセスが apt を使用中
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock
sudo rm /var/lib/apt/lists/lock
sudo dpkg --configure -a
sudo apt install -f

依存関係の問題

# 壊れたパッケージを修復
sudo apt install -f
sudo dpkg --configure -a

# キャッシュをクリアして再試行
sudo apt clean
sudo apt update
sudo apt install パッケージ名

# 依存関係を手動で確認
apt depends パッケージ名
apt rdepends パッケージ名

ディスク容量不足

# キャッシュを削除
sudo apt clean          # ダウンロード済みの .deb をすべて削除
sudo apt autoclean      # 古いバージョンのみ削除

# 不要なパッケージを削除
sudo apt autoremove

# 容量の大きいパッケージを確認
dpkg-query -W --showformat='${Installed-Size}\t${Package}\n' \
  | sort -rn | head -20

# /var/log のログを整理
sudo journalctl --vacuum-size=500M

よくある質問(FAQ)

Q1. 結局どちらを使えばいいですか?

ターミナルで手作業するなら apt、シェルスクリプトや Dockerfile なら apt-get が推奨です。ただし apt をスクリプトで使っても動かないわけではなく、現状では大きな問題は起きません。厳密さを求めるなら使い分け、そうでなければ apt に統一しても実用上は問題ありません。

Q2. apt upgradeapt full-upgrade の違いは?

apt upgrade は既存パッケージを削除せずにアップグレードします。apt full-upgrade(= apt-get dist-upgrade)は依存関係の変化によって既存パッケージの削除が必要な場合もアップグレードを実行します。日常のアップデートは upgrade、メジャーバージョンアップ時は full-upgrade が適しています。

Q3. apt removeapt purge の違いは?

apt remove はパッケージのバイナリを削除しますが、設定ファイルは残します。apt purge はバイナリと設定ファイルの両方を削除します。再インストールする可能性がある場合は remove、完全に消したい場合は purge を使います。

Q4. sudo apt update を忘れてインストールしようとするとどうなりますか?

古いパッケージリストが使われ、最新バージョンではないパッケージがインストールされることがあります。また、リポジトリに新しく追加されたパッケージが見つからない場合もあります。apt install の前には必ず apt update を実行する習慣をつけましょう。

# ワンライナーでまとめて実行
sudo apt update && sudo apt install -y nginx

Q5. apt-get-y オプションをつけ忘れるとスクリプトが止まります。対策は?

# -y で自動的に Yes を選択
sudo apt-get install -y nginx

# DEBIAN_FRONTEND=noninteractive で対話的なプロンプトをすべてスキップ
DEBIAN_FRONTEND=noninteractive sudo apt-get install -y nginx

# Dockerfile での定番パターン
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y nginx

Q6. インストール済みのパッケージ一覧を取得するには?

# apt で確認
apt list --installed 2>/dev/null

# dpkg で確認(より詳細)
dpkg -l

# パッケージ名のみ抽出
dpkg -l | awk '/^ii/ {print $2}'

# ファイルに保存して別の環境で再現
dpkg --get-selections > packages.txt
# 別の環境で復元
sudo dpkg --set-selections < packages.txt
sudo apt-get dselect-upgrade

Q7. パッケージのバージョンを確認するには?

# インストール済みのバージョン
apt show nginx | grep Version
dpkg -l nginx | awk '/^ii/ {print $3}'

# インストール可能な全バージョン
apt list --all-versions nginx
apt-cache madison nginx  # リポジトリ別に表示

まとめ

aptapt-get の違いは「誰が使うか」にあります。

  • apt:人間がターミナルで手作業するための使いやすいフロントエンド。進捗バー・色付き出力・簡潔なコマンド名が特徴。
  • apt-get:プログラムやスクリプトから呼び出すための安定したインターフェース。出力フォーマットの後方互換性が保証されている。

日常のパッケージ管理で覚えておくべきコマンド:

sudo apt update                  # パッケージリストを更新
sudo apt upgrade                 # パッケージをアップグレード
sudo apt install パッケージ名     # インストール
sudo apt remove パッケージ名      # 削除
sudo apt purge パッケージ名       # 設定ごと削除
sudo apt autoremove              # 不要パッケージを削除
apt search キーワード             # 検索
apt show パッケージ名             # 情報表示
apt list --installed             # インストール済み一覧

難しく考えず「ターミナルでの手作業は apt、スクリプトは apt-get」と覚えておけば、実務では困りません。


参考リンク

公式ドキュメント

関連記事(本サイト)


本記事は2026年6月時点の情報をもとに、Ubuntu 24.04 LTS(apt 2.7.x)での動作確認に基づき作成しています。バージョンによって挙動が異なる場合があるため、最新情報は各公式ドキュメントをご確認ください。