🍳
pyenv: zlibのエラーでインストールできない (mac)
何が起こったか
pyenv install xxx
pyenv で python をインストールしようとしたら、
python-build: use zlib from xcode sdk
という出力を最後に何も動かなくなってしまう。ctrl + D でterminateすることもできない。
Rosseta でアーキテクチャが食い違ってるのかな?と思いながら調査開始。
解決方法
HomeBrew から zlib をインストール
brew install zlib
パスを通す
以下の環境変数を設定する。
export LDFLAGS="-L/opt/homebrew/opt/zlib/lib"
export CPPFLAGS="-I/opt/homebrew/opt/zlib/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/zlib/lib/pkgconfig"
これでもうまくいかないとき
PYTHON_CONFIGURE_OPTS
を使って強制的に zlib のパスを指定することができる。
以下のコマンドでインストールに成功した。
env PYTHON_CONFIGURE_OPTS="--with-zlib-dir=/opt/homebrew/opt/zlib" pyenv install -v 3.7.17
もう一度別のバージョンをインストールするときはPYTHON_CONFIGURE_OPTS
なしでできた。よくわからない。
おまけ
make できない
上記の方法で zlib の問題は解消できたが、別の問題が発生した。
make
の部分でエラーが起こった
'/opt/homebrew/Cellar/gettext/0.23.1/lib/libintl.8.dylib'
(mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/local/lib/libintl.8.dylib' (no such file),
'/usr/lib/libintl.8.dylib' (no such file, not in dyld cache)
どうやら移行前の古い mac のツールチェーンが残っているようである。
> which make
/opt/toolchain/arm-unknown-linux-gnueabihf/bin/make
> file /opt/toolchain/arm-unknown-linux-gnueabihf/bin/make
// x86_64と表示される。Apple Silicon 用のバイナリなら arm64 のはず。
ひとまず、/opt/toolchain/arm-unknown-linux-gnueabihf/bin/make
を削除。
再度 make コマンドを打ってみると今度は xcode-select の正しいツールチェーンをインストールするためのダイアログが出てきた。
ようやく成功するかと思いきや、更に次の問題にぶつかった。
xcode-selectによるツールチェーンのインストールの無限ループ
先ほどのダイアログでは、インストールが完了した旨のメッセージが出てきた。
試しに手元のターミナルでmake
と入力すると、先ほどと同じインストールのダイアログが開く。
3度目くらいインストールを繰り返して無限ループに陥っていることに気づいた。
色々調べてみたけど解決せず。
結局 PC を再起動したら直ったというオチでした。
長かった。。。
Discussion