にわか管理者のためのLinux運用入門 第311回 Macで行く - Homebrewを使う
○動きが違うコマンドがある
macOSに最初からインストールされているコマンドのいくつかは、Linuxディストリビューションにデフォルトでインストールされているコマンドと同じだ。Linuxのときと同じような使い方をすることができる。
一方、macOS独自のコマンドもあり、さらにFreeBSDから移植したコマンドもある。こういったコマンドはLinuxのコマンドとは多少挙動が異なるので、Linuxと同じ要領で使おうとすると問題が出ることがある。
そういった場合の対処方法としては、macOSのコマンド用にコマンドの使い方を変えるか、macOSにLinux版のコマンドをインストールして利用する、といったことが考えられる。普段Linuxをメインに使っているなら、どちらかと言えば後者のほうが便利だろう。
○パッケージ管理システム「Homebrew」
Macにデフォルトでインストールされていないコマンドや、Command Line Tools for Xcodeをインストールしても導入されないコマンドについては、自分でインストールすることで利用できるようになる。方法はいくつかあるが、現在では「Homebrew」というパッケージ管理システムを使うことが多いのではないだろうか。
HomebrewはUbuntuの「apt」やWindowsの「Winget」のように利用できるパッケージ管理システムである。ソフトウエアのインストール/アンインストール、アップグレードなどを簡単に行うことができる。Homebrew自体のインストールも簡単だ。macOSでターミナルアプリを使い、普段からコマンドを入力するような使い方をしている場合には、ぜひ導入を検討していただきたい。
○Homebrewのインストール方法
Homebrewのインストールについては、基本的に「Homebrew」に掲載されている方法を実行すればよい。執筆時点では、次のコマンドを実行することでHomebrewをインストールすることができるとされている。
Homebrewのインストール方法 (執筆時点)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrewの実行には「Command Line Tools for Xcode」と呼ばれるコマンドラインツールが必要だ。上記コマンドを実行すると、インストールの途中で「Command Line Tools for Xcode」がインストールされているかどうかのチェックが行われ、インストールされていなければインストールの作業が行われる。
Homebrewのインストール先はアーキテクチャで異なっている。「M1 Mac」と「Intel Mac」ではインストール先が異なるのだ。それぞれ次のようになっている。
そのため、インストール時に出力される指示が多少異なってる。M1 MacでHomebrewをインストールした場合、インストールの最後に「~/.zprofileに次の設定を追加すること」といった感じのメッセージが出力されるはずだ。
M1 Macでzshを使っている場合 - ~/.zprofileに追加するように指示される設定
eval "$(/opt/homebrew/bin/brew shellenv)"
/opt/homebrew/はmacOSのデフォルトパスではないので、HomebrewやHomebrewでインストールしたソフトウエアを利用するためには各種環境変数の設定が必要になる。上記設定はそれを有効化するためのものだ。M1 Macを使っている場合には忘れずに設定しておこう。どのような環境変数が設定されるかは「/opt/homebrew/bin/brew shellenv」と実行することで確認できる。
設定を行ったら一旦シェルを再起動する。brewというコマンドが利用できるようになっていれば準備完了だ。
○Homebrewを使ってみよう
Homebrewは「brew」というコマンドで操作する。Ubuntuのaptのようなものだ。「brew サブコマンド オプション 引数」といった使い方になっており、aptとよく似ている。aptを使った経験があるなら、ほとんど違和感なく使えるはずだ。
基本的な使い方はこんな感じだ。
brew search でソフトウエアを検索
brew install でソフトウエアをインストール
brew update でメタデータを時々アップデート
brew upgrade でソフトウエアを時々アップグレード
brew uninstall でソフトウエアをアンインストール
次に「neofetch」というソフトウエアを検索してインストールした場合のサンプルを掲載する。
neofetchを検索
parancell-mini ~% brew search neofetch
==> Formulae
neofetch onefetch
parancell-mini ~%
neofetchをインストール
parancell-mini ~% brew install neofetch
Running `brew update --preinstall`...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
==> Updated Casks
Updated 1 cask.
==> Downloading https://ghcr.io/v2/homebrew/core/neofetch/manifests/7.1.0-2
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/neofetch/blobs/sha256:78eb3e99d
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring neofetch--7.1.0.all.bottle.2.tar.gz
???? /opt/homebrew/Cellar/neofetch/7.1.0: 6 files, 350.6KB
==> Running `brew cleanup neofetch`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
parancell-mini ~%
実行すると次のようになる。
アンインストールは次のようになる。
parancell-mini ~% brew uninstall neofetch
Uninstalling /opt/homebrew/Cellar/neofetch/7.1.0... (6 files, 350.6KB)
parancell-mini ~%
こんな感じで新しいコマンドをインストールして利用することができる。
コマンド系のソフトウエアのみならず、GUIアプリケーションもHomebrew経由でインストールできる。包括的なパッケージ管理システム的な使い方もできるのだ。
○同じ名前のコマンドはどうなる?
macOSに最初からインストールされているコマンドではなく、Homebrew経由でLinuxで使われているコマンドをインストールして使うケースを考える。例えば、「sed」や「awk」などのコマンドだ。これらコマンドは同じ名前なので、利用にあたって混乱が発生しかねない。
通常、Homebrewは名前を多少変えてインストールを行う。例えば、Linuxで使われているsedやawkは、Homebrew経由でインストールを行うと「gsed」や「gawk」という名前でインストールされる。sedがmacOSに最初からインストールされているコマンド、gsedが後からHomebrew経由でインストールしたコマンド、といった具合だ。
この辺りをどう使っていくかはケースバイケースなのだが、いくつかやり方が考えられるので、次回以降でより詳しい方法を説明しよう。
○参考
The Missing Package Manager for macOS (or Linux) - Homebrew
macOSに最初からインストールされているコマンドのいくつかは、Linuxディストリビューションにデフォルトでインストールされているコマンドと同じだ。Linuxのときと同じような使い方をすることができる。
一方、macOS独自のコマンドもあり、さらにFreeBSDから移植したコマンドもある。こういったコマンドはLinuxのコマンドとは多少挙動が異なるので、Linuxと同じ要領で使おうとすると問題が出ることがある。
○パッケージ管理システム「Homebrew」
Macにデフォルトでインストールされていないコマンドや、Command Line Tools for Xcodeをインストールしても導入されないコマンドについては、自分でインストールすることで利用できるようになる。方法はいくつかあるが、現在では「Homebrew」というパッケージ管理システムを使うことが多いのではないだろうか。
HomebrewはUbuntuの「apt」やWindowsの「Winget」のように利用できるパッケージ管理システムである。ソフトウエアのインストール/アンインストール、アップグレードなどを簡単に行うことができる。Homebrew自体のインストールも簡単だ。macOSでターミナルアプリを使い、普段からコマンドを入力するような使い方をしている場合には、ぜひ導入を検討していただきたい。
○Homebrewのインストール方法
Homebrewのインストールについては、基本的に「Homebrew」に掲載されている方法を実行すればよい。執筆時点では、次のコマンドを実行することでHomebrewをインストールすることができるとされている。
Homebrewのインストール方法 (執筆時点)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Homebrewの実行には「Command Line Tools for Xcode」と呼ばれるコマンドラインツールが必要だ。上記コマンドを実行すると、インストールの途中で「Command Line Tools for Xcode」がインストールされているかどうかのチェックが行われ、インストールされていなければインストールの作業が行われる。
Homebrewのインストール先はアーキテクチャで異なっている。「M1 Mac」と「Intel Mac」ではインストール先が異なるのだ。それぞれ次のようになっている。
そのため、インストール時に出力される指示が多少異なってる。M1 MacでHomebrewをインストールした場合、インストールの最後に「~/.zprofileに次の設定を追加すること」といった感じのメッセージが出力されるはずだ。
M1 Macでzshを使っている場合 - ~/.zprofileに追加するように指示される設定
eval "$(/opt/homebrew/bin/brew shellenv)"
/opt/homebrew/はmacOSのデフォルトパスではないので、HomebrewやHomebrewでインストールしたソフトウエアを利用するためには各種環境変数の設定が必要になる。上記設定はそれを有効化するためのものだ。M1 Macを使っている場合には忘れずに設定しておこう。どのような環境変数が設定されるかは「/opt/homebrew/bin/brew shellenv」と実行することで確認できる。
設定を行ったら一旦シェルを再起動する。brewというコマンドが利用できるようになっていれば準備完了だ。
○Homebrewを使ってみよう
Homebrewは「brew」というコマンドで操作する。Ubuntuのaptのようなものだ。「brew サブコマンド オプション 引数」といった使い方になっており、aptとよく似ている。aptを使った経験があるなら、ほとんど違和感なく使えるはずだ。
基本的な使い方はこんな感じだ。
brew search でソフトウエアを検索
brew install でソフトウエアをインストール
brew update でメタデータを時々アップデート
brew upgrade でソフトウエアを時々アップグレード
brew uninstall でソフトウエアをアンインストール
次に「neofetch」というソフトウエアを検索してインストールした場合のサンプルを掲載する。
neofetchを検索
parancell-mini ~% brew search neofetch
==> Formulae
neofetch onefetch
parancell-mini ~%
neofetchをインストール
parancell-mini ~% brew install neofetch
Running `brew update --preinstall`...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
==> Updated Casks
Updated 1 cask.
==> Downloading https://ghcr.io/v2/homebrew/core/neofetch/manifests/7.1.0-2
######################################################################## 100.0%
==> Downloading https://ghcr.io/v2/homebrew/core/neofetch/blobs/sha256:78eb3e99d
==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sh
######################################################################## 100.0%
==> Pouring neofetch--7.1.0.all.bottle.2.tar.gz
???? /opt/homebrew/Cellar/neofetch/7.1.0: 6 files, 350.6KB
==> Running `brew cleanup neofetch`...
Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.
Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
parancell-mini ~%
実行すると次のようになる。
アンインストールは次のようになる。
parancell-mini ~% brew uninstall neofetch
Uninstalling /opt/homebrew/Cellar/neofetch/7.1.0... (6 files, 350.6KB)
parancell-mini ~%
こんな感じで新しいコマンドをインストールして利用することができる。
コマンド系のソフトウエアのみならず、GUIアプリケーションもHomebrew経由でインストールできる。包括的なパッケージ管理システム的な使い方もできるのだ。
○同じ名前のコマンドはどうなる?
macOSに最初からインストールされているコマンドではなく、Homebrew経由でLinuxで使われているコマンドをインストールして使うケースを考える。例えば、「sed」や「awk」などのコマンドだ。これらコマンドは同じ名前なので、利用にあたって混乱が発生しかねない。
通常、Homebrewは名前を多少変えてインストールを行う。例えば、Linuxで使われているsedやawkは、Homebrew経由でインストールを行うと「gsed」や「gawk」という名前でインストールされる。sedがmacOSに最初からインストールされているコマンド、gsedが後からHomebrew経由でインストールしたコマンド、といった具合だ。
この辺りをどう使っていくかはケースバイケースなのだが、いくつかやり方が考えられるので、次回以降でより詳しい方法を説明しよう。
○参考
The Missing Package Manager for macOS (or Linux) - Homebrew