- 更新日: 2013年12月25日
- Homebrew
Warning: “config” scripts exist outside your system or Homebrew directories. brew doctor 時の警告
Mac でのパッケージ管理に Homebrew を使っています。久々に brew doctor を実行したら、表題の Warning が出ました。
Warning: “config” scripts exist outside your system or Homebrew directories.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$ brew doctor Warning: "config" scripts exist outside your system or Homebrew directories. `./configure` scripts often look for *-config scripts to determine if software packages are installed, and what additional flags to use when compiling and linking. Having additional scripts in your path can confuse software installed via Homebrew if the config script overrides a system or Homebrew provided script of the same name. We found the following "config" scripts: /Users/username/.rbenv/shims/passenger-config /Users/username/.phpenv/shims/php-config |
rbenv, phpenv で各々 Ruby と PHP を管理していて、それ用の PATH を ~/.zshrc に追加しているので、あーそうなるよねと納得。後半部分を訳すと…
「PATHの中に追加の(config)スクリプトがあると、Homebrewでインストールされるソフトウェアを混乱させるかもよ。もし、そのconfigスクリプトが、システムやHomebrewで供給される同じ名前のスクリプトを上書きした場合にはね。」
ということであまり気持ち良くもないので、この Warning を消すべく対策。ぐぐったけど、いまいち良い解決策がなかったので俺流です。
brew コマンド利用時は、上記問題となる passenger-config, php-config のパスを PATH から除外
まずは PATH を確認。
1 2 3 4 |
$ echo $PATH /usr/local/heroku/bin:/Users/username/.rbenv/shims:/Users/username/.phpenv/shims:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/username/.phpenv/bin |
以下のパスが PATH に含まれているのが、問題の原因です。
1 2 3 |
/Users/username/.rbenv/shims:/Users/username/.phpenv/shims |
brew コマンドの場所を確認。
1 2 3 4 |
$ which brew /usr/local/bin/brew |
brew コマンドのファイルを確認したところシェルスクリプトなので、このファイル自体に問題のパスを除外した PATH を設定します。
1 2 3 4 5 6 7 8 9 10 |
$ vi /usr/local/bin/brew #!/bin/sh # for brew doctor warning PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/username/.phpenv/bin BREW_FILE_DIRECTORY=$(dirname "$0") BREW_FILE_DIRECTORY=$(cd "$BREW_FILE_DIRECTORY" && pwd -P) … |
以下のパスを除いた残りを、/usr/local/bin/brew の先頭に PATH として設定します。
1 2 3 |
/usr/local/heroku/bin:/Users/username/.rbenv/shims:/Users/username/.phpenv/shims |
brew コマンド実行時には、PATH が以下のように設定されます。
1 2 3 |
/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/username/.phpenv/bin |
これで brew doctor で Warning が出なくなりました。通常時は ~/.zshrc に設定してある PATH が読み込まれるので、echo $PATH は元の通り。rbenv(ruby), phpenv(php) の利用にも支障がありません。
1 2 3 4 |
$ echo $PATH /usr/local/heroku/bin:/Users/username/.rbenv/shims:/Users/username/.phpenv/shims:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/username/.phpenv/bin |
本当は、brew コマンドをフックして、brew コマンド実行時の直前に PATH を変更するように、~/.zshrc 等に書けるほうがベターだと思いますがやり方を知りません。誰か知っておられたら是非教えて下さい。従って brew コマンドのファイル自体を編集するという、若干アドホックな対処を行いましたが Warning が消えたので良しとしよう。
【追記 2014/09/25】
以下 Qiita のページで書いてある通り、/usr/local/bin/brew を直接編集するよりも、~/.zshrc や ~/.bashrc で brew コマンドの PATH を変更した alias を作成するほうがスマートです。
homebrew – phpenv入れてる時brew doctorしたら出るWarning消した – Qiita
【追記ここまで】
- Homebrew の関連記事
- Error: uninitialized constant Formulary::HOMEBREW_CORE_FORMULA_REGEX
- brew update でのエラー
- brew update で error: The following untracked working tree files would be overwritten by merge
Leave Your Message!