LinuxにHomebrewをインストール:Root権限なしで最新のCLIツールを管理

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

深夜の出来事:’sudo apt install’ が贅沢品に思えるとき

火曜日の午前2時、顧客のUbuntu 20.04 LTSサーバーで自動化スクリプトの不具合対応に追われていました。そのスクリプトは新しいAPIを叩くために、GitHub CLI(gh)のバージョン2.40以上を必要としていました。しかし、OSのデフォルトリポジトリにあるのは古いバージョン2.4のみで、必要な機能が全く足りません。

さらに困ったことに、私の使用していたアカウントには sudo 権限がありませんでした。深夜にインフラチームに連絡して権限を申請するのは絶望的です。その時の感覚は、家の中で火事が起きているのにドアが施錠されており、鍵を持っている人はぐっすり眠っている、という状況に似ていました。

駆け出しのシステム管理者だった頃なら、ソースコードからのコンパイルに午後の時間を丸ごと費やし、「依存関係の地獄(dependency hell)」に陥っていたことでしょう。しかし今回は、Homebrew(またはLinuxbrew)を使って、わずか5分でスマートに解決しました。

なぜデフォルトのパッケージマネージャーは不便なのか?

Linuxユーザーなら aptyumdnf には慣れ親しんでいるはずです。しかし、実際の業務環境では、これらには2つの大きな弱点があります。

  • パッケージが古すぎる: DebianやCentOSなどのディストリビューションは安定性を優先するため、パッケージのバージョンが本家より6ヶ月から2年ほど遅れることが一般的です。
  • 権限の壁: sudo 権限がなければ、htopfzf すらインストールできません。大企業では、Root権限の申請プロセスに数日かかることもあります。

バイナリファイルをダウンロードして /usr/local/bin にコピーすることもできますが、アップデートが必要になったときに悲劇が起こります。どのバージョンをどこに入れたのか、すぐに忘れてしまうからです。

Homebrew – macOS専用ではない

BrewはMacの「専売特許」だと思われがちですが、実はLinuxでも非常にスムーズに動作します。ユーザーの home ディレクトリにすべてをインストールするためです。主な3つのメリットは以下の通りです。

  1. Root権限を一切使わずに、自由にパッケージをインストールできる。
  2. 公式リリース直後の最新バージョン(最先端)を常に利用できる。
  3. システムライブラリから完全に分離されているため、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は非常に便利ですが、何でもかんでも入れるのは避けましょう。いくつかのアドバイスがあります:

  1. システムサービスのインストールは避ける: 長期的な安定性を求めるなら、Docker、Nginx、MySQLなどをBrewでインストールするのは避けましょう。これらにはDockerコンテナやOS標準のパッケージを使うべきです。BrewはCLIツールjq、ripgrep、neovimなど)で真価を発揮します。
  2. 競合の確認: aptbrew の両方に同じツールがある場合は、which <パッケージ名> を叩いてどちらが使われているか確認してください。通常はBrew版が優先されます。
  3. ディスク容量: Brewは古いダウンロードファイルをキャッシュとして保持します。サーバーの空き容量が少ない場合は、定期的に brew cleanup を実行しましょう。

おわりに

Linux上のHomebrewは、権限が制限されている場合や、最新のツールが必要な場合の真の「救世主」です。依存関係のトラブルから解放され、最も重要なこと、つまり問題解決に集中できるようになります。もし試したことがなければ、今日にでも検証用サーバーにインストールしてみてください。将来的にかなりの時間を節約できるはずです。

Share: