実行環境は、macOS Catalina 10.15.7 です。
macOS Big Sur にアップデートしたらどうなるんだろうか….🤔迷ってます
(過去記事でphpenvでよく使うコマンドまとめてます。)
しばらくコードを書いておらず、PHPのバージョンが7.3.7だったので7.4系にバージョンあげますー😅
$ php --version PHP 7.3.7 (cli) (built: Oct 6 2020 15:27:59) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.7, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.7, Copyright (c) 1999-2018, by Zend Technologies with Xdebug v2.7.2, Copyright (c) 2002-2019, by Derick Rethans
$ phpenv versions
に7.4系が入ってなかったので、
$ phpenv update
からの
$ phpenv install 7.4.9
を実行したら、
----------------------------------------- configure: error: Please reinstall the BZip2 distribution -----------------------------------------
といわれたので、
bzip2をreinstallしてパスも通しましたが解決しませんでした。
ググって以下でinstallしてみました。
$ PHP_RPATHS="/usr/local/opt/bzip2/lib" PHP_BUILD_CONFIGURE_OPTS="--with-bz2=/usr/local/opt/bzip2" phpenv install 7.4.9
そしたら、
----------------------------------------- configure: error: Please specify the install prefix of iconv with --with-iconv=<DIR> -----------------------------------------
念のため、iconvもreinstallとパスを通して、以下コマンドで再チャレンジ!
!!!解決コマンド!!!!
$ PHP_RPATHS="$(brew --prefix bzip2)" PHP_BUILD_CONFIGURE_OPTS="--with-bz2=$(brew --prefix bzip2) --with-iconv=$(brew --prefix libiconv)" phpenv install 7.4.9
PHP_RPATHS
の指定はなくても良かったかもです🙇♂️
\ 🎉7.4系installできたー!🎉 /
[Success]: Built 7.4.9 successfully.
$ phpenv versions system 5.6.1 7.0.31 7.1.3 7.1.30 7.2.20 7.3.0 7.3.7 * 7.4.9 (set by /Users/xxxx/xxxx/.ruby-version)
そもそもconfigure optionってなに?
解決できたコマンドは以下ですが、分解して各々の環境変数が何しているか見ていきます。
$ PHP_RPATHS="$(brew --prefix bzip2)" PHP_BUILD_CONFIGURE_OPTS="--with-bz2=$(brew --prefix bzip2) --with-iconv=$(brew --prefix libiconv)" phpenv install 7.4.9
・PHP_RPATHS
PHP_RPATHS="$(brew --prefix bzip2)"
そもそもRPATH
ってなに!?
https://stackoverrun.com/ja/q/2196869 より
-rpath=dir
Add a directory to the runtime library search path. ….
訳)実行中ライブラリの検索パスにディレクトリを追加します。
\ runtime path=rpath
ってこと? runtime
のr
? /
wikipediaさん(https://en.wikipedia.org/wiki/Rpath)にも同じようなことが書いてある👀
configure optionにも--disable-rpath
というオプションがあって、以下のような記述がされていたので、なんか解釈あってそう。
–disable-rpath
実行時にライブラリの検索パスを追加できないようにします。
・PHP_BUILD_CONFIGURE_OPTS
PHP_BUILD_CONFIGURE_OPTS="--with-bz2=$(brew --prefix bzip2) --with-iconv=$(brew --prefix libiconv)"
そのままですが、ビルド時のconfigure optionを指定できるみたいです。
--with-bz2
…bzip2を有効にし、bzip2の場所を指定をします。
--with-iconv
…iconvの場所を指定できます。
参考:
https://qiita.com/kunit/items/c30147f99a48ebb159d5
https://qiita.com/hnw/items/c227d58528c147de15dd
https://www.ritolab.com/entry/211#aj_5_5
まとめ
PHP書いてるけど、こういうmake系は全然わかりません😭まだまだです💦
rpath=replace pathなのかと思ってた。