ruby-on-rails - 无法安装 recommendify gem - hiredis.h 未找到

标签 ruby-on-rails ruby redis hiredis

我正在尝试安装 recommendify gem。

这个 gem 尝试编译一个名为 recommendify 的本地 bin,使其比 ruby​​ 的解析器更快。

首先我尝试像其他普通 gem 一样安装:

gem install recommendify

这是错误:

➜  ~  gem install recommendify
Building native extensions.  This could take a while...
ERROR:  Error installing recommendify:
ERROR: Failed to build gem native extension.

    /Users/villa/.rbenv/versions/1.9.3-p448/bin/ruby extconf.rb

make mkdir -p ../bin
gcc -Wall recommendify.c -lhiredis -o ../bin/recommendify
recommendify.c:4:10: fatal error: 'hiredis/hiredis.h' file not found
#include <hiredis/hiredis.h>
     ^
1 error generated.
make: *** [build] Error 1

其次,我用 brew 安装了 hiredis:

brew install hiredis

现在如果我搜索 hiredis 我可以看到:

➜  ~  brew list hiredis
/usr/local/Cellar/hiredis/0.11.0/include/hiredis/ (5 files)
/usr/local/Cellar/hiredis/0.11.0/lib/libhiredis.0.10.dylib
/usr/local/Cellar/hiredis/0.11.0/lib/ (3 other files)
➜  ~  find /usr/local/include -name hiredis
/usr/local/include/hiredis
➜  ~  ls -al /usr/local/include/hiredis
lrwxr-xr-x  1 villa  admin  40 15 dic 12:54 /usr/local/include/hiredis -> ../Cellar/hiredis/0.11.0/include/hiredis

在我的路径中包含 '/usr/local/include' -> 安装 hiredis 时的目录:

➜  ~  echo $PATH
/usr/local/include:/Users/villa/.rbenv/shims:/usr/local/Cellar/elixir/0.10.3/bin:/Users/villa/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

有什么想法吗?提前致谢

编辑 1 *

我试过第一个答案的解决方案:

gem install recommendify -- --with-hiredis-dir=/usr/local/Cellar/hiredis/0.11.0

还有:

gem install recommendify -- --with-hiredis-dir=/usr/local/Cellar/hiredis/0.11.0/include/hiredis

同样的错误:

Building native extensions.  This could take a while...
ERROR:  Error installing recommendify:
    ERROR: Failed to build gem native extension.

        /Users/villa/.rbenv/versions/1.9.3-p448/bin/ruby extconf.rb --with-hiredis-dir=/usr/local/include/hiredis

make
mkdir -p ../bin
gcc -Wall recommendify.c -lhiredis -o ../bin/recommendify
recommendify.c:4:10: fatal error: 'hiredis/hiredis.h' file not found
#include <hiredis/hiredis.h>
         ^
1 error generated.
make: *** [build] Error 1

编辑 2 *

我已经用 rbenv 重新安装了 xcode、line-command-tools 和 ruby​​,问题就解决了。我不知道这三个元素中的哪一个是问题所在,但现在可以了:D

感谢大家

最佳答案

一些 gems 是纯 ruby​​,而其他的(主要是针对现有 c/c++ 库的平台特定链接,例如绑定(bind))是用 ruby​​ 和 c/c++ 编写的。用 c/c++ 编写的部分称为 native extensions。要编译它们,您需要:

  • 构建工具;
  • ruby 开发环境;
  • 此特定 gem 所需的其他库/ header 。

在您的情况下,您似乎满足了前两个要求,而您的系统无法找到 hiredis 的开发文件。总结:

gem install recommendify -- --with-hiredis-dir=/usr/local/Cellar/hiredis/0.11.0

应该可以解决问题。

希望这对您有所帮助。

关于ruby-on-rails - 无法安装 recommendify gem - hiredis.h 未找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20594338/

相关文章:

ruby-on-rails - “未安装 bundle ”错误

ruby-on-rails - 如何重定向 rails 中不存在的路由

python - Redis 获取和设置装饰器

ruby - 将 Ruby 代码转换为字符串

java - 如何 Autowiring RedisTemplate<String,Long>

node.js - 使用 nodejs & redis & socket.io & php 的实时访问者

ruby-on-rails - Cocoon - 用于查找或创建的参数数量错误(1 代表 0):belongs_to

ruby-on-rails - 急切加载多态关联的第一条记录

ruby-on-rails - 从数据库中删除一条记录

ruby - Ruby 中有 goto 语句吗?