LoginSignup
3
4

More than 5 years have passed since last update.

homebrew環境構築におけるgnu系コマンドのインストールについて

Last updated at Posted at 2018-05-05

はじめに

gnu系コマンドもhomebrewでただ単にインストールするにはbrew install hogeでよいのですが、
このままではコマンドの先頭にgが付きます(例: ggrep
元の名前で使えるようにする方法についてまとめました。

また、homebrewでのコマンド等のインストールには、

  • ビルド済みバイナリが提供される場合(bottledと呼ばれます)
  • ユーザーがソースコードからビルドする必要がある場合

の二つがあることを念頭におく必要があります。
当たり前ですがビルドオプション付きでインストールする際には後者となります。(例: HTTP/2対応のcurl

3つの方法

現状で私が確認した解決法です。

aliasを記述

.bash_profile.zshrcに次のように記述しておきます。

.bash_profile
alias grep='ggrep'

この方法は簡単ですがコマンドの数が多いと正直めんどくさいです

--with-default-namesをつけてインストールする

だいたいググるとこの方法が出てきます。
brew install hoge --with-default-names
この方法が使えないものもあるのでbrew info hogeでチェックしておきましょう(coreutilsなど)
一見するとこの方法がベストなようですが、このオプションは"元の名前でインストールする"(元の名前のバイナリを用意する)という意味です。
つまりビルド済みバイナリが提供されている場合でもソースコードからビルドするのでちょっと時間がかかるという欠点があります。
ビルドオプションをつけたいときや、時間がかかってもいいから後述のパスを通すのがめんどくさい人はこの方法が良さそうです。

PATHを通す

私のお勧めです。
しかし、注意すべき点としてPATHを通すという性質上、よく使うであろうwhichコマンドの結果も変わってしまいます
前述のaliasの場合はwhichの結果は元のままです。

この方法はhomebrewが元の名前で各コマンドへのシンボリックリンクを/usr/local/opt/hoge/libexec/gnubin以下に置いてくれる場合に使えます。
brew info hogeでそのような記述が有れば可能です。

例えばgnu-tarであればこのような感じに書いてあります。

~$ brew info gnu-tar
gnu-tar: stable 1.30 (bottled)
GNU version of the tar archiving utility
https://www.gnu.org/software/tar/
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/gnu-tar.rb
==> Options
--with-default-names
    Do not prepend 'g' to the binary
==> Caveats
gnu-tar has been installed as "gtar".

If you really need to use it as "tar", you can add a "gnubin" directory
to your PATH from your bashrc like:

    PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"

Additionally, you can access their man pages with normal names if you add
the "gnuman" directory to your MANPATH from your bashrc as well:

    MANPATH="/usr/local/opt/gnu-tar/libexec/gnuman:$MANPATH"

このgnu-tarの例であれば.bash_profile.zshrcに次のように記述しておきます。(ついでにマニュアルのパスも)

.bash_profile
export PATH="/usr/local/opt/gnu-tar/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/gnu-tar/libexec/gnuman:$MANPATH"

ちょっとめんどくさいですがたくさんのコマンドにエイリアスを張るよりはマシですね。
手元でビルドする必要もありません。

余談ですがパスを通す時は優先順位に注意しましょう。
/usr/binよりも高い優先順位が必要です。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4