CentOS 6でfont-awesome-sassがインストールできない問題を解決

Irails

CentOS 6.10環境のRailsプログラムをひさびさに更新しようとしたところ、sasscのlibsass.soをビルドする際に、盛大にエラーが発生していることが気がつきました。

一部抜粋すると以下のような感じです。

      01 In file included from src/ast.cpp:2:
      01 src/ast.hpp: In member function ‘virtual size_t Sass::Vectorized<T>::hash()’:
      01 src/ast.hpp:336: error: expected initializer before ‘:’ token
      01 src/ast.hpp:339: error: expected primary-expression before ‘}’ token
      01 src/ast.hpp:339: error: expected ‘;’ before ‘}’ token
      01 src/ast.hpp:339: error: expected primary-expression before ‘}’ token
      01 src/ast.hpp:339: error: expected ‘)’ before ‘}’ token
      01 src/ast.hpp:339: error: expected primary-expression before ‘}’ token
      01 src/ast.hpp:339: error: expected ‘;’ before ‘}’ token

インターネットで調べてみると、CentOS 6のgccのバージョンが古すぎるせいでsasscがコンパイルできないのが原因らしく、無理矢理外gccをバージョンアップすることでコンパイルできるらしいのですが、あまり環境に手を加えることはしたくありません。

ということで別の方法で問題を解決することにしました。

font-awesome-sassを古くする

そもそもsasscが何に使われているのかを調べて見たところ、問題のプロジェクトでは「font-awesome-sass」が依存している模様です。ということで公式リポジトリに以下のような情報を発見。

Gemfileで次のように指定すれば問題が解決するようです。

gem "font-awesome-sass", "< 5.0.13"

実際に確認してみたところこの設定で問題なくインストールできました。今回はfont-awesome-sassでしたが、sasscに依存しているGemは他にも存在すると思います。同じようなコンパイルエラーが発生した場合、Gemを古いバージョンで固定すると問題が解決する可能性がありそうです。

なおfont-awesome-sassの問題はCDNを利用する方法でも解決できるかもしれまえん。