これは、なにをしたくて書いたもの?
macOSで有名なパッケージマネージャーといえたHomebrewだと思います。
HomebrewはLinuxでも使えるようなのですが、Linuxの各ディストリビューションにはだいたいパッケージマネージャーが付属して
います。
それでもHomebrewを使う利点は?というのがピンとこなかったのですが、食わず嫌いもよくなかろうということで1度試して
みたいと思います。
Homebrew
HomebrewのWebサイトはこちら。
Homebrew — The Missing Package Manager for macOS (or Linux)
HomebrewはmacOSまたはLinuxで使えるパッケージマネージャーです。
「What Does Homebrew Do?」を見てみると、特徴はこんなところでしょうか。
- AppleまたはLinux標準で配布されていないパッケージを追加インストールできる
- パッケージを独自のディレクトリーにインストールしてシンボリックリンクを作成する
- prefixの外側にファイルを配置しないため、好きな場所にインストール可能
- 独自のパッケージを簡単に作成可能
- GitとRubyで構成されており、変更を簡単に元に戻したりできる
manページを見ると、sudoなしで使えるところが大きいみたいです。
It can also install software not packaged for your Linux distribution without requiring sudo.
brew(1) – The Missing Package Manager for macOS (or Linux) — Homebrew Documentation
よく出てきていそうな用語を押さえておきましょう。
- formula … アップストリームソースからビルドしたパッケージ
- cask … アップストリームによってビルドされ、署名されたコンパイル済みバイナリーをインストールするパッケージ
インストールする時に自分の環境でビルドするのがformula、ビルド済みなのがcaskということでしょうか。
HomebrewのトップページにformulaはシンプルなRubyスクリプトだと書いていたので、そうなんでしょうね。
class Wget < Formula desc "Internet file retriever" homepage "https://www.gnu.org/software/wget/" url "https://ftp.gnu.org/gnu/wget/wget-1.24.5.tar.gz" sha256 "fa2dc35bab5184ecbc46a9ef83def2aaaa3f4c9f3c97d4bd19dcb07d4da637de" license "GPL-3.0-or-later" def install system "./configure", "--prefix=#{prefix}" system "make", "install" end end
caskにはフォントなども入るようです。
homebrew-core — Homebrew Formulae
homebrew-cask — Homebrew Formulae
homebrew-cask — Homebrew Formulae
なんとなく雰囲気がわかってきた気がします。
ドキュメントのトップページはこちら。
Documentation — Homebrew Documentation
いろいろあって、どう見るのかなかなか迷うのですが…。
インストール方法を見ておきましょうか。
Installation — Homebrew Documentation
といっても、トップページに書かれているのがインストール方法だと言っているので、このページはどちらかというと
インストール要件を見ることになるのですが…。
Linuxについてはこちら。以前はLinuxbrewと呼ばれていたようです。
Homebrew on Linux — Homebrew Documentation
またインストール時だけsudoを使うみたいですね。
The installation script installs Homebrew to /home/linuxbrew/.linuxbrew using sudo.
見ているとglibc、gcc、gitは必要のようです。各Linuxディストリビューションで必要なパッケージは以下に書かれています。
Homebrew on Linux / Requirements
Ubuntu Linux、Debian、Fedora、RHELやCentOS Stream、Arch Linuxあたりを対象にしていそうです。
シェル補完についてはこちら。
brew Shell Completion — Homebrew Documentation
ではインストールしてみましょうか。
環境
今回の環境はこちら。
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 24.04.3 LTS Release: 24.04 Codename: noble $ uname -srvmpio Linux 6.8.0-90-generic #91-Ubuntu SMP PREEMPT_DYNAMIC Tue Nov 18 14:14:30 UTC 2025 x86_64 x86_64 x86_64 GNU/Linux
Homebrewをインストールする
ではHomebrewをインストールする…前に、必要なパッケージをインストールしておきます。
$ sudo apt install build-essential procps curl file git
Homebrew on Linux / Requirements
build-essentialが入るので開発ツール一式、という感じですね。
Homebrewをインストールします。
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
最初にこのあたりのディレクトリーを作成してよいか確認を求められます。
==> Checking for `sudo` access (which may request your password)... ==> This script will install: /home/linuxbrew/.linuxbrew/bin/brew /home/linuxbrew/.linuxbrew/share/doc/homebrew /home/linuxbrew/.linuxbrew/share/man/man1/brew.1 /home/linuxbrew/.linuxbrew/share/zsh/site-functions/_brew /home/linuxbrew/.linuxbrew/etc/bash_completion.d/brew /home/linuxbrew/.linuxbrew/Homebrew ==> The following new directories will be created: /home/linuxbrew/.linuxbrew/bin /home/linuxbrew/.linuxbrew/etc /home/linuxbrew/.linuxbrew/include /home/linuxbrew/.linuxbrew/lib /home/linuxbrew/.linuxbrew/sbin /home/linuxbrew/.linuxbrew/share /home/linuxbrew/.linuxbrew/var /home/linuxbrew/.linuxbrew/opt /home/linuxbrew/.linuxbrew/share/zsh /home/linuxbrew/.linuxbrew/share/zsh/site-functions /home/linuxbrew/.linuxbrew/var/homebrew /home/linuxbrew/.linuxbrew/var/homebrew/linked /home/linuxbrew/.linuxbrew/Cellar /home/linuxbrew/.linuxbrew/Caskroom /home/linuxbrew/.linuxbrew/Frameworks Press RETURN/ENTER to continue or any other key to abort:
ここでsudoを使うみたいですね。
Enterを押すとインストールが進みます。
インストール先を変えたい場合はprefix(デフォルト値は/home/linuxbrew/.linuxbrew)を変えればよさそうですが、ドキュメントを
見ているとどうも推奨されていないようです。というか、言ってしまうとサポート外ですね。
Technically, you can install Homebrew wherever you want. However, you shouldn’t install outside the default, supported, best prefix. Many things will need to be built from source outside the default prefix. Building from source is slow, energy-inefficient, buggy and unsupported. The main reason Homebrew just works is because we use bottles (binary packages) and most of these require using the default prefix. If you decide to use another prefix: don’t open any issues, even if you think they are unrelated to your prefix choice. They will be closed without response.
最後にインストール後のステップが表示されます。
==> Next steps: - Run these commands in your terminal to add Homebrew to your PATH: echo >> /home/user/.profile echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/user/.profile eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" - Install Homebrew's dependencies if you have sudo access: sudo apt-get install build-essential For more information, see: https://docs.brew.sh/Homebrew-on-Linux - We recommend that you install GCC: brew install gcc - Run brew help to get started - Further documentation: https://docs.brew.sh
.profileに追加するよりも、こちらの手順に習った方がよい気がしますね…。
$ 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)\"" >> ~/.bashrc
これでHomebrewが使えるようになります。
$ brew --version Homebrew 5.0.8 $ brew --help Example usage: brew search TEXT|/REGEX/ brew info [FORMULA|CASK...] brew install FORMULA|CASK... brew update brew upgrade [FORMULA|CASK...] brew uninstall FORMULA|CASK... brew list [FORMULA|CASK...] Troubleshooting: brew config brew doctor brew install --verbose --debug FORMULA|CASK Contributing: brew create URL [--no-fetch] brew edit [FORMULA|CASK...] Further help: brew commands brew help [COMMAND] man brew https://docs.brew.sh
もうヘルプを見たらだいたい使い方がわかる気がしますね。
あと、シェル補完も設定しておきます。.bashrcに以下を追記。
if type brew &>/dev/null then HOMEBREW_PREFIX="$(brew --prefix)" if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]] then source "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" else for COMPLETION in "${HOMEBREW_PREFIX}/etc/bash_completion.d/"* do [[ -r "${COMPLETION}" ]] && source "${COMPLETION}" done fi fi
.bashrcを最読み込みするか、Bashを再起動すると反映されます。
パッケージの補完もできますね、これ。
$ brew install temurin temurin temurin@11 temurin@17 temurin@19 temurin@20 temurin@21 temurin@25 temurin@8
確認。
$ brew install hello ✔︎ JSON API cask.jws.json Downloaded 15.3MB/ 15.3MB ✔︎ JSON API formula.jws.json Downloaded 32.0MB/ 32.0MB ==> Fetching downloads for: hello ✔︎ Bottle Manifest hello (2.12.2) Downloaded 11.7KB/ 11.7KB ✔︎ Bottle hello (2.12.2) Downloaded 98.4KB/ 98.4KB ==> Pouring hello--2.12.2.x86_64_linux.bottle.tar.gz 🍺 /home/linuxbrew/.linuxbrew/Cellar/hello/2.12.2: 57 files, 737.9KB ==> Running `brew cleanup hello`... Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`. Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
このくらいにしておきましょうか。
おわりに
Ubuntu Linux 24.04 LTSでHomebrewを試してみました。
Homebrewについては名前こそよく聞くものの、macOSユーザーではないのでほぼスルーしていたのでどういうものか知れたのは
よかったかなと思います。
で、Linuxで使うかと言われると…使わない気がします。
sudoを使わずにパッケージがインストールできる、というのは差別化だと最初思ったのですが、
- インストール時にsudoが必要
/home/linuxbrew/.linuxbrewに集約される
あたりが微妙に映ります。
ひとつのホストを複数ユーザーでインストールパッケージを完全に分離できるのなら意味はあるかもですが、この仕組みだと
実質ひとり用ですからね。
それにだいたいのパッケージはPPAやsnapでインストールできますし、sudoが使えるのならあえてHomebrewを使う理由は
ないように思います。
macOSも使っている人が操作感を合わせたい場合は嬉しいのかもしれません。