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 で指定したパッケージの情報を表示します。
アプリケーションのインストール¶
コマンド環境¶
ディレクトリツリー表示¶
% brew install tree
インストール後、tree でカレントディレクトリ以下のツリー構造がコンソールに表示されます。
ssh関連¶
sshpass¶
ssh接続でパスワード認証の際にパスワードをコマンドライン・ファイル・環境変数から与えることでパスワード入力を省略するツール。
Homebrew公式リポジトリはセキュリティ上の理由でsshpassを扱わないようにしているので、tapを指定してインストールします。
brew tap esolitos/ipa brew install esolitos/ipa/sshpass
使い方は、次のようにsshpassのコマンドラインオプションにパスワードと、そのパスワードで接続するsshコマンドを指定します。
すると、sshの接続にパスワードが適用されます。
% sshpass -p "my password" ssh foo@example.com
コマンドラインをスクリプト化やシェル関数に定義することができるようになるのがメリットですが、パスワードがファイルに記載されることになるので要注意です。
ネットワーク¶
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
JavaScript開発¶
Node.js¶
% brew install node
ドキュメントツール¶
Sphinx¶
ドキュメント作成ツールです。
% brew install sphinx-doc
- brewには、sphinxというパッケージがありますが、これは別なツールです。
- sphinx-doc 4.4.0は、python@3.10に依存しているので、上述のインストールコマンドでpython@3.10もインストールされます。
- "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.
画像ツール¶
ffmpeg¶
動画・音声の記録、変換、再生などをおこなうコマンドラインツール。
% brew install ffmpeg
多数の依存パッケージがインストールされます。
動画情報の表示¶
% ffprobe -show_streams -print_format json mymovie.mov
動画形式の変換¶
% ffmpeg -i input.mov output.mp4
-iオプションで変換元の動画ファイルを指定、次に変換後の動画ファイルを指定すると、入力ファイルと出力ファイルの拡張子から変換します。
さらに変換の細部をオプションを追加して指定できます。
動画からGIFアニメーションへの変換¶
% ffmpeg -i input.mov -r 8 output.gif
-iオプションで変換元の動画ファイルを指定、変換後のGIFファイル名を指定すると動画ファイルからGIFアニメーションファイルを生成します。デフォルトではフレームレートがそのまま生成されてしまうので、-rオプションで指定します。
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/