Closed7

【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を参照するようにエイリアス変更を作成し解決。

.zshrc
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"

問題解決に至るまでの経緯については以下のスクラップでまとめている。

https://zenn.dev/ryuu/scraps/ef4cca0b505bb5

あーるあーる

環境

  • 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...を検索したところいかのような情報が見つかった。

この問題はかなり有名な模様。

https://qiita.com/takuya0301/items/695f42f6904e979f0152
https://teratail.com/questions/253427

どうやら環境変数周りで今後混乱が起こる可能性があるという指摘のよう。
今回はanyenv経由でpyenvをインストールしたが、実際にMac側でもbrewでインストールされたPythonが存在するためConfigファイル周りで意図しない挙動が起こる可能性があるといった感じ。

インターネットで見つかる情報ではbrewコマンドにエイリアスを張り〇〇envのディレクトリを参照しない形にしてあげることで解決できるとのこと。

.zshrc
# 以下のエイリアスを設定する
alias brew="PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin brew"

Zshを使っているため.zshrcに記述する。

.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
あーるあーる

パスを見直す

さっきエイリアスに指定したパスがこちら。

.zshrc
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin brew

.zshrcに記述したパスを一旦コメントアウトしてパスを確認する。

$ which brew

/opt/home/bin/brew

ここでMacのアーキテクチャがARMになったことでHomebrewのインストールパスが変わったことを思い出す。

https://zenn.dev/nkzn/articles/brew3-should-install-with-m1-terminal
https://zenn.dev/ress/articles/069baf1c305523dfca3d

さっき指定したパスを見直すと明らかに場所がおかしい。
インターネット上でヒットした情報がx64アーキテクチャのときのパスであったたと気づく。

最終的にbrewコマンドに対して設定したエイリアスは以下のようになった。

.zshrc
alias brew="env PATH=${PATH/\/Users\/${USER}\/\.anyenv\/envs\/pyenv\/shims:/} brew"
このスクラップは2021/02/27にクローズされました