Windows ならソフトの公式サイトからインストーラーをダウンロードし、Mac なら App Store から入れますよね。Linux(Debian・Ubuntu)では、ソフトを入れるのも、更新するのも、消すのも、apt(アプト)というコマンド1つで行います。
最初は「ダウンロードしないで、どうやって入れるの?」と不思議でした。でも慣れてしまうと、sudo apt install の1行で必要なものがそろうのは、本当に楽です。サーバー(=ほかのパソコンやアプリにサービスを提供するコンピューター)で自動化を動かすときも、Python や Git などの道具は、まず apt で入れることになります。
この記事では、apt の基本の流れ「リストを更新する → 探す → 入れる → 使う → 消す」を、小さなソフトで一緒に試してみましょう。
- apt のしくみ(パッケージとリポジトリ)
-
apt updateとapt upgradeの違い - ソフトを探す(
apt search・apt show)・入れる(apt install)・消す(apt remove)方法 - 「Unable to locate package」などのつまずきの直し方
-
sudo(=許可されたユーザーが、コマンドの前につけて、そのコマンドだけを管理者の権限で実行するしくみ)のしくみと、パスワードを聞かれる理由がわかる - WSL の Ubuntu・Debian、または Debian・Ubuntu の環境がある
まだの方は、前の記事「Linuxのユーザー・グループ・sudo|rootで作業しない理由【初心者向け】」から読むのがおすすめです。
- Git:ファイルの変更の履歴を記録しておく道具
- URL:Web ページなどの場所を表すアドレス(
https://で始まる文字列) - ディスク:データをしまっておく部品(SSD など)。電源を切っても消えません
- トークン:ログインした状態や、使ってよい範囲を表す文字列。APIキーと同じく、パスワードと同じように人に見せてはいけません
用語で迷ったら、連載のまとめ記事の「よく出てくる用語ミニ辞典」でも確かめられます。
結論:apt の基本は5つのコマンド
| やりたいこと | コマンド | sudo |
|---|---|---|
| ソフトの一覧(リスト)を最新にする | sudo apt update | 必要 |
| ソフトを探す | apt search キーワード | 不要 |
| ソフトの説明を見る | apt show パッケージ名 | 不要 |
| ソフトを入れる | sudo apt install パッケージ名 | 必要 |
| ソフトを消す | sudo apt remove パッケージ名 | 必要 |
| 入っているソフトを更新する | sudo apt upgrade | 必要 |
「見るだけ」のコマンド(search・show)は sudo なしで使えて、「パソコンの中身を変える」コマンド(update・install・remove・upgrade)は sudo が必要、と覚えておくとわかりやすいです。
apt のしくみ:パッケージとリポジトリ
apt で入れるソフトのまとまりをパッケージと呼びます。パッケージは、Debian や Ubuntu が用意したインターネット上の倉庫(リポジトリ)に置かれています。
| 用語 | ひとことで |
|---|---|
| パッケージ | 入れるソフトのまとまり(例:tree・git・python3) |
| リポジトリ | パッケージが置いてある倉庫 |
| パッケージリスト | 倉庫に何があるかの目録(自分のパソコンに保存される) |
| 依存関係 | そのソフトが動くのに必要な、ほかのパッケージ |
apt は、目録を見て必要なパッケージを探し、動くのに必要なほかのパッケージ(依存関係)も一緒に入れてくれます。自分で1つずつ探して入れなくていいのが、apt の便利なところです。
ステップ1:sudo apt update でリストを最新にする
まずは、パッケージの目録を最新にします。ソフトを入れる前には、いつもこれを最初に実行しましょう。
- 1
sudo apt updateここから先の出力例は、Debian 13での実行例です(ユーザー名 kaito・パソコン名 demo のダミー環境)。UbuntuやWSLでは、表示が少し違うことがあります。
Debian 13 の apt は、バージョン 3.0 です。Ubuntu(24.04 など)の apt 2.x とは、表示が少し違います。たとえば apt 2.x では、入れるものの一覧が The following NEW packages will be installed:、確認が Do you want to continue? [Y/n]、見つからないときのエラーが E: Unable to locate package … のように表示されます。言い回しは違っても、意味と使い方は同じです。
(例)
- 1
- 2
- 3
- 4
- 5
- 6
Hit:1 http://deb.debian.org/debian trixie InRelease
Hit:2 http://deb.debian.org/debian trixie-updates InRelease
Get:3 http://deb.debian.org/debian-security trixie-security InRelease [43.4 kB]
Get:4 http://deb.debian.org/debian-security trixie-security/main amd64 Packages [292 kB]
Fetched 335 kB in 0s (3009 kB/s)
All packages are up to date.Get の行は「倉庫から目録を取ってきた」という意味で、Hit の行は「前回から変わっていなかったので、取り直さなかった」という意味です。今回は2つが Hit、セキュリティ更新の倉庫だけが Get でした。最後の All packages are up to date. は「入っているソフトは全部最新です」という意味で、更新できるものがあるときは「〜 packages can be upgraded」のような行になります。
apt update は、パッケージの目録を新しくするだけで、ソフトそのものは1つも更新しません。名前がまぎらわしいのですが、ソフトを新しくするのは、このあと説明する apt upgrade です。
ステップ2:ソフトを探す・説明を見る
今回は、ディレクトリ(=フォルダのこと)の中身を木の形で表示してくれる tree というソフトを入れてみます。まず、入っているか確かめましょう。
- 1
tree --version(例)
- 1
-bash: tree: command not foundcommand not found は「そのコマンドが見つかりません」という意味です。今回の Debian 13 では、「apt install tree で入ります」のような案内は出ませんでした(Ubuntu などでは、入れ方の案内が出ることもあります)。
入っていなければ、apt で探してみます。
- 1
apt search tree今回の Debian 13(apt 3.0)では、apt search の結果が多いと、ページャー(less)で開きました。画面の下に lines 1-29 のように表示されて止まるので、↓ キーやスペースで読み進め、終わるときは q を押します(less の操作は、前の Lv1 の記事と同じです)。
(例:1画面目の先頭)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
389-ds-base/stable 3.1.2+dfsg1-1+deb13u1 amd64
389 Directory Server suite - server
ack/stable 3.8.1-1 all
grep-like program specifically for large source trees
acpica-tools/stable 20250404-1 amd64
ACPICA tools for the development and debug of ACPI tables候補は「tree」を名前や説明に含むもの全部なので、今回の環境では1500件以上ありました。名前の順に並ぶため、tree 本体の行はずっと後ろのほうに、次のように出てきます。
(例)
- 1
- 2
tree/stable 2.2.1-1 amd64
displays an indented directory tree, in color「tree」という文字を含むパッケージがたくさん出てきて、探すのが大変ですね。名前がはっきりわかっているときは、apt show で説明を見るほうが早いです。
- 1
apt show tree(例:主な行だけを抜き出しています)
- 1
- 2
- 3
- 4
- 5
- 6
Package: tree
Version: 2.2.1-1
Installed-Size: 132 kB
Depends: libc6 (>= 2.38)
Download-Size: 59.4 kB
Description: displays an indented directory tree, in colorDescription(説明)を読んで、「たしかにこれだ」と確かめてから入れるのがコツです。
ステップ3:sudo apt install で入れる
- 1
sudo apt install tree(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
kaito@demo:~/linux-practice/chmod-test$ sudo apt install tree
Installing:
tree
Summary:
Upgrading: 0, Installing: 1, Removing: 0, Not Upgrading: 0
Download size: 59.4 kB
Space needed: 132 kB / 106 GB available
Get:1 http://deb.debian.org/debian trixie/main amd64 tree amd64 2.2.1-1 [59.4 kB]
Fetched 59.4 kB in 0s (3120 kB/s)
Selecting previously unselected package tree.
(Reading database ... 25854 files and directories currently installed.)
Preparing to unpack .../tree_2.2.1-1_amd64.deb ...
Unpacking tree (2.2.1-1) ...
Setting up tree (2.2.1-1) ...
Processing triggers for man-db (2.13.1-1) ...Installing: の下が入れるパッケージ、Summary: の下が「更新・追加・削除の数」「ダウンロードする大きさ」「必要なディスク容量」です。最後の Setting up tree の行が出れば、入れ終わっています。
今回は、tree だけを入れればよかった(ほかに一緒に入るものがなかった)ので、確認は出ずにそのまま入りました。動くのに必要なほかのパッケージも一緒に入るときは、途中で「続けますか? [Y/n]」と聞かれます。そのときは、何が入るのか、ほかに何が一緒に入るのかを読んでから Y で Enter を押します。大文字の Y は「何も打たずに Enter を押したら Y の意味」という印です。
入ったら、さっそく使ってみましょう。
- 1
tree ~/linux-practice(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
/home/kaito/linux-practice
├── chmod-test
│ ├── hello.sh
│ ├── memo.txt
│ ├── owner.txt
│ └── private.txt
├── link-test
│ ├── original.txt
│ └── shortcut.txt -> original.txt
└── perm-test
├── box
│ └── inside.txt
└── memo.txt
5 directories, 8 files最後の行の 5 directories, 8 files は「フォルダが5つ、ファイルが8つ」という意味です。図に出ているフォルダは chmod-test・link-test・perm-test・box の4つですが、tree 2.1 以降は一番上のディレクトリ(ここでは /home/kaito/linux-practice 自身)も数に入るので、5 になります(今回の tree は 2.2.1 です)。ファイルの8つのうち1つは、前の記事で作ったシンボリックリンク(=ほかのファイルやディレクトリを指す、ショートカットのようなもの)shortcut.txt(矢印のついた行)です。
これまで ls を何回も打って確かめていた構成が、ひと目でわかるようになりました。
ステップ4:入っているソフトを更新する
入っているソフトを新しくするには、apt upgrade を使います。いきなり実行する前に、何が更新されるのかを確かめましょう。
- 1
- 2
sudo apt update
apt list --upgradable(例)
- 1
- 2
- 3
- 4
- 5
- 6
kaito@demo:~/linux-practice/chmod-test$ sudo apt update
Hit:1 http://deb.debian.org/debian trixie InRelease
Hit:2 http://deb.debian.org/debian trixie-updates InRelease
Hit:3 http://deb.debian.org/debian-security trixie-security InRelease
All packages are up to date.
kaito@demo:~/linux-practice/chmod-test$ apt list --upgradable今回は更新できるパッケージがなかったので、apt list --upgradable は何も表示せずに終わりました。
apt の結果を |(パイプ)で別のコマンドに渡したり、ファイルに書き出したりすると、次のような行が出ることがあります。今回の Debian 13 では、端末に直接表示したときは出ず、パイプでつないだときだけ出ました。
(例)
- 1
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.「apt の表示は、スクリプトで使う前提では作られていないので注意してね」という意味です。手で打って使うぶんには、気にしなくて大丈夫です。
一覧を確かめたら、upgrade を実行します。
- 1
sudo apt upgrade(例)
- 1
- 2
- 3
kaito@demo:~/linux-practice/chmod-test$ sudo apt upgrade
Summary:
Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0今回は更新するものが0件だったので、Upgrading: 0 と表示されて、確認は出ずに終わりました。更新するものがあるときは、一覧と「続けますか? [Y/n]」が出ます。一覧を読んで、問題なければ Y、やめるなら n で Enter です。
手元の WSL なら、気軽に upgrade して大丈夫です。でも、自動化を24時間動かしているサーバーでは、更新の途中でソフトが再起動したり、まれに動きが変わったりすることがあります。動いている処理が少ない時間に行い、終わったら自動化がちゃんと動いているか確かめましょう。サーバーの更新の守り方は、Lv4 で扱います。
ステップ5:sudo apt remove で消す
いらなくなったソフトは、apt remove で消せます。練習で入れた tree を消してみましょう(便利なので、残しておいても大丈夫です)。
- 1
sudo apt remove tree(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
kaito@demo:~/linux-practice/chmod-test$ sudo apt remove tree
REMOVING:
tree
Summary:
Upgrading: 0, Installing: 0, Removing: 1, Not Upgrading: 0
Freed space: 132 kB
Continue? [Y/n] Y
(Reading database ... 25862 files and directories currently installed.)
Removing tree (2.2.1-1) ...
Processing triggers for man-db (2.13.1-1) ...REMOVING: の下が消すパッケージです。消すときは、1つだけでも Continue? [Y/n](続けますか?)と確認が出ます。一覧を読んで、tree だけなのを確かめてから Y を押しました。
Y を押す前に見るのは、次の2か所だけで大丈夫です。
-
REMOVING:の下の名前:消したいソフトの名前だけが並んでいるか。知らない名前が混ざっていないか -
Summary:のRemoving:の数:消したい数(今回は 1)と同じか。思ったより大きい数ならnでやめる
apt install で確認が出たときも同じで、Installing: の下の名前と数を見てから答えます。
- 確認の一覧を読まずに Y を押す:
apt removeは、そのソフトに頼っているほかのソフトも一緒に消すことがあります。一覧に、思ってもいなかった名前(特に、システムやデスクトップの名前が入ったもの)がたくさん並んでいたら、nでやめてください。 - 「-y」をつけて確認を飛ばす:
sudo apt remove -y …のように-yをつけると、確認なしで実行されます。慣れるまでは、消すときに-yは使わないでください。 - python3・sudo・apt などのシステムの道具を消す:Linux そのものが使っているソフトを消すと、システムが正しく動かなくなることがあります。
-
sudo apt autoremove:一緒に入ったけれど、もう使われていないパッケージをまとめて消します。こちらも、実行すると一覧と確認が出るので、中身を読んでから Y を押しましょう。 -
sudo apt purge パッケージ名:ソフトと一緒に、そのソフトの設定ファイルも消します。設定を残しておきたいときはremoveを使います。
よくあるつまずき
「Unable to locate package」と出る
- 1
sudo apt install no-such-package-demo(例)
- 1
Error: Unable to locate package no-such-package-demoDebian 13 の apt 3.0 では、エラーの行が Error: で始まります(Ubuntu などの apt 2.x では E: Unable to locate package … と表示されます)。
メッセージが日本語で出る環境では
日本語の設定(ロケール)になっている環境では、同じエラーが日本語で表示されます。今回の Debian 13 で日本語の設定にして試すと、次のようになりました(パッケージのエラーは、sudo を使わずに試せる apt install --simulate(実際には入れずに、試しに動かすだけのオプション)で確かめています)。
(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
kaito@demo:~$ tree --version
-bash: tree: コマンドが見つかりません
kaito@demo:~$ apt install --simulate no-such-package-demo
注意: これはシミュレーションにすぎません!
apt は実際の実行に root 権限を必要とします。
ロックが非アクティブであることから、今この時点の状態に妥当性が
あるとは言い切れないことに注意してください!
Error: パッケージ no-such-package-demo が見つかりません上の「注意」の4行は、--simulate をつけたときに出る「これは試しに動かしただけです」というお知らせです。エラーの意味は、英語の Unable to locate package と同じです。
「Unable to locate package」は「目録にその名前のパッケージがない」という意味です。次の順に確かめましょう。
- パッケージ名を打ち間違えていないか(
apt searchで探し直す) -
sudo apt updateをしたか(目録が古いと見つからないことがある) - Debian と Ubuntu で、名前が違ったり、パッケージがなかったりしないか
パッケージ名が分からないときは、apt search 探したい言葉 で目録を探せます。今回の Debian 13 で tree を探すと、次のようになりました(表示を短くするために、うしろに | などをつけています。この記号は「リダイレクト(=コマンドの結果の行き先を、画面からファイルなどに切りかえること)とパイプ」の記事でくわしく説明します)。
(例)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
kaito@demo:~$ apt search tree 2>&1 | head -n 4
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
Sorting...
kaito@demo:~$ apt search tree 2>/dev/null | grep -A1 "^tree/"
tree/stable 2.2.1-1 amd64
displays an indented directory tree, in color
kaito@demo:~$ apt search tree 2>/dev/null | grep -c "/stable"
1509
kaito@demo:~$ apt list --upgradable 2>&1 | head -n 3
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
途中の WARNING: の行は、ステップ4のコラムで見た apt の注意書き(パイプでつないだときに出るもの)で、問題ありません。1509 は、tree という言葉で見つかったパッケージの数です。最後の apt list --upgradable は、更新できるものが0件だったので、WARNING の行だけが出ました。
「Could not get lock」と出る
ほかの apt がまだ動いているときに、もう1つ apt を動かそうとすると、「Could not get lock(ロックを取れない)」というエラーになります。ほかのターミナルで apt が動いていないかを確かめて、少し待ってからもう一度実行してください。
ネットには「ロックのファイルを消せば直る」という手順が出てくることがあります。でも、apt が本当に動いている途中でロックを消すと、パッケージの情報が壊れて、そのあと apt が使えなくなることがあります。待つのがいちばん安全です。どうしても終わらないときは、AI に状況を伝えて相談しましょう。
🤖 詰まったらAIに聞こう:apt でソフトが入らない
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Linuxの初心者です。apt でソフトを入れようとしたら、エラーが出ました。
原因と、安全な直し方を、1行ずつ意味つきで教えてください。
ファイルを消したり、設定を書き換えたりする手順の場合は、その前に確かめることも教えてください。
【使っている環境】例:WSLのUbuntu(cat /etc/os-release の PRETTY_NAME の行を貼る)
【入れたいソフト】ここに書く
【実行したコマンド】ここに貼る
【表示されたメッセージ(最後の10行くらい)】ここに貼るsudo で聞かれるパスワードは、AI にもチャットにも貼らないでください。また、会社や有料サービスの専用リポジトリを使っている場合、エラーの中にアクセス用のトークンや社内のURLが含まれていることがあります。貼る前に見直して、「***」に置き換えましょう。
よくある質問
Q. 手順書でよく見る sudo apt update && sudo apt upgrade は、何をしているのですか?
この記事のステップ1とステップ4を、1行で続けて実行しています。&& は「前のコマンドがうまくいったら、次を実行する」という意味です。リストの更新(update)に失敗したときは、更新(upgrade)に進まないので、順番どおりに安全に実行できます。
Q. apt と apt-get は何が違いますか?
どちらもパッケージを入れたり消したりするコマンドです。apt は人が画面を見ながら使うための新しいコマンドで、表示が見やすくなっています。apt-get は昔からあるコマンドで、表示が変わりにくいため、スクリプトの中ではこちらが使われます。ステップ4に出てきた WARNING: apt does not have a stable CLI interface. Use with caution in scripts.(スクリプトで使うときは気をつけて)というお知らせも、この違いから出ています。ふだん手で打つときは apt で大丈夫です。
Q. 入れたソフトは、どこに置かれるのですか?
多くのコマンドは、Lv2 の最初の記事で見た /usr/bin に置かれます。たとえば tree なら、which tree で置き場所を確かめられます。自分のホーム(~)には入らないので、sudo が必要になるわけです。
まとめ
- apt は、Debian・Ubuntu でソフトを入れる・更新する・消すための道具
- まず
sudo apt update(目録の更新)。ソフトの更新はsudo apt upgrade - 探すのは
apt search、説明はapt show(sudo 不要) - 入れるのは
sudo apt install、消すのはsudo apt remove - 確認の一覧は必ず読む。消すときに
-yは使わない - ロックのエラーは、ファイルを消さずに待つ
次の記事では、たくさんのファイルの中から目的の1つを探す、ワイルドカードと find を見ていきます。
次に読む記事
関連する記事
- Python入門|環境構築と最初の1本を動かす:apt で入れられる Python を使って、最初のプログラムを動かしたい方に
- Git入門|init・add・commit を1回やってみる:
sudo apt install gitで入れた Git を、さっそく使ってみたい方に - n8nとは?最初のワークフローを1本つくる:サーバーに入れて動かす自動化ツールを、先に体験したい方に