プロジェクト

全般

プロフィール

Homebrew

Homebrew は、サードパーティ製のmacOS用ソフトウェア管理ツールです。コマンドラインツールとして提供されています。

公式サイト(日本語ページ)
https://brew.sh/index_ja

Homebrew概要

用語

  • formula
    ソースコードからビルドされたパッケージの定義。複数形formulae
  • cask
    macOSネイティブアプリケーションのパッケージ定義
  • tap
    パッケージ定義のあるディレクトリ(Gitリポジトリなど)

Homebrewのセットアップ

Homebrew のインストール

公式サイトに記載されている次のコマンドを実行します。

% /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 

実行結果を表示

Homebrew は、Xcode コマンドラインツールを必要とするので、macにXcodeがインストールされていない場合、インストールの途中でXcodeをダウンロードしインストールします。

しばらく時間が経過すると、インストールが完了します。Homebrewのコマンドは/opt/homebrew/binの下に入りますが、PATHが通っていないとインストールメッセージに警告と処置方法が表示されます。

インストールメッセージ(PATHが通っていない時)を表示

ターミナルで、指定されたコマンドを実行します。

    echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/<ユーザー名>/.zprofile
    eval "$(/opt/homebrew/bin/brew shellenv)" 

ターミナルから brew help コマンドを実行できればインストールは完了です。

使い方

Homebrewの管理

Homebrewの診断

Homebrewが正しく動作するかを診断するコマンドです。

  • 健全時
    % brew doctor
    Your system is ready to brew.
    

Homebrewの更新

Homebrew自身を最新に更新するコマンドです。

% brew update

実行結果を表示

インストールしたソフトウェアの一覧

サブコマンド list でインストール済みのソフトウェア一覧を表示します。

% brew list
==> Formulae
ca-certificates    mpdecimal    python@3.10    sqlite
gdbm        openssl@1.1    readline    xz

==> Casks
microsoft-remote-desktop    zulu11

ソフトウェアの検索

サブコマンド search で検索キーワードを指定して検索します。

% brew search jdk
==> Formulae
openjdk       openjdk@11     openjdk@8      jd      mdk      cdk

==> Casks
adoptopenjdk           oracle-jdk               semeru-jdk-open
jdk-mission-control    oracle-jdk-javadoc
microsoft-openjdk      sapmachine-jdk
  • 検索キーワードを、'/'で囲むと正規表現として扱われます。
    例: brew search '/.*shark/'

インストール済みソフトウェアの更新

インストール済みソフトウェアに更新があるか確認

% brew outdated
  • 注)本サブコマンド実行前に、パッケージ定義を更新するためサブコマンド update を実行しておくのが望ましい

実行結果の例を表示

更新の適用

% brew upgrade

実行結果(単一のパッケージを更新)の例を表示

caskからインストールしたソフトウェアの更新

macOSネイティブのソフトウェアは、brewでは更新を制御せず、ソフトウェアに任せるので、brew upgrade --caskでは更新しません。

% brew upgrade --cask --greedy

`brew upgrade`でcaskからインストールしたソフトウェアが更新されていました。

インストール

サブコマンド install で指定したパッケージをインストールします。

cask

cask(macOSネイティブアプリケーション)で定義されるパッケージをインストールするときは、--caskオプションを指定します。

% brew install --cask wireshark

caskで定義されたパッケージをインストールすると、Launchpadにアイコンが追加され、そこから実行できます。macOSネイティブアプリケーションなので。

アンインストール

サブコマンド uninstall で指定したパッケージをアンインストールします。

  • --caskオプションでインストールしたパッケージも、--caskオプションなしでuninstallできました

再インストール

サブコマンド reinstall で指定したパッケージを再インストールします。実際にはアンインストール後にインストールを実施するようです。

パッケージ情報

サブコマンド info で指定したパッケージの情報を表示します。

アプリケーションのインストール

ネットワーク

Wireshark

Wiresharkは、GUIを持つアプリケーションでネットワークパケットのキャプチャと表示を行います。

https://formulae.brew.sh/formula/wireshark

  • コマンドライン版のインストール
    % brew install wireshark
    
  • GUI版のインストール
    % brew install --cask wireshark
    

アプリケーションに Wireshark が追加されます。

OpenJDK(Java開発キット)

オープンソースのOpenJDKは、複数組織からビルド済みバイナリが提供されています。Homebrew で入手する際のパッケージ名とtapを次の表に示します。

