こんにちは、フルスタックエンジニアのryuです。
今回の記事では、Linuxのapt-getコマンドの使い方を解説します。apt-getコマンドを使ってパッケージのインストールやアンインストールなどの管理をしてみましょう。
結論から言うと、基本の流れはsudo apt-get updateで情報を更新してからsudo apt-get install パッケージ名を実行するだけです。apt-getコマンドでさまざまなパッケージの管理が簡単に行うことができます。
apt-getコマンドとは?Debian/Ubuntu系のパッケージ管理コマンド¶
apt-getコマンドの使い方がよく分からない、と悩んでいる方も多いのではないでしょうか。まずは、apt-getが何をするためのコマンドなのかを整理しておきましょう。
apt-getコマンドとは、リポジトリと呼ばれる保管庫からパッケージを取得し、依存関係ごと自動でインストール・削除してくれるパッケージ管理コマンドのことを指します。UbuntuやDebianといったDebian系のLinuxで使われています。
そもそもパッケージとは、ソフトウェア本体や設定ファイルをひとまとめにした配布形式のことです。Debian系では.debという形式が使われています。
リポジトリは、そのパッケージが大量に集められたインターネット上の保管庫です。取得先の情報は/etc/apt/sources.listや/etc/apt/sources.list.d/配下のファイルで管理されています。
ちなみにUbuntu 24.04以降では、deb822形式と呼ばれる新しい書式のファイルが取得先の管理に使われるようになりました。書式は変わっても、リポジトリの取得先を定義するという役割は同じです。
apt-getの便利さを支えているのが、依存関係の自動解決です。あるソフトの動作に別のライブラリが必要な場合でも、必要なものをまとめて取得してくれるので手作業で探し回る必要がありません。
内部では、dpkgというコマンドが個々の.debファイルの処理を担当しています。apt-getはそのdpkgを拡張して、リポジトリからの取得や依存関係の解決まで面倒を見てくれる司令塔のような存在です。
なお、CentOSやRocky LinuxなどのRed Hat系では、同じ役割をyumやdnfというコマンドが担っています。ディストリビューションの系統によって使うコマンドが変わる点はおさえておきましょう。
apt-getコマンドの基本的な使い方¶
それでは、apt-getコマンドの基本操作を見ていきましょう。流れとしては、パッケージ情報の更新、インストール、削除の3ステップです。
パッケージの操作はシステム全体に影響するため、管理者権限が必要になります。一般ユーザーで作業している場合は、コマンドの先頭にsudoを付けて実行しましょう。
rootユーザーに切り替えてから作業したい方は、suコマンドでスーパーユーザーに切り替える方法も参考にしてください。
apt-get updateでパッケージ情報を更新する¶
パッケージのインストールをする前に、パッケージの最新情報を取得します。
sudo apt-get update
このコマンドは、リポジトリからパッケージの一覧情報をダウンロードして、手元のデータベースを最新の状態にします。パッケージ本体が更新されるわけではありません。
パッケージ情報の更新が完了してから、パッケージのインストールを行いましょう。
情報が古いままだと、すでに存在しないバージョンを取得しようとしてインストールに失敗することがあります。install前のupdateは、セットで実行する習慣をつけるのがおすすめです。
apt-get installでパッケージをインストールする¶
パッケージ情報を更新したら、いよいよインストールです。ここでは例として、bind9をインストールしてみます。
sudo apt-get install bind9
これで、bind9のパッケージがダウンロードされます。bind9はDNSサーバーを構築するためのパッケージです。
bind9を動作させるために必要な、その他のパッケージも自動的にインストールされます。実行すると追加パッケージの一覧と確認が表示されるので、yを入力してEnterを押せばインストールが始まります。
この確認を省略したいときは、sudo apt-get install -y bind9のように-yオプションを付けます。確認へ自動でyesと答えてくれるため、後述するDockerfileなどの自動処理でよく使われます。
apt-get removeでパッケージを削除する¶
次にインストールしたパッケージを削除する方法を解説します。パッケージを削除するためには、以下のコマンドを入力します。
sudo apt-get remove bind9
コマンドを入力すると、パッケージの削除が開始されます。
ただし、removeで削除されるのはプログラム本体だけで、設定ファイルはシステムに残ります。この挙動の違いは、次の章で詳しく整理していきます。
remove・purge・autoremoveの使い分け¶
パッケージの削除には、removeのほかにpurgeとautoremoveというサブコマンドもあります。どれを使えばいいのか迷いやすいポイントなので、違いを順番に見ていきましょう。
removeは、設定ファイルを残したままプログラム本体だけを削除します。あとで再インストールする可能性があるなら、removeを選んでおくと設定を引き継げて便利です。
一方のpurgeは、プログラム本体と設定ファイルの両方を完全に削除します。設定が全て消えるので、アンインストールする際は注意しましょう。
autoremoveは少し毛色が違って、削除するパッケージを自分では指定しません。依存関係として自動的にインストールされたものの、どのパッケージからも使われなくなったパッケージをまとめて掃除してくれます。
パッケージのインストールと削除を繰り返していると、こうした不要パッケージが溜まっていきます。ディスク容量が気になってきたら、sudo apt-get autoremoveを実行してみてください。
updateとupgradeの違いを整理しよう¶
apt-getコマンドで初心者がつまずきやすいのが、updateとupgradeの違いです。名前は似ていますが、役割はまったく異なります。
ひとことで言うと、updateはパッケージ情報の更新で、upgradeはパッケージ本体の更新です。3つの違いを表で整理します。
| サブコマンド | 更新される対象 |
|---|---|
| update | パッケージの一覧情報(データベース) |
| upgrade | インストール済みパッケージの本体 |
| dist-upgrade | パッケージ本体(依存関係の追加・削除も行う) |
updateは、あくまでカタログを最新にするだけの操作です。本屋さんでたとえるなら、新刊リストを取り寄せるイメージですね。
upgradeは、そのカタログをもとにインストール済みパッケージを新しいバージョンへ入れ替えます。つまり、updateを実行してからでないとupgradeは正しく機能しません。
dist-upgradeはupgradeの強力版で、更新に必要であれば新しいパッケージの追加や不要になったパッケージの削除まで行います。カーネルの更新のような、大きな変更を伴う場面で使われるサブコマンドです。
システムを最新に保ちたいときは、sudo apt-get updateとsudo apt-get upgradeを続けて実行するのが定番の流れです。
apt-getコマンドのサブコマンドとオプション一覧¶
apt-getコマンドには、installやremove以外にも多くのサブコマンドやオプションがあります。apt-getコマンドの文法としては、apt-get [オプション] サブコマンド パッケージ名という形です。
それぞれについて紹介します。
apt-getコマンドの主なサブコマンド¶
まずはサブコマンドの一覧です。ここまでに登場したものも含めて、まとめて確認しておきましょう。
| サブコマンド | 説明 |
|---|---|
| update | パッケージの一覧情報を更新する |
| upgrade | インストール済みパッケージをアップグレードする |
| dist-upgrade | 依存関係の変更も含めてシステムをアップグレードする |
| install | パッケージをインストールする |
| remove | パッケージを削除する(設定ファイルは残す) |
| purge | 設定ファイルごとパッケージを削除する |
| autoremove | 不要になった依存パッケージを削除する |
| clean | ダウンロード済みのパッケージファイルを全て削除する |
| autoclean | 古くなったパッケージファイルのみ削除する |
| download | パッケージをカレントディレクトリにダウンロードする |
cleanとautocleanは、/var/cache/apt/archivesに溜まったキャッシュファイルを削除するサブコマンドです。ディスク容量が足りなくなったときに役立ちます。
apt-getコマンドの主なオプション¶
apt-getコマンドには、以下のようなオプションがあります。
| オプション | 説明 |
|---|---|
| -y | 確認に自動でyesと答える |
| -d | インストールはせず、ダウンロードのみ行う |
| -s | システムを変更せず動作をシミュレートする |
| -q | 出力を簡潔にする(ログ記録向け) |
| -f | 壊れた依存関係を修復する |
| --no-install-recommends | 推奨パッケージを入れず、必須の依存のみインストールする |
特に便利なのが-sオプションです。実際には何も変更せずに結果だけを確認できるので、本番サーバーで作業する前のリハーサルに使えます。
-fは、依存関係が壊れてインストールが中断してしまったときの復旧に使うオプションです。エラーメッセージの中でapt-get -f installの実行を促されることもあります。
このようにサブコマンドやオプションなどがあるので覚えておきましょう!
aptとapt-getの違いは?apt-getはもう古い?¶
Ubuntuを使っていると、apt-getではなくaptというコマンドを見かけることも多いですよね。どちらを使えばいいのか、気になっている方も多いのではないでしょうか。
結論としては、ターミナルでの手作業にはapt、シェルスクリプトやDockerfileにはapt-getという使い分けが公式ドキュメントでも推奨されています。apt-getが古くて使えなくなった、というわけではありません。
aptは、apt-getとapt-cacheの主要な機能を1つに統合したコマンドです。プログレスバーが表示されるなど、人間が対話的に使いやすいように設計されています。
一方のapt-getは、出力形式などの後方互換性が重視されています。スクリプトに書いても将来動かなくなる心配が少ないため、自動化の場面では今もapt-getが第一の選択肢です。
主なコマンドの対応関係を表にまとめます。
| やりたいこと | aptの場合 | apt-get系の場合 |
|---|---|---|
| パッケージ情報の更新 | apt update | apt-get update |
| インストール | apt install | apt-get install |
| 削除 | apt remove | apt-get remove |
| パッケージの検索 | apt search | apt-cache search |
| 詳細情報の表示 | apt show | apt-cache show |
| インストール済み一覧 | apt list --installed | dpkg -l |
検索や情報表示の機能は、apt-get自体には含まれておらず、apt-cacheという別のコマンドが担当しています。aptならこれらの操作が1つのコマンドで完結するのが手軽な点です。
ちなみにAPTの仕組みそのものも進化を続けていて、2025年にはAPT 3.0がリリースされました。Debian 13に採用されており、依存関係を解決する新しいソルバーや、見やすく改善されたカラー表示が導入されています。
とはいえ、コマンドの基本的な使い方は変わりません。apt-getの書き方を覚えておけばaptにもほぼそのまま応用できるので、まずは基本を身につけるのが近道です。
Dockerfileでのapt-getの定番パターン¶
apt-getコマンドは、実務ではDockerfileの中で目にする機会が非常に多いコマンドです。コンテナイメージを作るときに、必要なパッケージをapt-getでインストールするからです。
Dockerfileでは、次のような書き方が定番になっています。
RUN apt-get update && apt-get install -y --no-install-recommends curl \
&& rm -rf /var/lib/apt/lists/*
一見複雑ですが、ここまでに紹介した知識で読み解けます。updateとinstallを&&でつないで一度に実行し、-yオプションで確認の入力を省略しています。
updateとinstallを別々の行に分けないのは、Dockerのキャッシュの仕組みによって古いパッケージ情報が使い回されるのを防ぐためです。この2つはワンセットで書くのがお約束になっています。
--no-install-recommendsは、推奨パッケージを省いてイメージサイズを小さくするためのオプションです。最後のrm -rf /var/lib/apt/lists/*では、updateで取得したパッケージ情報を削除してさらに軽量化しています。
削除処理の動きをおさらいしたい方は、ファイルを削除するrmコマンドの使い方をご覧ください。ここで例にしたcurlの役割は、Webサーバーと通信するcurlコマンドの使い方で詳しく解説しています。
apt-getコマンドでよくある疑問¶
最後に、apt-getコマンドを使い始めた方がつまずきやすい疑問に答えていきます。エラーの原因はだいたいパターンが決まっているので、先に知っておくと安心ですよ。
sudoを付けないとどうなる?¶
一般ユーザーがsudoなしで実行すると、権限エラーで失敗します。Permission deniedや、are you root?といったメッセージが出たら権限不足のサインです。
パッケージの操作はシステム全体の変更にあたるため、root権限が必須です。コンテナの中などrootユーザーで作業している場合は、sudoなしでそのまま実行できます。
Unable to locate packageと出るときは?¶
インストール時にE: Unable to locate packageと表示されるのは、指定したパッケージが見つからないという意味のエラーです。原因として一番多いのは、apt-get updateの実行忘れです。
まずsudo apt-get updateを実行してから、あらためてインストールを試してみてください。それでも解決しない場合は、パッケージ名のスペルミスや、リポジトリにそのパッケージが存在しない可能性を疑いましょう。
Could not get lockと出るときは?¶
Could not get lockというエラーは、別のプロセスがパッケージ管理の仕組みを使用中という意味です。バックグラウンドの自動アップデートが動いているときなどに発生します。
多くの場合は、少し待ってから再実行すれば解決します。裏でどんなプロセスが動いているのか確認したいときは、プロセスを確認するpsコマンドの使い方が参考になります。
もし応答しなくなったプロセスを止める必要が出てきたら、プロセスを終了させるkillコマンドの使い方もあわせて確認してみてください。ただし、パッケージ操作中のプロセスを強制終了すると壊れた状態が残ることがあるので、慎重に判断しましょう。
インストール済みのパッケージを確認するには?¶
インストール済みのパッケージは、dpkg -lまたはapt list --installedで一覧表示できます。特定のパッケージが入っているか調べたいときは、dpkg -l | grep パッケージ名のように絞り込むと便利です。
インストール前にパッケージを探したいときは、apt-cache search キーワードで検索できます。名前がうろ覚えでも、キーワードから目的のパッケージを見つけられますよ。
yumやdnfとは何が違う?¶
yumやdnfは、CentOSやRocky LinuxといったRed Hat系ディストリビューションのパッケージ管理コマンドです。役割はapt-getとほぼ同じで、コマンドの書き方と対象のパッケージ形式が異なります。
Debian系は.deb形式、Red Hat系は.rpm形式のパッケージを使います。仕事では両方の系統に触れる可能性があるので、対応関係をセットで覚えておくと役立ちます。
apt-getコマンドの使い方まとめ¶
今回の記事では、apt-getコマンドの使い方を解説しました。
apt-get updateでパッケージ情報を更新してから、installでインストール、removeやpurgeで削除という流れでしたね。updateとupgradeの違いや、aptとの使い分けもあわせておさえておきましょう。
apt-getコマンドはパッケージをインストールするときに最初に使うコマンドなので覚えておきましょう。実際に手を動かしてコマンドを試すと、理解のスピードが一気に上がりますよ。
このようなITに関連する内容を当ブログでは、発信しているので興味のある方は、是非ご覧ください。Linuxを基礎から学びたい方はLinux入門講座一覧を、ネットワークを学びたい方はネットワーク入門講座一覧を、クラウドに進みたい方はAWS入門講座一覧をどうぞ。
さらにlinuxについて勉強したい方はこちらの参考書がオススメです。

![[試して理解]Linuxのしくみ ~実験と図解で学ぶOSとハードウェアの基礎知識](https://m.media-amazon.com/images/I/51CPvtuv+wL._SL500_.jpg)