aptでパッケージ管理
前提:4-5までが完了し、ホームディレクトリ(~、空の~/practiceあり)にいる状態から始めます。ここまでの4章では、すでにサーバーに入っている道具だけを使ってきました。この5-1では視点を切り替えて、道具そのものを増やす・消す作業を練習します。第1章でずっとお預けにしていたtreeコマンドも、このページでついにインストールして使えるようになります。aptという道具箱管理システムを使って、update(情報更新)・upgrade(道具の入れ替え)・install(新規追加)・remove(撤去)の一連の流れを体験します。
このページではSET 1〜3、合計30行のコマンドを上から順に叩きます。手打ち推奨(コピーは確認用)です。
SET 1 ― パッケージ一覧を最新化する
- $sudo apt update
- Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
- 142 packages can be upgraded. Run 'apt list --upgradable' to see them.
- $apt list --upgradable
- $apt list --upgradable | wc -l
- $apt search cowsay
- $apt show cowsay
- $apt show cowsay | head -n 5
- $which dpkg
- $dpkg -l | head
- $dpkg -l | wc -l
- $cd ~
Linuxではソフトウェアを、インストーラーをダウンロードして……という形ではなく、パッケージ※1という単位でまとめて管理します。パッケージを取ってくる先がリポジトリ※2(倉庫)で、apt(Advanced Package Toolの略)はそのリポジトリとやり取りしてパッケージの検索・取得・削除をまとめて面倒見てくれる道具です。
1行目のsudo apt updateは、リポジトリ側に新しいパッケージや更新版が出ていないか、手元の目録だけを最新化するコマンドです。パッケージそのものはまだ何もダウンロードしません。出力例のように「142 packages can be upgraded」のような行が出れば、それだけの数のソフトが更新可能な状態にあるという意味です。sudoが要るのは、apt updateがシステム全体で共有する目録ファイル(/var/lib/apt以下)を書き換えるため、一般ユーザーの権限では実行できないからです。
2行目のapt list --upgradableで、実際に更新可能なパッケージの名前と新旧バージョンの一覧を確認できます。こちらは読み取るだけなのでsudoは不要です。3行目のようにwc -l(3-5で学んだ行数カウント)とパイプでつなげば、更新対象がちょうど何件あるかを数字で確認できます。
4行目のapt search cowsayはリポジトリの中から名前やキーワードにcowsayを含むパッケージを検索します。5行目のapt show cowsayでは、そのパッケージの説明文・バージョン・サイズ・依存関係などの詳細を見ることができ、6行目のようにheadで先頭数行だけに絞ることもできます。まだインストールはしていません。
7行目のwhich dpkgで、aptの裏側で実際にパッケージのインストール状態を管理している、より低レベルな道具dpkg※3の場所を確認します。8〜9行目のdpkg -lで、今このサーバーに入っているパッケージを一覧します。件数がかなり多いため、headで先頭だけ、wc -lで総数だけを確認しています。aptが「取ってくる係」、dpkgが「今何が入っているか台帳を持っている係」というイメージで捉えると関係が整理できます。
apt updateは「更新情報を確認するだけ」、次のSETで使うapt upgradeは「実際に更新する」です。名前が似ているので混同しがちですが、updateしてからupgradeという順番も含めてセットで覚えてください。

