当前位置: 首页 > 知识库问答 >
问题:

在osx 10.9上安装捆绑包失败

宗政招
2023-03-14

我和rvm在OSX Marvericks上。从bundler安装像nokogiri这样的本机扩展失败。但从gem命令安装是可行的。

我还安装了最新的XCode命令行工具。

我不知道bundle安装和gem安装有什么区别。

$ rvm requirements
Checking requirements for osx.
Certificates in '/usr/local/etc/openssl/cert.pem' already are up to date.
Requirements installation successful.
Yusuke-no-MacBook-Air-2:doorkeeper-jp-admin yandod$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.3.1
Using bundler 1.6.2
Using mini_portile 0.5.3

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /Users/yandod/.rvm/rubies/ruby-2.0.0-p451-rvm/bin/ruby extconf.rb 
/Users/yandod/.rvm/rubies/ruby-2.0.0-p451-rvm/bin/ruby: invalid option -H  (-h will show valid options) (RuntimeError)

extconf failed, exit code 1

Gem files will remain installed in /Volumes/Macintosh HD 2/develop/doorkeeper-jp-admin/vendor/bundle/gems/nokogiri-1.6.1 for inspection.
Results logged to /Volumes/Macintosh HD 2/develop/doorkeeper-jp-admin/vendor/bundle/extensions/x86_64-darwin-13/2.0.0/nokogiri-1.6.1/gem_make.out
An error occurred while installing nokogiri (1.6.1), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.1'` succeeds before bundling. 

gem安装的结果。

$ gem install nokogiri -v '1.6.1'
Building native extensions.  This could take a while...
Successfully installed nokogiri-1.6.1
1 gem installed

相关软件的版本:

$ bundle --version
Bundler version 1.6.2
$ rvm --version

rvm 1.25.25 (stable) by Wayne E. Seguin , Michal Papis  [https://rvm.io/]
$ gem --version
2.2.2

添加:我的bundler配置

$ cat ~/.bundle/config 
BUNDLE_PATH: ./vendor/bundle
BUNDLE_BUILD__NOKOGIRI: --use-system-libraries --with-iconv-dir=/usr/local/opt/libiconv  --with-xml2-config=/usr/local/opt/libxml2/bin/xml2-config --with-xslt-config=/usr/local/opt/libxslt/bin/xslt-config

共有3个答案

隗瑞
2023-03-14

您应该将这些目录的所有权更改为您的用户。

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/lib/pkgconfig

并确保您的用户具有写入权限。

chmod u+w /usr/local/include /usr/local/lib /usr/local/lib/pkgconfig
长孙绍辉
2023-03-14

尝试:rvm获得稳定

然后:rvm reload

贝洲
2023-03-14

当您执行gem安装时gem将安装到gem的默认系统位置(您可以查看gem env的输出)。

但是,当您执行捆绑安装时您将gem安装到系统的gem存储库以外的位置(因为您已经为捆绑配置了自定义路径捆绑路径=。/vendor/bundle),因此即使gem存在于系统的gem存储库中,Bundler也会安装gem,因为您没有使用它。

现在,出于某种原因,gem命令在定位构建gem本机扩展所需的系统库方面没有问题,但是Bundler已经找到了。因此,您需要做的是指示Bundler这些库的路径。

所以,假设你在使用自制:

>

  • 确保已安装所有本机依赖项:
    brew安装libxml2 libxslt libiconv

    指导Bundler如何构建nokogiri gem:
    bundle配置构建。nokogiri--使用系统库--使用iconv dir=“$(brew--前缀libiconv)”--使用-xml2-config=“$(brew--前缀libxml2)/bin/xml2-config”--使用xslt-config=“$(brew--前缀libxslt)/bin/xslt-config”

    安装bundle,向nokogiri发送使用上述库的信号:NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle安装

    应该是这样。

    编辑:

    尽管上述步骤可能仍然是必要的,但实际问题似乎是项目路径中存在“空格”字符。

    考虑到取消设置bundle path选项可以使事情顺利进行,我更仔细地查看了原始的bundle安装输出,我知道您使用的是一个名称上带有“space”字符的外部驱动器。

    项目路径(包括“空间”或特殊字符)通常是许多工具的问题,因此您应该避免使用它们。请尝试重命名卷或将项目移动到其他位置。

    对不起,我以前没有意识到。

  •  类似资料:
    • 我在NetBeans平台(RCP)上开发了一个JavaSwing应用程序。我想将Windows JRE与NetBeans生成的安装程序一起包含,以防PC没有安装JRE,但我不知道如何做到这一点。我尝试按照以下说明操作,但失败了(我发现这些说明假设您完全了解JDK和JRE上的所有内容,例如,我会得到消息“pack 200”不被识别为内部或外部命令......似乎有些路径是错误的或过时的): 如何在安

    • Gem安装bundler给我这个错误。 错误:找不到有效的宝石bundler( 解决办法是什么?

    • 我正在尝试用symfony 4.2安装HWI oauth捆绑包,但它不起作用。我遵循所描述的步骤:https://github.com/hwi/HWIOAuthBundle/blob/master/Resources/doc/1-setting_up_the_bundle.md 但它不起作用。 下面的作曲家输出: 附言:在我composer.json的最后,我补充道: 编写器需要hwi/oauth

    • 检测到JavaFX Ant API版本1.3结果:1 init:deps clean:正在更新属性文件:D:\softphone\build\build clean。属性删除目录D:\softphone\build clean:deps jar: 创建dir: D:\softphone\build 正在更新属性文件:D:\softphone\build\build jar。性质 已创建目录:D:\

    • 当我跑的时候