jekyll服务依赖性错误 - 无法打开' lib curl'

时间:2017-12-08 18:35:27

标签: ruby jekyll github-pages

我正在尝试运行bundle exec jekyll serve,但它出现了错误:

Dependency Error: Yikes! It looks like you don't have jekyll-remote-theme or one of its dependencies installed. In order to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'Could not open library 'libcurl': 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. ' If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/! jekyll 3.6.2 | Error: jekyll-remote-theme

所以我检查了是否安装了curl:

$ curl --version curl 7.50.1 (x86_64-w64-mingw32) libcurl/7.50.1 OpenSSL/1.0.2h zlib/1.2.8 libidn/1.33 libssh2/1.7.0 nghttp2/1.13.0 librtmp/2.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smtp smtps telnet tftp Features: IDN IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSL libz TLS-SRP HTTP2 Metalink

我搜索过类似的问题,但解决方案似乎与我的问题无关。我是Jekyll和Ruby的新手,我只是希望能够离线查看我的Github页面。

我正在使用Windows 7 64位。任何建议将不胜感激!

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。我的解决方案是TT--,但我将下载的文件libcurl.dll放在这里:

C:\Ruby24-x64\bin

任何其他文件夹都会给我带来同样的错误,即使它在PATH中也是如此。

答案 1 :(得分:2)

工作解决方案

可能不是正确的'方式,但这对我有用:

  • 从此处的其中一个软件包中获取libcurl.dll

    <强> https://curl.haxx.se/download.html#Win64

    链接已更新,但最初指向版本7.40

  • 以某种方式将它放在 PATH 上。

    • (我只是将其置于 \ruby24\bin\
    • 也许对你而言 C:\Ruby24-x64\bin ,其他人建议。

关于问题

  • 似乎来自Ruby-FFI。 (as described here

  • 我在上面遇到了与jekyll-remote-theme的依赖关系相同的错误。

    One of them is typhoeus使用FFI。)

  • 此外,执行github-pages health-check会显示此错误:

    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.

我尝试无效的事情

  • 将从当前Curl Download Wizard
  • 获得的cygcurl-4.dll放入PATH
  • 将上述cygcurl-4.dll重命名为libcurl.dll并将其置于PATH
  • 安装msys2libcurl-devel 7.57.0-1
  • msys-curl-4.dll(从msys2处的msys64\usr\bin)重命名为libcurl.dll

没试过:

  • 从最新的源代码构建curl / libcurl。因为根据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

答案 2 :(得分:2)

我的工作是省略Gemfile中的Jekyll插件。

原始Gemfile:

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

新:

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

但是,如果您需要使用插件,请查看下面的TT--的答案。我不能让它自己工作,但这是完全相同的问题,所以如果它对他有效,我想它应该有效。

答案 3 :(得分:-1)

我看到的问题是混合使用bundle和gem命令,考虑到你的Jekyll根路径中只有github-pages gem的Gemfile,请执行以下操作:

bundle install
bundle exec jekyll serve

这应创建一个包含所有必需依赖项的文件夹,然后执行新安装的Jekyll版本。