【Ruby】rbenvから新バージョンをinstallするのに40時間くらいかかった
もうやだ…
敵1 configure: error: cannot compute sizeof (long long)
普通に$rbenv install 2.5.1
を実行
MacBook-Pro:~ umemiya$ rbenv install 2.5.1 ruby-build: use openssl from homebrew Downloading ruby-2.5.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2 Installing ruby-2.5.1... ruby-build: use readline from homebrew BUILD FAILED (OS X 10.13.2 using ruby-build 20180601) Inspect or clean up the working tree at /var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609021847.17207 Results logged to /var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609021847.17207.log Last 10 log lines: checking for long long... yes checking for off_t... yes checking char bit... 8 checking size of int... 0 checking size of short... 0 checking size of long... 0 checking size of long long... configure: error: in `/var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609021847.17207/ruby-2.5.1': configure: error: cannot compute sizeof (long long) See `config.log' for more details make: *** No targets specified and no makefile found. Stop.
対策:gccの切り替え
膨大なエラーログを凝視しているとgcc関連で引っかかっていることがわかった
OSXのデフォのgccはclangなのでそっからhomebrewでインスコしたgccに切り替える
$ sudo mv /usr/local/bin/gcc /usr/local/bin/gcc_clangver
mv: rename /usr/local/bin/gcc to /usr/local/bin/gcc_clangver: Operation not permitted
ふざけるな😡
El Capitanくらいからひっそりと導入されたSystem Integrity Protecton(SIP)とかいうわけのわからんプロテクトのせいでroot持ち垢でも/usr/あたりがいじくれないようになっているようだ
敵2 Operation not permitted
マシンをcmd+R押しながらrebootかけてリカバリーモードで起動
シェル起動して$ csrutil disable
さようならSIP😜
そのあと$ reboot
で文字通り再起動
$ ln -s /usr/local/Cellar/gcc/8.1.0/bin/gcc-8 /usr/local/bin/gcc
MacBook-Pro:~ umemiya$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/local/Cellar/gcc/8.1.0/libexec/gcc/x86_64-apple-darwin17.5.0/8.1.0/lto-wrapper Target: x86_64-apple-darwin17.5.0 Configured with: ../configure --build=x86_64-apple-darwin17.5.0 --prefix=/usr/local/Cellar/gcc/8.1.0 --libdir=/usr/local/Cellar/gcc/8.1.0/lib/gcc/8 --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-8 --with-gmp=/usr/local/opt/gmp --with-mpfr=/usr/local/opt/mpfr --with-mpc=/usr/local/opt/libmpc --with-isl=/usr/local/opt/isl --with-system-zlib --enable-checking=release --with-pkgversion='Homebrew GCC 8.1.0' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --disable-nls Thread model: posix gcc version 8.1.0 (Homebrew GCC 8.1.0)
O.K. 😄
では改めてrbenv install 2.5.1
MacBook-Pro:~ umemiya$ rbenv install 2.5.1 ruby-build: use openssl from homebrew Downloading ruby-2.5.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2 Installing ruby-2.5.1... ruby-build: use readline from homebrew BUILD FAILED (OS X 10.13.2 using ruby-build 20180601) Inspect or clean up the working tree at /var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609020031.2281 Results logged to /var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609020031.2281.log Last 10 log lines: checking for long long... yes checking for off_t... yes checking char bit... 8 checking size of int... 0 checking size of short... 0 checking size of long... 0 checking size of long long... configure: error: in `/var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609020031.2281/ruby-2.5.1': configure: error: cannot compute sizeof (long long) See `config.log' for more details make: *** No targets specified and no makefile found. Stop.
ふざけるな😡😡
しゃーない切り替えていく
homebrewの超イケメン機能$ 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 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: /opt/local/bin/xml2-config /opt/local/bin/ncursesw6-config /opt/local/bin/ncurses6-config /usr/local/var/pyenv/shims/libdynd-config /usr/local/var/pyenv/shims/python3.5m-config /usr/local/var/pyenv/shims/icu-config /usr/local/var/pyenv/shims/libpng16-config /usr/local/var/pyenv/shims/python3.6m-config /usr/local/var/pyenv/shims/python3.5-config /usr/local/var/pyenv/shims/python-config /usr/local/var/pyenv/shims/python3-config /usr/local/var/pyenv/shims/ncursesw6-config /usr/local/var/pyenv/shims/python3.6-config Warning: You have MacPorts or Fink installed: /opt/local/bin/port This can cause trouble. You don't have to uninstall them, but you may want to temporarily move them out of the way, e.g. sudo mv /opt/local ~/macports Warning: Unbrewed header files were found in /usr/local/include. If you didn't put them there on purpose they could cause problems when building Homebrew formulae, and may need to be deleted. Unexpected header files: /usr/local/include/big_endian.h /usr/local/include/binary_log_types.h /usr/local/include/byte_order_generic.h /usr/local/include/byte_order_generic_x86.h /usr/local/include/cdefs.h /usr/local/include/decimal.h /usr/local/include/errmsg.h /usr/local/include/iconveh.h /usr/local/include/inline.h /usr/local/include/keycache.h /usr/local/include/little_endian.h /usr/local/include/localcharset.h /usr/local/include/m_ctype.h /usr/local/include/m_string.h /usr/local/include/my_alloc.h /usr/local/include/my_byteorder.h /usr/local/include/my_command.h /usr/local/include/my_compiler.h /usr/local/include/my_config.h /usr/local/include/my_dbug.h /usr/local/include/my_dir.h /usr/local/include/my_getopt.h /usr/local/include/my_global.h /usr/local/include/my_list.h /usr/local/include/my_sys.h /usr/local/include/my_thread.h /usr/local/include/my_thread_local.h /usr/local/include/my_xml.h /usr/local/include/mysql.h /usr/local/include/mysql/client_authentication.h /usr/local/include/mysql/client_plugin.h /usr/local/include/mysql/com_data.h /usr/local/include/mysql/get_password.h /usr/local/include/mysql/group_replication_priv.h /usr/local/include/mysql/innodb_priv.h /usr/local/include/mysql/mysql_lex_string.h /usr/local/include/mysql/plugin.h /usr/local/include/mysql/plugin_audit.h /usr/local/include/mysql/plugin_auth.h /usr/local/include/mysql/plugin_auth_common.h /usr/local/include/mysql/plugin_ftparser.h /usr/local/include/mysql/plugin_group_replication.h /usr/local/include/mysql/plugin_keyring.h /usr/local/include/mysql/plugin_trace.h /usr/local/include/mysql/plugin_validate_password.h /usr/local/include/mysql/psi/mysql_file.h /usr/local/include/mysql/psi/mysql_idle.h /usr/local/include/mysql/psi/mysql_mdl.h /usr/local/include/mysql/psi/mysql_memory.h /usr/local/include/mysql/psi/mysql_ps.h /usr/local/include/mysql/psi/mysql_socket.h /usr/local/include/mysql/psi/mysql_sp.h /usr/local/include/mysql/psi/mysql_stage.h /usr/local/include/mysql/psi/mysql_statement.h /usr/local/include/mysql/psi/mysql_table.h /usr/local/include/mysql/psi/mysql_thread.h /usr/local/include/mysql/psi/mysql_transaction.h /usr/local/include/mysql/psi/psi.h /usr/local/include/mysql/psi/psi_base.h /usr/local/include/mysql/psi/psi_memory.h /usr/local/include/mysql/service_command.h /usr/local/include/mysql/service_locking.h /usr/local/include/mysql/service_my_plugin_log.h /usr/local/include/mysql/service_my_snprintf.h /usr/local/include/mysql/service_mysql_alloc.h /usr/local/include/mysql/service_mysql_keyring.h /usr/local/include/mysql/service_mysql_password_policy.h /usr/local/include/mysql/service_mysql_string.h /usr/local/include/mysql/service_parser.h /usr/local/include/mysql/service_rpl_transaction_ctx.h /usr/local/include/mysql/service_rpl_transaction_write_set.h /usr/local/include/mysql/service_rules_table.h /usr/local/include/mysql/service_security_context.h /usr/local/include/mysql/service_srv_session.h /usr/local/include/mysql/service_srv_session_info.h /usr/local/include/mysql/service_ssl_wrapper.h /usr/local/include/mysql/service_thd_alloc.h /usr/local/include/mysql/service_thd_engine_lock.h /usr/local/include/mysql/service_thd_wait.h /usr/local/include/mysql/service_thread_scheduler.h /usr/local/include/mysql/services.h /usr/local/include/mysql/thread_pool_priv.h /usr/local/include/mysql/thread_type.h /usr/local/include/mysql_com.h /usr/local/include/mysql_com_server.h /usr/local/include/mysql_embed.h /usr/local/include/mysql_time.h /usr/local/include/mysql_version.h /usr/local/include/mysqld_ername.h /usr/local/include/mysqld_error.h /usr/local/include/mysqlx_ername.h /usr/local/include/mysqlx_error.h /usr/local/include/mysqlx_version.h /usr/local/include/plugin.h /usr/local/include/plugin_audit.h /usr/local/include/plugin_ftparser.h /usr/local/include/plugin_group_replication.h /usr/local/include/plugin_keyring.h /usr/local/include/plugin_validate_password.h /usr/local/include/sql_common.h /usr/local/include/sql_state.h /usr/local/include/sslopt-case.h /usr/local/include/sslopt-longopts.h /usr/local/include/sslopt-vars.h /usr/local/include/stdbool.h /usr/local/include/stdint.h /usr/local/include/thr_cond.h /usr/local/include/thr_mutex.h /usr/local/include/thr_rwlock.h /usr/local/include/typelib.h /usr/local/include/version.h /usr/local/include/woe32dll.h Warning: You have unlinked kegs in your Cellar Leaving kegs unlinked can lead to build-trouble and cause brews that depend on those kegs to fail to run properly once built. Run `brew link` on these: mysql
ほげえええええええええ
病気が多すぎる
やっぱりマシンも人間と同じでこまめに検診を行うことが大事ですな😅
とりあえず/usr/local/include/
のどれかが悪さをしているので吐き出された大量のエラーログから気になったものを$ rm -rf
していく
そんで何度目かわからないrbenv install 2.5.1
MacBook-Pro:~ umemiya$ rbenv install 2.5.1 ruby-build: use openssl from homebrew Downloading ruby-2.5.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2 Installing ruby-2.5.1... ruby-build: use readline from homebrew BUILD FAILED (OS X 10.13.2 using ruby-build 20180601) Inspect or clean up the working tree at /var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609023654.22314 Results logged to /var/folders/lq/7rcttkms3r9106by5s8qqj_40000gn/T/ruby-build.20180609023654.22314.log Last 10 log lines: In file included from /usr/local/include/stdbool.h:4: In file included from /usr/local/include/stdbool.h:4: In file included from /usr/local/include/stdbool.h:4: In file included from /usr/local/include/stdbool.h:4: /usr/local/include/stdbool.h:4:10: error: #include nested too deeply #include <stdbool.h> ^ 1 error generated. make: *** [compile.o] Error 1 make: *** Waiting for unfinished jobs....
お、まだおかしいけど進捗あるやんけ!😌
今回ははっきりstdbool.h
ファイルが悪さしていることがわかったので
$ rm -rf /usr/local/include/stdbool.h
からのrbenv install 2.5.1
MacBook-Pro:~ umemiya$ rbenv install 2.5.1 ruby-build: use openssl from homebrew Downloading ruby-2.5.1.tar.bz2... -> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2 Installing ruby-2.5.1... ruby-build: use readline from homebrew Installed ruby-2.5.1 to /Users/umemiya/.rbenv/versions/2.5.1
やっと入った!!
curlやopenssl入れ直したりPATH書きまくったりMacPortにまで手を出してたら丸3日ぐらいかかってしまった
まあシェルの勉強にはなった
最後にrubyのバージョン切り替えて終わり!閉廷!
MacBook-Pro:~ umemiya$ rbenv versions * system (set by /Users/umemiya/.rbenv/version) 2.5.1 MacBook-Pro:~ umemiya$ rbenv global 2.5.1 MacBook-Pro:~ umemiya$ ruby -v ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]