【M1 Mac】anyenvを入れた環境でbrew doctorしたらWarning: "config" scripts exist outside your system...が出た時の対処法
何が起きたのか
anyenvからpyenvをインストールし、pyenvを使ってPython 3.9系をインストールした。
pyenvを導入しbrew doctorコマンド
を実行したところ 導入したenvでなにやらWarningが出てきて困ったので解決法を調べる。
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!
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 which 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/user-name/.anyenv/envs/pyenv/shims/python3.9-config
/Users/user-name/.anyenv/envs/pyenv/shims/python-config
/Users/user-name/.anyenv/envs/pyenv/shims/python3-config
解決策
Homebrewが参照するPATHの中にanyenvのパスが含まれていることが原因
brewコマンドで ARM版HomebrewのPATHを参照するようにエイリアス変更を作成し解決。
alias brew="env PATH=${PATH/\/Users\/${USER}\/\.anyenv\/envs\/pyenv\/shims:/} brew"
brewエイリアスを編集しexec $SHELL -l
でシェルを再読み込みする。
$ brew
Your system is ready to brew.
既存のパスを維持したまま該当エラーが消えてキレイになった。
2022-03-27 追記
brew services
コマンドを使用する際にエラーが発生することが判明したため、以下のエイリアスへ修正した。
alias brew="env PATH=${PATH/\/Users\/${USER}\/\.anyenv\/envs\/pyenv\/shims:/} brew"
問題解決に至るまでの経緯については以下のスクラップでまとめている。
環境
- MacOS Big Sur 11.2.1
- HomeBrew 3.0.2
- iTerm2(Apple Silicon)Build 3.4.4
- anyenv 1.1.2
- pyenv 1.2.23-19-g9ee109b6
- nodenv 1.4.0+3.631d0b6
対処法を調べる
インターネットでエラーメッセージWarning: "config" scripts exist outside your system...
を検索したところいかのような情報が見つかった。
この問題はかなり有名な模様。
どうやら環境変数周りで今後混乱が起こる可能性があるという指摘のよう。
今回はanyenv経由でpyenvをインストールしたが、実際にMac側でもbrewでインストールされたPythonが存在するためConfigファイル周りで意図しない挙動が起こる可能性があるといった感じ。
インターネットで見つかる情報ではbrewコマンドにエイリアスを張り〇〇envのディレクトリを参照しない形にしてあげることで解決できるとのこと。
# 以下のエイリアスを設定する
alias brew="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin brew"
Zshを使っているため.zshrc
に記述する。
echo 'alias brew="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin brew' >> ~/.zshrc
追記してシェルを再起動してみる。
うまくパスが通らない
エイリアスを追加したところ、今度はbrewコマンドが見つからなくなってしまった。
$ brew
zsh: command not found: brew
パスを見直す
さっきエイリアスに指定したパスがこちら。
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin brew
.zshrcに記述したパスを一旦コメントアウトしてパスを確認する。
$ which brew
/opt/home/bin/brew
ここでMacのアーキテクチャがARMになったことでHomebrewのインストールパスが変わったことを思い出す。
さっき指定したパスを見直すと明らかに場所がおかしい。
インターネット上でヒットした情報がx64アーキテクチャのときのパスであったたと気づく。
最終的にbrewコマンドに対して設定したエイリアスは以下のようになった。
alias brew="env PATH=${PATH/\/Users\/${USER}\/\.anyenv\/envs\/pyenv\/shims:/} brew"