我正在尝试安装 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/