深夜の出来事:’sudo apt install’ が贅沢品に思えるとき
火曜日の午前2時、顧客のUbuntu 20.04 LTSサーバーで自動化スクリプトの不具合対応に追われていました。そのスクリプトは新しいAPIを叩くために、GitHub CLI(gh)のバージョン2.40以上を必要としていました。しかし、OSのデフォルトリポジトリにあるのは古いバージョン2.4のみで、必要な機能が全く足りません。
さらに困ったことに、私の使用していたアカウントには sudo 権限がありませんでした。深夜にインフラチームに連絡して権限を申請するのは絶望的です。その時の感覚は、家の中で火事が起きているのにドアが施錠されており、鍵を持っている人はぐっすり眠っている、という状況に似ていました。
駆け出しのシステム管理者だった頃なら、ソースコードからのコンパイルに午後の時間を丸ごと費やし、「依存関係の地獄(dependency hell)」に陥っていたことでしょう。しかし今回は、Homebrew(またはLinuxbrew)を使って、わずか5分でスマートに解決しました。
なぜデフォルトのパッケージマネージャーは不便なのか?
Linuxユーザーなら apt や yum、dnf には慣れ親しんでいるはずです。しかし、実際の業務環境では、これらには2つの大きな弱点があります。
- パッケージが古すぎる: DebianやCentOSなどのディストリビューションは安定性を優先するため、パッケージのバージョンが本家より6ヶ月から2年ほど遅れることが一般的です。
- 権限の壁:
sudo権限がなければ、htopやfzfすらインストールできません。大企業では、Root権限の申請プロセスに数日かかることもあります。
バイナリファイルをダウンロードして /usr/local/bin にコピーすることもできますが、アップデートが必要になったときに悲劇が起こります。どのバージョンをどこに入れたのか、すぐに忘れてしまうからです。
Homebrew – macOS専用ではない
BrewはMacの「専売特許」だと思われがちですが、実はLinuxでも非常にスムーズに動作します。ユーザーの home ディレクトリにすべてをインストールするためです。主な3つのメリットは以下の通りです。
- Root権限を一切使わずに、自由にパッケージをインストールできる。
- 公式リリース直後の最新バージョン(最先端)を常に利用できる。
- システムライブラリから完全に分離されているため、OSを壊す心配がない。
導入のステップ
1. 環境の準備
Brew自体はパッケージのインストールにRoot権限を必要としませんが、Brew本体をインストールするには、サーバーにいくつかの基本的なツールが必要です。もし新規サーバーであれば、管理者に一度だけ以下のコマンドを実行してもらってください。
# Ubuntu/Debianの場合
sudo apt-get install build-essential procps curl file git
# Fedora/CentOS/RHELの場合
sudo yum groupinstall 'Development Tools'
sudo yum install curl file git
2. インストールスクリプトの実行
むやみにコピペするのではなく、安全のためにHomebrew of GitHub公式コマンドを使用しましょう。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
このプロセスには約2〜3分かかります。Brewはユーザーの権限に応じて、/home/linuxbrew/.linuxbrew または ~/.linuxbrew に自動的にインストールされます。
3. 環境変数の設定(重要なステップ)
最も多いミスは、インストール後に brew と打っても command not found と表示されることです。シェルにBrewの実行ファイルの場所を教える必要があります。ターミナルをすぐに閉じず、“Next steps” のセクションを見て、以下のようなコマンドを実行してください。
test -d ~/.linuxbrew && eval "$(~/.linuxbrew/bin/brew shellenv)"
test -d /home/linuxbrew/.linuxbrew && eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo "eval \"\$($(brew --prefix)/bin/brew shellenv)\"" >> <a href="https://itfromzero.com/ja/linux/gnu-stow%e3%81%a7dotfiles%e3%82%92%e7%ae%a1%e7%90%86%e3%81%99%e3%82%8b%ef%bc%9apc%e3%81%ae%e5%86%8d%e3%82%bb%e3%83%83%e3%83%88%e3%82%a2%e3%83%83%e3%83%97%e3%82%92%e4%ba%8c%e5%ba%a6%e3%81%a8%e6%81%90.html">~/.bashrc</a>
これで、ログインするたびにBrewが自動的に利用可能になります。
一瞬でタスクを完了させる
午前2時の当番の話に戻りますが、Brewを導入した後、ツールを手に入れるのにかかった時間はわずか30秒でした。
# パッケージリストの更新
brew update
# 最新版のGitHub CLIをインストール(例:v2.45.0)
brew install gh
# 確認
gh --version
結果:すぐに最新の gh が手に入り、スクリプトを修正して午前2時15分には就寝できました。管理者の返信を待つ必要もありませんでした。
便利な「お役立ち」コマンド:
brew list: インストール済みツールの一覧表示.brew upgrade: 1つのコマンドですべてを最新版にアップグレード.brew doctor: システムの診断(Brewの動作が遅いときに推奨).brew cleanup: 不要なファイルや古いバージョンを削除してディスク容量を確保.
実体験からの注意点
Brewは非常に便利ですが、何でもかんでも入れるのは避けましょう。いくつかのアドバイスがあります:
- システムサービスのインストールは避ける: 長期的な安定性を求めるなら、Docker、Nginx、MySQLなどをBrewでインストールするのは避けましょう。これらにはDockerコンテナやOS標準のパッケージを使うべきです。BrewはCLIツール(jq、ripgrep、neovimなど)で真価を発揮します。
- 競合の確認:
aptとbrewの両方に同じツールがある場合は、which <パッケージ名>を叩いてどちらが使われているか確認してください。通常はBrew版が優先されます。 - ディスク容量: Brewは古いダウンロードファイルをキャッシュとして保持します。サーバーの空き容量が少ない場合は、定期的に
brew cleanupを実行しましょう。
おわりに
Linux上のHomebrewは、権限が制限されている場合や、最新のツールが必要な場合の真の「救世主」です。依存関係のトラブルから解放され、最も重要なこと、つまり問題解決に集中できるようになります。もし試したことがなければ、今日にでも検証用サーバーにインストールしてみてください。将来的にかなりの時間を節約できるはずです。

