なんかいろいろ困ったけど解消できたのでメモ
だれかの参考になればボク幸せです
状況(作業ログ)
- rails5で初期設定をいじってる状態
- bootstrapのgemを入れたところまでで、
bundle install
は成功 -
rake assets:precompile
を行ったところ、Autoprefixer doesn’t support Node v0.10.36. Update it.エラーが発生 - その後Autoprefixerが利用するexecjsのランタイムをmini_racerにしようとするもgemインストールができない
- atomic が見つからないとかなんとか言われる。(GCCが古いので対応するimportファイルがなかった?)
- mini_racer公式に書いてあるように、gcc 4.8を入れ、一時的に利用することで解消
※公式が言ってること
Note using v8.h and compiling MiniRacer requires a C++11 standard compiler, more specifically clang 3.5 (or later) or gcc 4.8 (or later).
環境とか
- centos 6.10
- ruby 2.5.3
- rails 5.2.2
原因っぽいこと
- AutoPrefixerはexecjsのgemに依存している
- execjsは、runtimeとして色々選べるが、当環境は「Nodejs」を利用しており、環境に入ってるNodeのバージョンが古かった
- mini_racerがインストール出来ないのは、gccのバージョンが古いから(4.4.7だった)
- centos6はgccのデフォルトが4.4.7っぽい
解決案
- 【その1】Nodeをアップデートする
- 【その2】runtimeを違うの使う
解決方法は【その2】を選択
- なんかナウいらしいので、runtimeはmini_racerを利用するようにした
手順とか
基本的にここのgccアップデート方法のページを元に実施
GPGのkeyをインポートする
sudo rpm --import http://ftp.riken.jp/Linux/cern/slc58/x86_64/RPM-GPG-KEYs/RPM-GPG-KEY-cern
slc6-devtoolset.repoの情報をゲットしとく
wget -O /etc/yum.repos.d/slc6-devtoolset.repo http://linuxsoft.cern.ch/cern/devtoolset/slc6-devtoolset.repo
devtoolset-2をインストール
sudo yum install devtoolset-2
一時的にdevtoolset-2を利用できるようにする
(zsh使ってるのでzsh指定)
scl enable devtoolset-2 zsh
結果
- bundle installする→成功
- bundle rake assets:precompileをする→成功
補足情報
- AutoPrefixerはその名の通りcssのprefixを付与してくれるgemでexecjsに依存している
- execjsはruby上でjavascriptを実行出来るようにしてくれるっぽいgemでそのために各種runtimeが利用できる
- 利用できるruntimeはこの辺に書いてある
- therubyracerよりもmini_racerがナウいらしいのでそれをruntimeで指定する
- gcc4.8を利用しないとmini_racerインストールできないけど、centos6だと死ぬ
参考サイト
- GCCのアップデート方法
- CERN's GPG KEYの場所
- gcc4.4のstatus ※atomicっぽいものが無いことが確認できる
- gcc4.8のstatus
- mini_racerのインストールでエラー出てたとこ
- execjsのじょうほう
- therubyracerはナウいmini_racerにしようぜのプルリク
- Try doing a gem uninstall libv8 and retry installing mini_racer. ということを教えてくれてるissue
- nodejsが使えないならmini_racer入れちゃえばいいじゃない、のstackoverflow様
- AutoprefixerはNode v0.10.37をサポートしてないよ、のissue