スマホのアプリストアで「アップデートあります」って通知が来る感じ、あれとほぼ同じだよ! apt updateが通知チェック、apt upgradeが実際のアップデートボタン。サーバーだと自動更新にしないことが多いから、自分の手で定期的にこの2つを叩く習慣をつけるといいよ。
SET 2 ― アップグレードとtree・htopの導入
- $sudo apt upgrade -y
- Setting up linux-firmware (20240318.1) ...
- 142 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
- $apt list --upgradable
- $uptime
- $sudo apt install tree htop
- The following NEW packages will be installed: htop tree
- $which tree
- $which htop
- $tree --version
- $tree ~/practice
- $htop
- $cd ~
1行目のsudo apt upgrade -yで、SET 1で確認した142個のパッケージを実際に最新版へ入れ替えます。-yは「途中の確認(Do you want to continue? [Y/n])に全部yesで答える」オプションです。パッケージ数やサーバーのスペックによっては、この行だけで数分かかることがあります。出力が止まって見えても慌てず待ってください。sudoが必要な理由はupdateと同じで、システム全体のソフトウェアを書き換えるからです。2行目のapt list --upgradableで改めて確認すると、更新待ちの一覧が空になっていることがわかります。3行目のuptime(4-2で登場済み)で、アップグレード中もサーバーが落ちずに動き続けていることを確認しておきます。
4行目、いよいよ本題です。sudo apt install tree htopで、tree(ディレクトリ構造を樹形図で見せるコマンド)とhtop(プロセスを見やすく表示するコマンド、4-1のtopの進化版)の2つを同時にインストールします。installのあとにスペース区切りで複数のパッケージ名を並べれば、まとめて導入できます。5〜6行目のwhichで、2つとも実行ファイルとして配置されたことを確認します。
7行目のtree --versionで、インストールされたバージョンを確認できます。多くのコマンドは--versionで自分のバージョンを教えてくれます。そして8行目のtree ~/practice、これが第1章でずっとお預けにしていた瞬間です。1-2の設計時点ではtreeが未インストールだったためls -Rで代用していましたが、ここでようやく本物のtreeが使えます。ディレクトリの階層構造を罫線付きの樹形図で一目で見渡せる、ファイル管理者の定番ツールです。
9行目のhtopを実行すると、CPU・メモリの使用率がカラフルなバーグラフで表示され、実行中のプロセスがリアルタイムに更新される対話型の画面が開きます。4-1で使ったtopより視認性が高く、多くの現場エンジニアが愛用しています。確認できたらqキーを押すと通常のプロンプトへ戻ります(出力例には表示していませんが、実際の画面には終了方法が下部に案内されています)。
apt upgrade -yは時間がかかる代表的なコマンドです。実務では夜間やメンテナンス時間帯にまとめて実行することが多く、「固まった」と勘違いして何度もCtrl+Cで止めるのは禁物です。気長に待ちましょう。
SET 3 ― パッケージを入れて消す練習
- $apt search cowsay
- $sudo apt install cowsay
- $which cowsay
- $/usr/games/cowsay 'Hello Linux'
- _____________
- < Hello Linux >
- $dpkg -l | grep cowsay
- $dpkg -s cowsay | head -n 3
- $sudo apt remove cowsay -y
- $which cowsay
- $sudo apt autoremove -y
- $cd ~
1行目のapt search cowsayで、SET 1でも触れた検索コマンドを使い、改めてcowsay(牛のアスキーアートがセリフを喋ってくれるだけの、実用性はほぼないネタパッケージ)がリポジトリにあることを確認します。2行目のsudo apt install cowsayで実際にインストールします。3行目のwhichで配置場所を確認すると、多くの環境では/usr/games/cowsayのように、通常のコマンドとは別の場所に入っていることがわかります。4行目でその実行ファイルを直接指定して呼び出すと、出力例のように吹き出し付きの牛が挨拶してくれます。
5行目のdpkg -l | grep cowsayは、4-1〜4-5では出てこなかった組み合わせですが、3-4で学んだgrepとdpkg -lをパイプでつなぐだけです。膨大な一覧から目的のパッケージだけを探すときは、この組み合わせが定番になります。iiという2文字が先頭についていれば「正常にインストール済み」という意味です。6行目のdpkg -s(status)を使うと、apt showと似た形で、個別のパッケージのインストール状態をより詳しく確認できます。
7行目のsudo apt remove cowsay -yで、練習用に入れたcowsayを撤去します。installの逆がremoveだと対で覚えてください。8行目のwhichで、コマンドが見つからなくなった(何も表示されない)ことを確認します。9行目のsudo apt autoremove -yは、cowsayを入れたときに一緒に入った、他のどのパッケージからも必要とされなくなった付属品(依存パッケージ)をまとめて掃除するコマンドです。upgradeやremoveのあとにときどき実行しておくと、サーバーのディスクをきれいに保てます。

cowsayで遊んでる場合じゃないんだけど、これくらいの「入れて→試して→消す」を気軽にできるのが自分のサーバーを持つ醍醐味だよ! Lightsailなら壊れても作り直せるから、気になったパッケージはどんどんapt searchして試してみて。ちゃんとremoveで片付けるところまでがワンセットね。
apt removeは本体プログラムを消しますが、設定ファイルは残ることがあります。設定ファイルごと完全に消したいときはapt purgeを使いますが、通常の運用ではremoveで十分です。
まとめ
5-1では、aptとdpkgを使ってパッケージを検索・更新・導入・削除する一連の流れを体験しました。このページでtreeとhtopが使えるようになり、第5章末までこのままインストール済みの状態が続きます。このページで叩けるようになったコマンドを一覧にまとめます。
| コマンド | 何をするか | 覚え方 |
|---|---|---|
sudo apt update | パッケージ目録を最新情報に更新する | アプリストアの通知チェック |
apt list --upgradable | 更新可能なパッケージを一覧表示する | 更新待ちリストを見る |
sudo apt upgrade -y | 更新可能なパッケージを実際に更新する | -yで確認を全部yesにする |
sudo apt install <名前> | 新しいパッケージを導入する | install(入れる) |
sudo apt remove <名前> | パッケージを削除する | installの逆 |
sudo apt autoremove -y | 不要になった依存パッケージを掃除する | 付属品の後片付け |
apt search <語句> | リポジトリ内のパッケージを検索する | search(探す) |
apt show <名前> | パッケージの詳細情報を表示する | show(見せる) |
dpkg -l | インストール済みパッケージを一覧する | 台帳を持っている係 |
次のページ「5-2. systemdでサービス管理」では、インストールしたソフトが裏側でどのように「動き続けている」のか、systemctlを使って観察・操作していきます。