【问题标题】:puma gem - Failed to build gem native extensionpuma gem - 无法构建 gem 原生扩展
【发布时间】:2015-07-20 12:17:06
【问题描述】:

安装 puma gem 时出现以下错误

$ 宝石安装美洲狮 获取:puma-2.11.2.gem (100%) 构建原生扩展。这可能需要一段时间... 错误:安装 puma 时出错: 错误:无法构建 gem 原生扩展。 红宝石 extconf.rb 检查 -lcrypto 中的 BIO_read()... 否 检查 -llibeay32 中的 BIO_read() ... 否 *** extconf.rb 失败 ***

【问题讨论】:

    标签: puma


    【解决方案1】:

    试试下面的

    gem install puma -- --with-cppflags=-I/usr/local/opt/openssl/include
    bundle install
    

    您还可以指定 gem 版本,如下所示:

    gem install puma -v '2.11.3' -- --with-cppflags=-I/usr/local/opt/openssl/include
    

    【讨论】:

    • 我在 El Capitian OSX 10.11.2 上。当我第一次做gem install puma - 它给了我ERROR: Failed to build gem native extension。然后我尝试了你的发送命令(使用 puma 版本“2.9.1”),它似乎没有错误! (耶!)。请你能解释一下这个命令是什么意思吗? (我现在很好奇为什么这个命令可以解决问题)。谢谢你的帮助!!!
    • 在 El Capitan 上为我工作,但不知道为什么。
    • 安装我需要的特殊版本的彪马
    • 在 El Capitan 上,运行 gem install puma -v '2.11.2' -- --with-opt-dir=/usr/local/opt/openssl。这对我来说很好。
    • gem install puma -v '3.6.0' -- --with-opt-dir=/usr/local/opt/openssl 在 seirra 工作
    【解决方案2】:

    我使用的是 OS X 10.12.4,@mahi 添加的评论对我有用:

    gem install puma -v '3.6.0' -- --with-opt-dir=/usr/local/opt/openssl
    

    【讨论】:

    • @Ameen 什么不起作用?您是否遇到与上述相同的错误或不同的错误?另请注意,这是针对 OS X 10.12.4 而不是 Ubuntu。 openssl 库很有可能在 Ubuntu 的其他地方。
    • 为 OSX 10.12.6 (Sierra) 工作,bundle install 现在成功了。
    • 天哪,这正是我所需要的。在 macOS 10.14.3 上工作
    【解决方案3】:

    libssl1.0-dev 安装对我有帮助。试试

    apt-get install libssl1.0-dev
    

    然后

    gem install puma
    

    【讨论】:

    • apt install libssl-dev 以获得更通用的开发版本。
    • 这是适用于 Ubuntu/Linux 开发人员的有效解决方案
    • 适用于 Ubuntu 18.04。谢谢@Victor
    • 是的,这适用于 Ubuntu 18.04,非常感谢
    • 这帮助我在使用 Ubuntu 18.04 的 Windows Linux 子系统上解决了这个错误
    【解决方案4】:

    不是我的回答,而是 this 帮助我在 macos (big sur) 上安装 puma,因为在构建 puma 时出现警告。

    我使用的命令是这样的:

    gem install puma -- --with-cflags="-Wno-error=implicit-function-declaration"
    

    【讨论】:

    【解决方案5】:

    你试过了吗

    DISABLE_SSL=true gem install puma
    

    如果您有特定版本的要求,请指定版本:

    DISABLE_SSL=true gem install puma -v version_number
    

    【讨论】:

    • 如果我们在谈论开发环境,那是最简单的解决方案!
    【解决方案6】:

    我在 OSx El Capitan 上遇到了类似的问题。为了解决我必须做的问题:

    brew install openssl
    brew link --force openssl
    

    【讨论】:

    • 这可能会触发警告并且不起作用Warning: Refusing to link: openssl Linking keg-only openssl means you may end up linking against the insecure, deprecated system OpenSSL while using the headers from Homebrew's openssl. Instead, pass the full include/library paths to your compiler e.g.: -I/usr/local/opt/openssl/include -L/usr/local/opt/openssl/lib
    【解决方案7】:

    可能是打开的 ssl 错误

    gem install puma -v 2.11.2 -- --with-opt-dir=/usr/local/opt/openssl
    

    【讨论】:

      【解决方案8】:

      我在 Mac OS X 10.10 下遇到了类似的错误。

      mkmf.log 中的详细信息表明这是由于:

      同意 Xcode/iOS 许可证需要管理员权限,请 通过 sudo 以 root 身份重新运行。

      这是由于安装了新版本的 Xcode 造成的。 通过接受 Apple 的 Xcode 许可,这很容易解决:

      sudo xcodebuild -license
      

      希望这可能对将来的某人有所帮助;-)

      【讨论】:

        【解决方案9】:

        使用捆绑器和自制软件时:

        $ bundle config build.puma --with-cppflags=-I$(brew --prefix openssl)/include
        $ bundle install
        

        我从Lloeki 复制并改编了这个答案:https://stackoverflow.com/a/31516586/704499

        【讨论】:

        • 这对我来说是救命稻草!在带有 Puma 4.0.1 的 Mac OS 10.14.5 上出现此问题。谢谢!
        【解决方案10】:

        gem 正在寻找 ssl 库。所以我们必须提供包含 ssl 库的库的路径

        例如/usr/share/openssl

        在我的例子中,ssl 库“libcrypto”在 /usr/local/lib 中。所以让我们将 /usr/local 传递给它(不包括 lib 字)。

        用于 gem 安装

        gem install puma -- --with-opt-dir=/usr/local

        用于捆绑安装

        捆绑配置 build.puma --with-opt-dir=/usr/local 捆绑安装

        注意名称 build.puma。其中 puma 是 gem 的名称。

        build config 命令将以下内容添加到 ~/.bundle/config

        --- BUNDLE_BUILD__PUMA:“--with-opt-dir=/usr/local”

        【讨论】:

          【解决方案11】:

          我必须事先这样做:sudo apt-get install libgmp3-dev

          【讨论】:

          • 我尝试了sudo apt-get install libssl-dev,然后安装了gem install puma -v '3.1.0',但没有成功。然后我sudo apt-get install libgmp3-dev 然后安装了它工作的gem。谢谢@matsko
          【解决方案12】:

          运行brew info openssl 并按照那里的说明进行操作。不要尝试--force 将最新的 openssl 链接到 OSX 默认安装的那个。 (0.9.8)

          具体来说,它会要求您将 Openssl 的 Homebrew 版本(截至目前应该是 1.0.2)添加到您的 $PATH 中。
          echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile

          注意:确保从 bash_profile 中删除所有 export PATH 行,因为上面的这一行会将其导出,以便您将 $PATH 变量的其余部分附加到末尾。要查看 bash 配置文件,请使用 vi ~/.bash_profile

          这解决了安装需要编译的 ruby​​ gem 的问题。 (这里是彪马)

          【讨论】:

            【解决方案13】:

            安装这些包。

            apt-get install openssl ruby​​-openssl libssl-dev

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-06-18
              • 2011-05-27
              • 2010-09-07
              • 2013-06-27
              • 2016-03-08
              • 2012-07-26
              • 2014-10-25
              相关资源
              最近更新 更多