apt vs apt-get 徹底比較|違い・使い分け・どちらを使うべきか2026年版
- 作成日 2026.06.23
- linux
「apt と apt-get どちらを使えばいいの?」——Ubuntu/Debianを使い始めたエンジニアなら一度は疑問に思う問いです。
ネット上のチュートリアルでは apt-get を使っているものと apt を使っているものが混在しており、どちらが正しいのか分かりにくい状況です。
本記事では以下の疑問に答えます。
aptとapt-getは何が違うのか- どちらを使えばいいのか
apt-cache・apt-fileなどの関連コマンドとの関係- スクリプトではどちらを使うべきか
- よく使うコマンドの対応表
結論:先に答えを出す
apt | apt-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-get・apt-cache・apt-mark などに分散していた操作を1つのコマンドに統合し、進捗バーや色付き出力などユーザーフレンドリーな改善を加えたものです。
設計上の違い:
apt-getはプログラムから呼び出されることも想定した安定したインターフェースaptは人間が使いやすいインターフェースとして設計された
コマンド対応表
日常操作のほとんどは apt で完結します。
パッケージ操作
| やりたいこと | apt | apt-get |
|---|---|---|
| パッケージリストを更新 | apt update | apt-get update |
| パッケージをインストール | apt install パッケージ名 | apt-get install パッケージ名 |
| パッケージを削除 | apt remove パッケージ名 | apt-get remove パッケージ名 |
| パッケージを削除(設定も) | apt purge パッケージ名 | apt-get purge パッケージ名 |
| 全パッケージをアップグレード | apt upgrade | apt-get upgrade |
| 依存関係も含めてアップグレード | apt full-upgrade | apt-get dist-upgrade |
| 不要パッケージを削除 | apt autoremove | apt-get autoremove |
| ダウンロードキャッシュを削除 | apt clean | apt-get clean |
| 古いキャッシュを削除 | apt autoclean | apt-get autoclean |
検索・情報取得
| やりたいこと | apt | apt-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 --installed | dpkg -l |
| アップグレード可能一覧 | apt list --upgradable | apt-get -u upgrade --assume-no |
| ファイルからパッケージを検索 | apt-file search ファイル名 | apt-file search ファイル名 |
パッケージの保留・固定
| やりたいこと | apt | apt-mark |
|---|---|---|
| パッケージを保留(アップグレード対象外) | apt-mark hold パッケージ名 | apt-mark hold パッケージ名 |
| 保留を解除 | apt-mark unhold パッケージ名 | apt-mark unhold パッケージ名 |
| 保留一覧を表示 | apt-mark showhold | apt-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 upgrade と apt full-upgrade の違いは?
apt upgrade は既存パッケージを削除せずにアップグレードします。apt full-upgrade(= apt-get dist-upgrade)は依存関係の変化によって既存パッケージの削除が必要な場合もアップグレードを実行します。日常のアップデートは upgrade、メジャーバージョンアップ時は full-upgrade が適しています。
Q3. apt remove と apt 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 # リポジトリ別に表示
まとめ
apt と apt-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」と覚えておけば、実務では困りません。
参考リンク
公式ドキュメント
関連記事(本サイト)
- Linux grep オプション一覧 – grepコマンドリファレンス
- Linux sed オプション一覧 – sedコマンドリファレンス
- jq コマンド完全リファレンス – jqコマンドリファレンス
- vim vs neovim 徹底比較 – エディタ比較
- bash vs zsh 徹底比較 – シェル比較
本記事は2026年6月時点の情報をもとに、Ubuntu 24.04 LTS(apt 2.7.x)での動作確認に基づき作成しています。バージョンによって挙動が異なる場合があるため、最新情報は各公式ドキュメントをご確認ください。
-
前の記事
Linux「Too many open files」エラーの原因と解決方法|ulimit・システム設定を徹底解説 2026.06.23
-
次の記事
Rails Solid Cache の使い方|セットアップから本番運用・Redis/Memcachedからの移行 2026.06.23
コメントを書く