APTで十分——でもNalaはさらに上をいく
Ubuntu Serverを日常的に管理しているなら、apt update && apt upgradeを実行して、雑然としたテキストがスクロールし続けるのをじっと眺める経験が必ずあるはずです。APTの出力はかなり素っ気ない——明確なプログレスバーもなく、見やすいサマリーもなく、そして何より重要なのは、パッケージを並列ではなく順番にダウンロードするという点です。
会社のUbuntu 22.04サーバー数台の更新を高速化する方法を探しているときにNalaを見つけました。複雑なシェルスクリプトを書く代わりに、Nalaがずっとシンプルに解決してくれます。本質的にはlibapt-pkg上に構築されたPythonフロントエンドで——APTのリポジトリ管理と依存関係の解決はそのまま維持され、表示部分とダウンロードのロジックだけがよりクリーンに再実装されています。
NalaがAPTより優れている点
- 並列ダウンロード(parallel downloads):Nalaは複数のパッケージを同時にダウンロードします。100Mbpsの回線では、20パッケージのインストールが2〜3倍速くなることも。
- 分かりやすいUI:インストール・削除・アップグレードするパッケージの一覧表、リアルタイムのプログレスバー、色分けによる明確な区別。
- インストール履歴とロールバック:
nala historyですべてのトランザクションを記録。誤ってインストールした場合は、nala history undo <id>でロールバックできます。 - 最速ミラーの自動選択:
nala fetchがミラーをベンチマークし、あなたのリージョンに最適なものを自動選択します。 - 冗長さが少ない:何百行もの繰り返しログは表示されません——本当に重要な情報だけを表示します。
UbuntuにNalaをインストールする
Ubuntu 22.04以降——公式リポジトリから直接インストール
Ubuntu 22.04(Jammy)以降、Nalaはuniverseリポジトリに収録されているため、PPAを追加せずにインストールできます:
# universeリポジトリが有効になっていることを確認
sudo add-apt-repository universe
# パッケージリストを更新
sudo apt update
# Nalaをインストール
sudo apt install nala
Ubuntu 20.04——PPAの追加が必要
# 作者のPPAを追加
echo "deb http://deb.volian.org/volian/ scar main" | sudo tee /etc/apt/sources.list.d/volian-scar.list
wget -qO- https://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-scar.asc
sudo apt update
sudo apt install nala
インストール後、バージョンを確認:
nala --version
# 出力例:nala 0.15.4
詳細な設定
ステップ1:最速ミラーを取得する
Nalaをインストールして最初に使う機能がこれです。nala fetchコマンドは近くのUbuntuミラーを自動的にpingしてベンチマークし、結果を/etc/nala/sources.listに書き込みます:
sudo nala fetch
Nalaは各ミラーの実際のダウンロード速度(MB/s)とともにベンチマーク結果を表形式で表示します。使用したい3〜5つのミラーの番号をカンマ区切りで入力するか、Enterを押して自動選択させます:
# 出力例:
# ┌──────────────────────────────────────────────────────┐
# │ Index │ Mirror URL │ Speed │
# ├───────┼─────────────────────────────────┼────────────┤
# │ 1 │ http://mirror.kakao.com/ubuntu │ 45.2 MB/s │
# │ 2 │ http://ftp.jaist.ac.jp/ubuntu │ 38.7 MB/s │
# │ 3 │ http://ubuntu.mirrors.ovh.net │ 22.1 MB/s │
# └──────────────────────────────────────────────────────┘
# 入力例:1,2,3
# Nalaが/etc/nala/sources.listに自動で書き込みます
Ubuntu 22.04のステージング環境でこの設定をテストしてからproductionへ展開しました。結果は明らかでした:40パッケージのアップグレードが約2分から45秒程度に短縮——近いミラーと並列ダウンロードの組み合わせによる効果です。
ステップ2:基本コマンドを覚える
NalaのコマンドはAPTとほぼ同じです。aptをnalaに置き換えるだけです:
# パッケージリストを更新
sudo nala update
# すべてのパッケージをアップグレード
sudo nala upgrade
# 新しいパッケージをインストール
sudo nala install nginx
# パッケージを削除
sudo nala remove nginx
# 設定ファイルも含めて完全削除
sudo nala purge nginx
# パッケージを検索
nala search nginx
# パッケージ情報を表示
nala show nginx
# キャッシュを削除
sudo nala clean
sudo nala autoremove
ステップ3:並列ダウンロードのスレッド数を制御する
デフォルトでNalaは最大3スレッドで並列ダウンロードを行います。カスタマイズしたい場合は設定ファイルを編集します:
sudo nano /etc/nala/nala.conf
# /etc/nala/nala.confの内容
[nala]
# 並列ダウンロードのスレッド数(推奨:帯域幅に応じて3〜6)
max_concurrent_downloads = 5
# script/CI環境ではアニメーションを無効化
no_animation = false
# 自動確認(aptの-yに相当)
assume_yes = false
CI/CD環境や自動スクリプトで実行する場合は、必要に応じて--assume-yes(または-y)と--no-updateフラグを追加してください:
# DockerfileやCIスクリプト内で使用する場合
sudo nala install -y --no-update curl wget git
ステップ4:APTからNalaへの移行を楽にするエイリアスを設定する
aptを打つ癖がついている場合は、~/.bashrcまたは~/.zshrcにエイリアスを追加できます:
# ~/.bashrcに追加
alias apt='nala'
alias apt-get='nala'
# 即座に反映
source ~/.bashrc
ただし、productionサーバーではこの方法はお勧めしません——どのツールを使っているかを明確にするため、nalaと明示的に入力した方がデバッグ時の混乱を避けられます。
Nalaで履歴を管理してロールバックする
トランザクション履歴を確認する
APTにはこの機能がネイティブにありません——履歴を確認するには/var/log/apt/history.logを生のテキストで読む必要があり、かなり不便です。Nalaはインストール・削除・アップグレードのたびに固有IDを持つトランザクションとして保存します:
nala history
# 出力例:
# ┌─────┬──────────┬──────────────────────┬──────────┬─────────────────────┐
# │ ID │ Command │ Date and Time │ Altered │ Requested By │
# ├─────┼──────────┼──────────────────────┼──────────┼─────────────────────┤
# │ 1 │ install │ 2026-06-01 10:23:45 │ 4 Pkgs │ ubuntu (1000) │
# │ 2 │ upgrade │ 2026-06-01 14:05:12 │ 23 Pkgs │ ubuntu (1000) │
# │ 3 │ install │ 2026-06-02 09:11:33 │ 2 Pkgs │ ubuntu (1000) │
# └─────┴──────────┴──────────────────────┴──────────┴─────────────────────┘
トランザクションの詳細を確認する
# トランザクションID 2で変更されたパッケージを確認
nala history info 2
誤インストール時のロールバック
パッケージをインストールして、不要な依存関係を大量に引き込んでしまったことに気づいたことはありませんか?あるいはさらに悪いことに、何かを壊してしまった場合は?そんなときがnala history undoの出番です:
# トランザクションID 3を取り消す(その際にインストールしたものをアンインストール)
sudo nala history undo 3
# 再インストールしたい場合はredo
sudo nala history redo 3
上書きされた設定ファイルは復元できません——すべてをロールバックできると期待しすぎないでください。ただし、パッケージと不要な依存関係をクリーンに削除するためには、この機能は非常に確実に動作します。
実際の速度比較:Nala vs APT
同じパッケージリストのインストール時間を計測することで、自分で確認できます:
# APTで時間を計測
time sudo apt install -y build-essential curl wget git vim htop tree
# Nalaで時間を計測(上記パッケージを削除後)
sudo apt remove -y build-essential curl wget git vim htop tree
time sudo nala install -y build-essential curl wget git vim htop tree
テストサーバー(CPU 2コアのVPS、Ubuntu 22.04、接続速度約50Mbps)では、10パッケージ以上のインストールでNalaはAPTより35〜50%速く、主に並列ダウンロードの効果によるものです。
定期メンテナンススクリプトへの組み込み
cronスクリプトでapt update && apt upgradeを定期実行していますか?Nalaへの切り替えはたった1行の変更で済みます:
#!/bin/bash
# /usr/local/bin/system-update.sh
# 毎週実行:0 3 * * 0 root /usr/local/bin/system-update.sh
set -e
echo "[$(date '+%Y-%m-%d %H:%M:%S')] システム更新を開始しています..."
# APTの代わりにNalaを使用
nala update
nala upgrade -y
nala autoremove -y
nala clean
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 更新が完了しました。"
# 再起動が必要か確認
if [ -f /var/run/reboot-required ]; then
echo "[WARN] 新しいカーネルを適用するために再起動が必要です!"
fi
実際の注意点
- NalaはAPTをベースにしている:すべてのパッケージ、依存関係の解決、セキュリティはそのまま維持されます——NalaはUIレイヤーに過ぎません。パッケージ関連のエラーが発生した場合は、
aptでデバッグできます。 - 古いスクリプトの
apt-getは置き換えない:レガシースクリプトではapt-getのまま維持してください——Nalaはインタラクティブな使用に最適化されています。 - Nalaのsourcesファイルは独立している:
nala fetchを実行すると、ミラー情報は/etc/apt/sources.listを上書きせず/etc/nala/sources.listに保存されます。2つのファイルが共存し、Nalaは実行時に両方をマージします。 - 特殊なdebconfフロントエンドが必要な場合はNalaを使わない:インタラクティブなdebconfが必要なパッケージ(
iptables-persistentなど)では正しく表示されないことがあります——そのような場合はaptを使用してください。
Nalaは革命的なツールではありません。でも、日々のサーバー作業における生活の質を向上させてくれる存在です——インストールして即使え、何も覚え直す必要がありません。Ubuntu Serverを頻繁に管理しているなら、Nalaのインストールに2分かけるだけで、最初の更新からすぐに違いを実感できます。