組織名 ディストリビューション名 brew パッケージ名 brew tap
Oracle Oracle JDK oracle-jdk homebrew-cask
Oracle OpenJDK openjdk homebrew-cask
Eclipse Temurin temurin homebrew-cask
temurin<NN> homebrew-cask-versions
Azul Systems Zulu zulu homebrew-cask
zulu<NN> homebrew-cask-versions
ZuluFx zulufx homebrew-cask
Amazon Corretto corretto homebrew-cask
corretto<NN> homebrew-cacsk-versions
BellSoft Liberica JDK liberica-jdk<NN>[-full | lite] bell-sw/homebrew-liberica
Microsoft Microsoft Build OpenJDK microsoft-openjdk homebrew-cask
microsoft-openjdk<NN> homebrew-cask-versions
SAP SapMachine sapmachine-jdk homebrew-cask
  • 凡例
    • <NN> バージョン番号が付与され、複数バージョン混在を許容する(例 temurin11、OpenJDK 11の実装)
    • [-full | -lite] liberica-jdkは、標準版の他にfull版、lite版があり、含まれる機能に違いがある

バージョンのないパッケージ名は、その時点の最新版を示します(formulaの更新が滞っていない限り)。

Zulu

Azul Systems社がOpenJDKソースをビルドし提供する Zulu JDK のパッケージです。
Zulu JDKのバージョン別パッケージは、追加のtapでリポジトリを設定します。

% brew tap homebrew/cask-versions

tapを設定したら、Zulu JDKのパッケージがリストおよびインストール可能になります。
zulu 11をインストールします。

% brew install --cask zulu11

Zulu 11は、/Library/Java/JavaVirtualMachines/zulu-11.jdk の下にインストールされるので、/usr/libexec/java_homeで使用するjavaの切り替え対象となります。

Liberia JDK

BellSoft社が提供するOpenJDKディストリビューションのLiberica JDKのパッケージです。
Liberica JDKのパッケージは、追加のtapでリポジトリを設定します。

% brew tap bell-sw/liberica

tapを設定したら、liberica JDKのパッケージがリストおよびインストール可能になります。

% brew install --cask liberica-jdk17-full

Liberica JDKには、通常版、full版、lite版と3種類があり、含まれる機能に差異があります。

Liberia-jdk17-full は、/Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk の下にインストールされるので、/usr/libexec/java_homeで使用するjavaの切り替え対象となります。

Oracle OpenJDK

Oracle社が提供するOpenJDK distributionのパッケージです。その時点での最新バージョンのOracle OpenJDKは次のコマンドでインストールできます。

% brew install openjdk

openjdk(version 19) は、/opt/homebrew/Cellar/openjdk/19 にインストールされます。また、次のシンボリックリンクが生成されます。

/opt/homebrew/opt/java    -> ../Cellar/openjdk/19
/opt/homebrew/opt/openjkd -> ../Cellar/openjdk/19

/usr/libexec/java_home で使用するjavaの切り替え対象とするためには、次のリンクを手動で作成します。

% sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
% /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    19 (arm64) "Homebrew" - "OpenJDK 19" /opt/homebrew/Cellar/openjdk/19/libexec/openjdk.jdk/Contents/Home
  :

JDKディストリビューション・バージョンの切り替え

Macでは、OpenJDKディストリビューションを複数インストールしたり、違うバージョンを複数インストールしたりすると、/Library/Java/JavaVirtualMachinesディレクトリの下にそれぞれディレクトリが作られ、その中にOpenJDKがインストールされます。

/usr/lib/java_homeコマンドに-Vオプション(大文字の'V')を指定して実行すると、現在インストールされているJDKのリストと、現在選択されているJDKが表示されます。

% /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    17.0.2+9-LTS (arm64) "BellSoft" - "BellSoft Liberica JDK 17.0.2+9" /Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home
    11.0.13 (arm64) "Azul Systems, Inc." - "Zulu 11.52.13" /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Contents/Home

上述の実行例は、次の2つのJDKがインストールされており、

  • 17.0.2+9-LTS (BellSoft Liberica JDK 17.0.2+9)
  • 11.0.13 (Zulu 11.52.13)

現在選択されているJDKのパスは次
/Library/Java/JavaVirtualMachines/liberica-jdk-17-full.jdk/Conents/Home

コマンドラインで現在のシェル環境のJDKバージョンを切り替え

環境変数JAVA_HOMEに定義されたパスのJDKが選択されます。
JDKのパスは長いので、/usr/libexec/java_homeコマンドに-vオプション(小文字の'v')でバージョンを指定して実行して取得します。

% export JAVA_HOME=`/usr/libexec/java_home -v 11`

