動きが違うコマンドがある

macOSに最初からインストールされているコマンドのいくつかは、Linuxディストリビューションにデフォルトでインストールされているコマンドと同じだ。Linuxのときと同じような使い方をすることができる。

一方、macOS独自のコマンドもあり、さらにFreeBSDから移植したコマンドもある。こういったコマンドはLinuxのコマンドとは多少挙動が異なるので、Linuxと同じ要領で使おうとすると問題が出ることがある。

そういった場合の対処方法としては、macOSのコマンド用にコマンドの使い方を変えるか、macOSにLinux版のコマンドをインストールして利用する、といったことが考えられる。普段Linuxをメインに使っているなら、どちらかと言えば後者のほうが便利だろう。

パッケージ管理システム「Homebrew」

Macにデフォルトでインストールされていないコマンドや、Command Line Tools for Xcodeをインストールしても導入されないコマンドについては、自分でインストールすることで利用できるようになる。方法はいくつかあるが、現在では「Homebrew」というパッケージ管理システムを使うことが多いのではないだろうか。

  • Homebrew

    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」ではインストール先が異なるのだ。それぞれ次のようになっている。

OS Homebrewインストール先ディレクトリ
M1 Mac /opt/homebrew/
Intel Mac /usr/local/

そのため、インストール時に出力される指示が多少異なってる。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コマンドの実行サンプル

    brewコマンドの実行サンプル

基本的な使い方はこんな感じだ。

  1. brew search でソフトウエアを検索
  2. brew install でソフトウエアをインストール
  3. brew update でメタデータを時々アップデート
  4. brew upgrade でソフトウエアを時々アップグレード
  5. 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 ~% 

実行すると次のようになる。

  • Homebrewでneofetchをインストールして実行

    Homebrewでneofetchをインストールして実行

アンインストールは次のようになる。

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経由でインストールしたコマンド、といった具合だ。

この辺りをどう使っていくかはケースバイケースなのだが、いくつかやり方が考えられるので、次回以降でより詳しい方法を説明しよう。

参考