トラブルシューティング備忘録です。
先日やっていた作業をdockerでコンテナを立て直して始めたところnokogiri
の影響か、エラーがでました。
先日まで作業ができていたにもかかわらず、なぜこんなことになったのか謎でしたが、解決できましたので共有します。環境はmacです。
以下エラー内容です。
LoadError: dlopen(/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/nokogiri-1.8.0/lib/nokogiri/nokogiri.bundle, 9): Library not loaded: /usr/local/opt/xz/lib/liblzma.5.dylib
Referenced from: /Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/nokogiri-1.8.0/lib/nokogiri/nokogiri.bundle
Reason: Incompatible library version: nokogiri.bundle requires version 8.0.0 or later, but liblzma.5.dylib provides version 6.0.0 - /Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/nokogiri-1.8.0/lib/nokogiri/nokogiri.bundle
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/nokogiri-1.8.0/lib/nokogiri.rb:32:in `rescue in <top (required)>'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/nokogiri-1.8.0/lib/nokogiri.rb:28:in `<top (required)>'
/Users/Home/Desktop/project/web-project/config/application.rb:7:in `<top (required)>'
/Users/Home/Desktop/project/web-project/Rakefile:4:in `require'
/Users/Home/Desktop/project/web-project/Rakefile:4:in `<top (required)>'
/Users/Home/.rbenv/versions/2.3.4/bin/bundle:22:in `load'
/Users/Home/.rbenv/versions/2.3.4/bin/bundle:22:in `<main>'
LoadError: cannot load such file -- nokogiri/2.3/nokogiri
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `block in require'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:232:in `load_dependency'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/activesupport-4.1.8/lib/active_support/dependencies.rb:247:in `require'
/Users/Home/Desktop/project/web-project/vendor/bundle/ruby/2.3.0/gems/nokogiri-1.8.0/lib/nokogiri.rb:30:in `<top (required)>'
/Users/Home/Desktop/project/web-project/config/application.rb:7:in `<top (required)>'
/Users/Home/Desktop/project/web-project/Rakefile:4:in `require'
/Users/Home/Desktop/project/web-project/Rakefile:4:in `<top (required)>'
/Users/Home/.rbenv/versions/2.3.4/bin/bundle:22:in `load'
/Users/Home/.rbenv/versions/2.3.4/bin/bundle:22:in `<main>'
(See full trace by running task with --trace)
nokogiri
関連のエラーはよく聞いていたので覚悟はしていたのですが、出るとやはり驚きますよね。
でも根本はそれではありませんでした。
肝はここ。
Library not loaded: /usr/local/opt/xz/lib/liblzma.5.dylib
この子が読み取れないらしいので、ルートディレクトリ配下からたどっていきました(なぜかファイルが見つからなかったので順に追っていってます)。
すると、
$ cd usr
$ cd local
$ cd opt
$ cd xz
-bash: cd: xz: No such file or directory
はい発見。 xz
以下のディレクトリがない。
もしや、と思って
$ brew install xz
をすると、無事インストール完了。
確認していくと
$ cd xz
$ cd lib
$ find liblzma.5.dylib
liblzma.5.dylib
ロードできなかったファイルがインストールされた。
dockerのコンテナ自体を作り直して、MySQL環境用のシェルを叩いたら無事成功。
まとめとしては、ファイルが読み込めなかったらたどって探してみる+なければインストールって流れですね。
projectの関係上、gitlabの権限がなくbundle install
できなかったのが一番の問題でした。
なぜなくなってしまったのかは謎ですが、おそらく原因はコンテナを立て直した際に何かしらファイルが削除されたのかな…と。そんなことないと思うんですが。。。
とりあえず解決して満足です。nokogiri
のせいにしちゃってごめんね。