CLOVER🍀

That was when it all began.

Ubuntu Linux 24.04 LTSでHomebrewを使ってみる

これは、なにをしたくて書いたもの?

macOSで有名なパッケージマネージャーといえたHomebrewだと思います。

HomebrewはLinuxでも使えるようなのですが、Linuxの各ディストリビューションにはだいたいパッケージマネージャーが付属して
います。

それでもHomebrewを使う利点は?というのがピンとこなかったのですが、食わず嫌いもよくなかろうということで1度試して
みたいと思います。

Homebrew

HomebrewのWebサイトはこちら。

Homebrew — The Missing Package Manager for macOS (or Linux)

HomebrewはmacOSまたはLinuxで使えるパッケージマネージャーです。

The Missing Package Manager for macOS (or 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、FedoraRHELCentOS 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.

Homebrew on Linux / Install

最後にインストール後のステップが表示されます。

==> 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に追加するよりも、こちらの手順に習った方がよい気がしますね…。

Homebrew on Linux / Install

$ 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も使っている人が操作感を合わせたい場合は嬉しいのかもしれません。