% java --version
openjdk 11.0.13 2021-10-19 LTS
OpenJDK Runtime Environment Zulu11.52+13-CA (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM Zulu11.52+13-CA (build 11.0.13+8-LTS, mixed mode)
設定ファイルでJDKバージョンを指定

zshの設定ファイルに記述します。後からコマンドラインで変更できます。

  • .zshrc
    export JAVA_HOME=`/usr/libexec/java_home -v 17`
    

Java開発ツール

SceneBuilder

JavaのGUIライブラリ OpenFX(旧JavaFX)の画面レイアウト作成ツール SceneBuilderです。

% brew install --cask scene builder

統合開発環境

eclipse

% brew search eclipse
 :(略)
==> Casks
eclipse-cpp         eclipse-java          eclipse-php          nodeclipse
eclipse-dsl         eclipse-javascript    eclipse-platform     redeclipse
eclipse-ide         eclipse-jee           eclipse-rcp
eclipse-installer   eclipse-modeling      eclipse-testing

ここでは、Java SE環境の開発をしたいので、eclipse-javaをインストールします。

% brew install --cask eclipse-java

アプリケーションに Eclipse Java が追加されます。

トラブル

インストールした直後は問題なく動作していましたが、macを再起動したところ、eclipseが起動しなくなってしまいました。
「アプリケーション"Eclipse Java"を開くためのアクセス権がありません。このコンピュータまたはネットワークの管理者に問い合わせて下さい」との表示がされる。

  • Finderからアプリケーションの中のEclipse Javaを右クリックし情報を見るで、共有とアクセス権を調べたところ、ユーザーに対して読み/書きとなっており問題なし
  • eclipseのインストーラーdmgファイルをeclipseサイトからダウンロードしインストールしたものは問題なく動作する
  • workspaceを書類フォルダ下に設定したのではないか? 書類フォルダは保護が働くのでアプリケーションに許可を与える必要がある。との情報を得た。
    確かに上述問題では書類フォルダの下にworkspaceを設定していた。
    • システム環境設定 > セキュリティとプライバシー > プライバシー タブ選択、左ペインのファイルとフォルダを選択、右ペインを見ると eclipseは存在しない。

本トラブル後、brewでアンインストールし、Eclipseサイトからdmgファイルをダウンロードしインストールして使っていました。1ヶ月後にEclipseを一度アンインストールし、確認がてらbrewでインストールしたところ本トラブルは発生しませんでした。原因は不明のまま。

IntelliJ IDEA

% brew search intelliji
==> Formulae
intercal

==> Casks
intellij-idea-ce19  intellij-idea19     intellij-idea       intellij-idea-ce

  • intelliJ-idea19とintelliJ-ideaは有償のUltimate版、
  • IntelliJ-idea-ce19とIntelliJ-idea-csは無償のCommunity版
IntelliJ IDEA Community 版のインストール
% brew install --cask Intellij-idea-ce
IntelliJ IDEA Ultimate 版のインストール
% brew install --cask intellij-idea

インストールが完了すると、LaunchpadにIntelliJ IDEAのアイコンが追加されます。

Visual Studio Code

% brew install --cask visual-studio-code

ドキュメントツール

Sphinx

ドキュメント作成ツールです。

% brew install sphinx-doc
  • brewには、sphinxというパッケージがありますが、これは別なツールです。
  • sphinx-doc 4.4.0は、に依存しているので、上述のインストールコマンドでもインストールされます。
  • "keg-only"としてインストールされるので、デフォルトではコマンドへのパスが設定されていません。パス設定等を自力でする必要があります。
環境設定

sphinx-docを使うときだけ必要な設定をするようにします。

  • ~/.zshrc
    # set sphinx-doc enironment
    setsphinx () {
        PATH="/opt/homebrew/opt/sphinx-doc/bin:$PATH" 
    }
    
  • pythonの設定(要記述)
pythonバージョンの混在と使い分け

macOS Big Sur(11.6)では、python バージョン2系(2.7.16)と3系(3.8.9)がインストールされています。
さらに、brewでpython 3.10.1がインストールされました。

T.B.D.

Homebrewの仕組み

ディレクトリ構成

主要なディレクトリ

/opt/homebrew/
  +-- Caskroom/
  |     +-- <パッケージ名>  pkgファイル、.appファイル等が置かれている
  +-- Celler/
  +-- Library/
  |     +-- Taps/                         tapサブコマンドで追加したリポジトリ情報が置かれる
  |           +-- homebrew/
  |                 +-- homebrew-core
  |                 +-- homebrew-cask
  |                 +-- homebrew-cask-versions
  +-- bin/
  +-- completions/
  +-- sbin/
  +-- etc/
  +-- lib/
  +-- opt/
  +-- share/
  +-- var/