jekyll serve dependency error - Could not open 'lib curl'

孤者浪人 提交于 2019-11-28 11:44:45

I had the same problem. My solution was the one of TT--, but I put the downloaded file libcurl.dll here:

C:\Ruby24-x64\bin

Any other folder got me the same error, even if it was in the PATH.

My work around was to omit the Jekyll plugins from the Gemfile.

Original Gemfile:

source 'https://rubygems.org' gem 'github-pages', group: :jekyll_plugins

New:

source 'https://rubygems.org' gem 'github-pages'

However, if you need to use the plugins, check out TT--'s answer below. I couldn't get it working myself, but it is the exact same problem so if it worked for him I guess it should work.

Working solution

It's probably not the 'correct' way but this worked for me:

  • Obtain a libcurl.dll from one of the packages here:

    https://curl.haxx.se/download.html#Win64

    (Link was updated, but originally pointed to version 7.40)

  • Put it on the PATH somehow.

    • (I just put it under \ruby24\bin\)
    • Maybe for you it's C:\Ruby24-x64\bin, which others have suggested.

About the problem

  • Seems to be coming from Ruby-FFI. (as described here)

  • I got the same error above about the dependencies of jekyll-remote-theme.

    (One of them is typhoeus which uses FFI.)

  • Also, doing a github-pages health-check showed this error :

    ffi-1.9.18-x64-mingw32/lib/ffi/library.rb:147:in `block in ffi_lib': Could not 
    open libra (LoadError): The specified module could not be found.
    Could not open library 'libcurl.dll': The specified module could not be found.
    Could not open library 'libcurl.so.4': The specified module could not be 
    found.
    Could not open library 'libcurl.so.4.dll': The specified module could not be 
    found.

Things I tried that didn't work:

  • Putting on the PATH the cygcurl-4.dll obtained from the current Curl Download Wizard
  • Renaming the above cygcurl-4.dll to libcurl.dlland putting it on the PATH
  • Installing the msys2 package libcurl-devel 7.57.0-1
  • Renaming the msys-curl-4.dll (from msys2 found at msys64\usr\bin) to libcurl.dll

Didn't try:

  • Building curl / libcurl from the latest source. Because I already had the latest according to pacman -Ss libcurl:

    msys/libcurl 7.57.0-1 (libraries) [installed] Multi-protocol file transfer library (runtime)

    msys/libcurl-devel 7.57.0-1 (development) [installed] Libcurl headers and libraries

The problem I see is mixing the usage of bundle and gem commands, considering you have a Gemfile with just the github-pages gem in your Jekyll root path, do this:

bundle install
bundle exec jekyll serve

That should create a folder with all needed dependencies and then execute the newly installed Jekyll version.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!